Wenn Sie den folgenden Code ausführen:Android getSimOperator() stürzt auf die Erlaubnis fehlt
try {
TelephonyManager telephonyManager = (TelephonyManager) MainApplication.getAppContext()
.getSystemService(Context.TELEPHONY_SERVICE);
String simMCCMNC = telephonyManager.getSimOperator();
} catch (Exception e) {
Crashlytics.logException(e);
}
Die App stürzt mit dem folgenden Protokoll:
Nicht-tödliche Ausnahme: java.lang.SecurityException: Erfordert READ_PHONE_STATE: Weder Benutzer 10076 noch aktueller Prozess hat android.permission.READ_PHONE_STATE. bei android.os.Parcel.readException (Parcel.java:1546) bei android.os.Parcel.readException (Parcel.java:1499) bei com.android.internal.telephony.ISub $ Stub $ Proxy.getActiveSubscriptionInfoForSimSlotIndex (ISub.java:459) bei android.telephony.SubscriptionManager.getDefaultSmsSubId (SubscriptionManager.java:910) bei android.telephony.TelephonyManager.getSimOperatorNumeric (TelephonyManager.java:1622) bei android.telephony.TelephonyManager.getSimOperator (TelephonyManager. Java: 1592) bei com.myapp.app.ApplicationInitializer.generateBaseUrl (Source: 297) bei com.myapp.app.ApplicationInitializer.initFailProofComponents (Source: 193) bei com.myapp.app.ApplicationInitializer.prepareManager (Source: 121) bei com.myapp.managers.base.BaseManager.prepareManagerIfPossible (Source: 43) bei com.my.app.ApplicationInitializer.init (Source: 137) bei com.my.app.MainApplication.onCreate (Source: 23) bei android.app.Instrumentation.callApplicationOnCreate (Instrumentation.java:1012) bei android.app.ActivityThread.handleBindApplication (ActivityThread.java:4628) bei android.app.ActivityThread.access $ 1500 (ActivityThread.java:151) bei android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1374) bei android.os.Handler.dispatchMessage (Handler.java:102) bei android.os.Looper.loop (Looper.java:135) bei android.app.ActivityThread.main (ActivityThread.java:5345) bei java.lang.reflect.Method.invoke (Method.java) bei java.lang.reflect.Method.invoke (Method.java:372) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:947) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:742)
auf den Quellcode der Suche nach Android getSimOperator(). Ich verstehe nicht, wie der Code auf eine Berechtigung abstürzen kann, die für diese Methode nicht erforderlich ist?
Ich konnte reproduzieren, wenn getDeviceId() aufrufen, weil es READ_PHONE_STATE erfordert.
Ich habe nur gesehen, dass dies auf Android-Version 5.1 passiert.
kann es sein, dass alle Clients, die Ausnahme zu werfen sind verwurzelt? –