こちらに投稿された変更に従って、getNetworkType メソッドは Android R 以降で非推奨になりました。
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)
これは問題なく、ドキュメントによると予想されます。アプリケーションを Android R より前のバージョンにコンパイルすると、例外は表示されません。
この例外は、 android.permission.READ_PHONE_STATEパーミッションを要求する必要があることを示しています。
この許可を必要としない他の API を使用してネットワーク タイプを取得する方法があるかどうかを知りたいと思いました (この許可のレベルは危険であり、ユーザーに要求したくないため)。