Ich bin neu in Android. Mein Telefon hat zwei SIM-Steckplätze und ich möchte die Informationen der zweiten SIM-Karte wissen. Daher möchte ich die folgende Methode im TelephonyManager verwenden, die ausgeblendet ist.Wie verwende ich eine versteckte Methode in Android?
Jemand mir sagen, wie reflektieren zu verwenden, und hier ist mein Versuch.
Class<TelephonyManager> telephonyManagerClass = TelephonyManager.class;
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
try {
Method method = telephonyManagerClass.getMethod("getSimState", new Class[]{int.class});
method.setAccessible(true);
Object object = method.invoke(telephonyManager,1);
int a = (int)object;
System.out.println(a);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}catch (Exception e){
e.printStackTrace();
}
Leider ist hier Ausnahme:
java.lang.NoSuchMethodException: getSimState [int]
at java.lang.Class.getConstructorOrMethod(Class.java:472)
at java.lang.Class.getMethod(Class.java:857)
at (MainActivity.java:61)
at android.view.View.performClick(View.java:4438)
at android.view.View$PerformClick.run(View.java:18442)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5195)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:603)
at dalvik.system.NativeStart.main(Native Method)
Können Sie mir helfen, es zu beheben?
Unter welcher Android-Version laufen Sie? –
Hallo, @MikeM. 23. – Zack
Führen Sie diesen Code direkt auf Ihrem Telefon aus oder testen Sie ihn in einem Emulator? –