Frage

Ich habe eine Anforderung, bei der ich eine Android-Anwendung für das Nexus S entwickeln muss, um alle verfügbaren Netzwerkbetreiber in meiner Umgebung zu erreichen.

Ich habe viele Blogs erstellt, um dies zu erreichen.

Erstens handelt es sich um eine interne/versteckte API

Deshalb habe ich diese Methode befolgt, um es aufzurufen.

TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
telephonyManagerClass = Class.forName(telephonyManager.getClass().getName());
Method getITelephonyMethod = telephonyManagerClass.getDeclaredMethod("getITelephony");
getITelephonyMethod.setAccessible(true);
ITelephonyStub = getITelephonyMethod.invoke(telephonyManager);
ITelephonyClass = Class.forName(ITelephonyStub.getClass().getName());

setPrefNetmethod = ITelephonyClass.getDeclaredMethod(
                    "getAvailableNetworks", new Class[] { Message.class });

Message response = Message.obtain();
setPrefNetmethod.setAccessible(false);

setPrefNetmethod.invoke(ITelephonyStub, new Object[] { network_mode, response });

Aber ich bekomme immer setPrefNetmethod = null ...

Ich habe es sogar eingestellt <uses-permission android:name="android.permission.READ_PHONE_STATE" /> im Android-Manifest...

Jede Hilfe wäre großartig für mich.

War es hilfreich?

Lösung

Um zu sehen, welche Methoden für das ITelephony-Objekt verfügbar sind, versuchen Sie Folgendes, anstatt getDeclaredMethod() zu verwenden:

Method[] methods = ITelephonyClass.getDeclaredMethods();
for (Method method : methods) {
    Log.i("Method", "Method name is: "+method.getName());
}

Dies sollte eine Liste der verfügbaren Methoden protokollieren.Vielleicht gibt es eines, das Ihnen helfen könnte.Sobald Sie die gewünschte Methode gefunden haben, können Sie auch method.getParameterTypes() aufrufen, was ein Array von Klassennamen zurückgibt.Hier erfahren Sie, welche Parameter die Methode erwartet.

Allerdings ist es für Sie möglicherweise nicht möglich, das zu tun, was Sie möchten, da es jedem Hersteller freisteht, diese Dinge nach eigenem Ermessen zu ändern.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top