كيفية استخدام جيتافيلابلينيتوركس من الروبوت / الداخلية / المهاتفة / الهاتف.جافا
-
09-12-2019 - |
سؤال
لدي شرط حيث أحتاج إلى تطوير تطبيق الروبوت لنيكزس الصورة للحصول على جميع مشغلي الشبكات المتاحة المحيطة بي.
لقد تم متابعة مع الكثير من بلوق للحصول على هذا القيام به.
أولا هو أبي الداخلية / المخفية
لذلك اتبعت هذه الطريقة لتسميتها.
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 });
ولكن أحصل على سيتبريفنيتمثود = نول دائما...
لقد وضعت حتى <uses-permission android:name="android.permission.READ_PHONE_STATE" />
في البيان الروبوت...
أي مساعدة ستكون رائعة بالنسبة لي.
المحلول
فقط لمعرفة ما هي الأساليب المتاحة على كائن إيتليفوني ، بدلا من استخدام جيتديكلاردميثود () حاول هذا:
Method[] methods = ITelephonyClass.getDeclaredMethods();
for (Method method : methods) {
Log.i("Method", "Method name is: "+method.getName());
}
يجب أن يسجل هذا قائمة بالطرق المتاحة.ربما هناك واحد التي تبدو وكأنها سوف تساعدك.بمجرد العثور على الطريقة التي تريدها ، يمكنك أيضا الاتصال بالطريقة.جيتباراميتيرتيبس () الذي سيعود مجموعة من أسماء الفئات.سيخبرك هذا بالمعلمات التي تتوقعها الطريقة.
ومع ذلك ، قد لا يكون من الممكن بالنسبة لك أن تفعل ما تريد ، حيث أن كل مصنع حر في تغيير هذه الأشياء على النحو الذي تراه مناسبا.