@e-hot

Как правильно подключить пакет com.android.internel.telephone и импортировать ITelephony в Android Studio?

Приветствую.
Нужна помощь в следующей ситуации:

Ситуация:
в Andriod Studio пишу код в BroadcastReceiver для программного сброса входящего звонка, просмотрел кучу вариантов кода в инете, во всех примерах присутствует использование com.android.internel.telephone.ITelephony, доступ к которому возможен только через interface Telephony - так же перерыл кучу инфы по теме установки самого пакета com.android.internel.telephone и импорту ITelephony - ничего не получается. При создании пакета com.android.internel.telephone в папке java создаваемый пакет "рубится" на com и вложенный в него android.internel.telephone - так должно быть? При создании interface-а ITelephony - тоже что-то непонятное, есть примеры, где ITelephony добавляется как Class java, в других - как ITelephony.aidl - как правильно?

Вопрос:
может кто-нибудь расписать по пунктам где что и как делать, чтобы в итоге получился правильный рабочий результат?
Спасибо.

P.S.
1. Попробовал еще раз добавить пакет com.android.internel.telephone и импорт ITelephony. При создании пакета, не смотря на то, что добавлял его в папку java, все равно получилась структура: app->java->com->android.internel.telephone. Далее, при добавлении в android.internel.telephone interface ITelephony.aidl опять изменилась структура: app->java->com->android.internel.telephone - так и осталась прежней, файл interface ITelephony.aidl не добавился, зато появилась новая структура:
app->aidl->com.android.internel.telephone->ITelephony.aidl - Android Studio ( 3.4 ) все правильно делает?

2. В ITelephony.aidl добавил код:
package com.android.internal.telephony;

interface ITelephony {
    boolean endCall();
    void answerRingingCall();
    void silenceRinger();
}


3. В BroadcastReceiver добавил:
...
import com.android.internal.telephony.ITelephony;
...
public class CallingReceiver extends BroadcastReceiver {
...
}


4. Уже в итоговом методе :
public void disconnectPhoneItelephony( Context context ){
ITelephony telephonyService;
        TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        try {
            Class c = Class.forName(tm.getClass().getName());
            Method m = c.getDeclaredMethod("getITelephony");
            m.setAccessible(true);
            telephonyService = (ITelephony) m.invoke(tm);
            telephonyService.endCall();
        } catch (Exception e) {
            e.printStackTrace();
        }
}


и здесь в telephonyService.endCall(); В итоге ругается: Cannot resolve method 'endCall()'

Вопрос: как поправить Cannot resolve method 'endCall()'? Что я не так делал? Спасибо.
  • Вопрос задан
  • 319 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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