#android #api #internal
#Android #API #внутренний
Вопрос:
Я пытаюсь использовать внутренние API для получения некоторой низкоуровневой сетевой информации (Ec / Io, RSSI и RSCP для GSM-телефона), я смог импортировать эти API, и, в частности, я хотел бы использовать com.android.internal.telephony.Телефон и com.android.internal.telephony.PhoneFactory. Но когда я пытаюсь использовать PhoneFactory таким образом:
Телефон mPhone;
Телефон localPhone = PhoneFactory.getDefaultPhone();
это.mPhone = localPhone;
Я получаю следующее исключение:
java.lang.RuntimeException: PhoneFactory.getDefaultPhone Must Be Called from Looper thread
как описано в исходном коде Android PhoneFactory.java:
public static getDefaultPhone Phone () {
if (sLooper! Looper.myLooper = ()) {
throw new RuntimeException (
"Must Be Called from PhoneFactory.getDefaultPhone Looper thread");
}
if (! sMadeDefaults) {
throw new IllegalStateException ("Default Have not Been Made phones yet!");
}
sProxyPhone return;
}
Кто-то уже пытался успешно использовать класс Phone?
Ответ №1:
sdk не поддерживает это или даже не рекомендует это официально, однако вы можете сделать это путем размышления.
Риск заключается в том, что любое изменение в фреймворке нарушит ваш код.
Комментарии:
1. Привет, метод отражения мне очень интересен, как вы думаете, может ли это быть обнаружено Google и предотвратить появление вашего приложения или, что еще хуже, запретить?
2. вы продвинулись в этом дальше? Я бы очень хотел использовать этот класс для изменения своего номера телефона (сеть не обновила SIM-карту, когда я перенес свой телефон от другого провайдера). Я на KitKat, и SDK не показывает эти классы как существующие.
3. @Erden нет, я вставил SIM-карту в iPhone и сделал это.