Android 11 中的 GetNetworkType

tom*_*fic 15 telephonymanager android-11

根据此处发布的更改,Android R 及以后不推荐使用 getNetworkType 方法。

在 R 编译的应用程序中尝试使用此方法时,会导致抛出以下异常:

java.lang.SecurityException: getDataNetworkTypeForSubscriber: uid 10225 does not have android.permission.READ_PHONE_STATE.
  at android.os.Parcel.createExceptionOrNull(Parcel.java:2285)
  at android.os.Parcel.createException(Parcel.java:2269)
  at android.os.Parcel.readException(Parcel.java:2252)
  at android.os.Parcel.readException(Parcel.java:2194)
  at com.android.internal.telephony.ITelephony$Stub$Proxy.getNetworkTypeForSubscriber(ITelephony.java:7565)
  at android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:2964)
  at android.telephony.TelephonyManager.getNetworkType(TelephonyManager.java:2928)
  at com.ironsource.environment.ConnectivityService.getCellularNetworkType(ConnectivityService.java:197)
  at com.ironsource.sdk.service.DeviceData.updateWithConnectionInfo(DeviceData.java:98)
  at com.ironsource.sdk.service.DeviceData.fetchMutableData(DeviceData.java:54)
  at com.ironsource.sdk.service.TokenService.collectDataFromDevice(TokenService.java:120)
  at com.ironsource.sdk.service.TokenService.getRawToken(TokenService.java:177)
  at com.ironsource.sdk.service.TokenService.getToken(TokenService.java:166)
  at com.ironsource.sdk.IronSourceNetwork.getToken(IronSourceNetwork.java:183)
Run Code Online (Sandbox Code Playgroud)

这很好,根据文档是预期的。如果我将应用程序编译为 Android R 之前的任何版本,则不会显示异常。

此异常表示我需要请求android.permission.READ_PHONE_STATE权限。

我想知道是否有办法使用不需要此权限的任何其他 API 获取网络类型(因为此权限的级别很危险,我宁愿不要求用户提供)。

小智 0

所以我的朋友,我和你有同样的麻烦,但到目前为止,我进行了临时修复,我使用compileSdkVersion 29而不是30以及targetSdkVersion 29和我的buildToolsVersion 28.0.3,我的应用程序加载正常。

由于我的这个问题是由于第三方库造成的,所以在修复错误之前我无法单独修复它,但我认为现在使用这个临时解决方案非常好。

  • 将应用程序编译到 API 29 并不能解决这个问题...... (8认同)