Nexus SのAndroidアプリケーションを開発して、私を取り囲むすべての利用可能なネットワーク事業者を獲得する必要があるという要件があります。android/internal/telephony/Phone.javaのgetAvailableNetworksの使い方
私はこれを達成するために多くのブログをフォローしています。
まずそれはだから私はそれを呼び出すために、この方法に従っている内部/隠されたAPI
です。
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 });
は、しかし、私は
すべてのヘルプは私のために素晴らしいことだ...
は私もAndroidのマニフェストに<uses-permission android:name="android.permission.READ_PHONE_STATE" />
を設定している... setPrefNetmethod = nullを常に取得します。これは、利用可能なメソッドの一覧をログに記録する必要があり
Method[] methods = ITelephonyClass.getDeclaredMethods();
for (Method method : methods) {
Log.i("Method", "Method name is: "+method.getName());
}
:
これはSDKの一部ではないため、このように動作するはずです。過去、現在、そして未来のすべてのバージョンのAndroidで動作するとは思うものは何ですか? – CommonsWare
Nexusでのみ動作したいと思っています... – EnthuDeveloper