Может телефония. Телефонный объект быть инстанцированным через sdk?

Я пытаюсь получить телефонный объект так, чтобы я мог звонить и конференция два числа из моего приложения.

Я попытался использовать помехи 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 нужно назвать от потока Выполняющего мертвую петлю летчика

15
задан The Vee 17 October 2016 в 13:38
поделиться

3 ответа

Я пытаюсь получить телефонный объект так что я могу позвонить и конференцию два номера из моего приложения.

Это невозможно из SDK.

Я попробовал использовать статический PhoneFactory.makeDefaultPhones ((Контекст) это) но не повезло.

Этого нет в SDK. Не выходите за пределы SDK .

Ошибка - вызванная java.lang. RuntimeException: Должен иметь значение StartFactory.getDefurePhone вызывается из потока Looper

Это происходит потому, что вы пытаетесь сделать то, что вы не должны делать из фонового потока.

0
ответ дан 1 December 2019 в 04:27
поделиться

Я вызвал его из Activity.onCreate, и он разбился на несколько строк после вашей проблемы со следующей ошибкой:

Телефоны по умолчанию еще не сделаны!

Смотрите источники Android:

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;
}
0
ответ дан 1 December 2019 в 04:27
поделиться

По крайней мере, мы можем отвечать или игнорировать звонки =) позвольте мне скопировать и вставить мой пост

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 получит обновление!

3
ответ дан 1 December 2019 в 04:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: