Я пытаюсь получить телефонный объект так, чтобы я мог звонить и конференция два числа из моего приложения.
Я попытался использовать помехи PhoneFactory.makeDefaultPhones((Context)this)
но не имели никакой удачи.
String phoneFactoryName = "com.android.internal.telephony.PhoneFactory";
String phoneName = "com.android.internal.telephony.Phone";
Class phoneFactoryClass = Class.forName(phoneFactoryName);
Class phoneClass = Class.forName(phoneName);
Method getDefaultPhone = phoneFactoryClass.getMethod("getDefaultPhone");
Object phoneObject = getDefaultPhone.invoke(null);
Ошибка - Вызванный java.lang. RuntimeException: PhoneFactory.getDefaultPhone нужно назвать от потока Выполняющего мертвую петлю летчика
Я пытаюсь получить телефонный объект так что я могу позвонить и конференцию два номера из моего приложения.
Это невозможно из SDK.
Я попробовал использовать статический PhoneFactory.makeDefaultPhones ((Контекст) это) но не повезло.
Этого нет в SDK. Не выходите за пределы SDK .
Ошибка - вызванная java.lang. RuntimeException: Должен иметь значение StartFactory.getDefurePhone вызывается из потока Looper
Это происходит потому, что вы пытаетесь сделать то, что вы не должны делать из фонового потока.
Я вызвал его из Activity.onCreate, и он разбился на несколько строк после вашей проблемы со следующей ошибкой:
Телефоны по умолчанию еще не сделаны!
public static Phone getDefaultPhone() {
if (sLooper != Looper.myLooper()) {
throw new RuntimeException(
"PhoneFactory.getDefaultPhone must be called from Looper thread");
}
if (!sMadeDefaults) {
throw new IllegalStateException("Default phones haven't been made yet!");
}
return sProxyPhone;
}
По крайней мере, мы можем отвечать или игнорировать звонки =) позвольте мне скопировать и вставить мой пост
OMG !!! ДА, МЫ ЭТО МОЖЕМ !!!
Я собирался убить себя после суровых 24 часов исследований и открытий ... Но я нашел "свежее" решение!
// "cheat" with Java reflection to gain access
// to TelephonyManager's ITelephony getter
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony)m.invoke(tm);
Люди, которые хотят разработать свое программное обеспечение для управления вызовами, посещают эту отправную точку: http://www.google.com/codesearch/p?hl=en#zvQ8rp58BUs/trunk/phone/src/i4nc4mp/myLock/phone/CallPrompt.java&q=itelephony%20package:http://mylockforandroid%5C .googlecode% 5C.com & d = 0
Есть проект. и есть важные комментарии (и кредиты).
Вкратце: скопируйте файл AIDL, добавьте разрешения к манифесту, скопируйте и вставьте источник для управления телефонией.
Еще немного информации для вас. AT-команды вы можете отправлять, только если у вас есть root-права. Затем вы можете остановить системный процесс и отправить команды, но вам потребуется перезагрузка, чтобы ваш телефон мог принимать и отправлять звонки.
Я очень счастлив! =) Теперь мой Shake2MuteCall получит обновление!