Как я могу завершить звонки программно в Android? - PullRequest
0 голосов
/ 10 марта 2019

Я пишу приложение, которое я хочу, чтобы иметь возможность завершать звонки. Есть несколько других сообщений на эти темы, но они устарели:

Завершить вызов в Android программно

как решить эту ошибку "com.android.internal.telephony не может быть разрешен для типа" в Android

http://androidsourcecode.blogspot.com/

Общая идея заключается в создании пакета с именем com.android.internal.telephony с файлом ITelephony.AIDL внутри:

ITelephony.AIDL:

package com.android.internal.telephony;

interface ITelephony {

boolean endCall();

void answerRingingCall();

void silenceRinger();

}

затем, включив этот фрагмент кода в мою программу, я могу ссылаться на ITelephony и завершать вызовы:

    try {
        TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        Class<?> c = Class.forName(telephony.getClass().getName());

        Method m = c.getDeclaredMethod("getITelephony");
        m.setAccessible(true);

        com.android.internal.telephony telephonyService = (com.android.internal.telephony) m.invoke(telephony);

        telephonyService.endCall();

        Log.i("Info","Call was ended by ITelephony");
    } catch (Exception e) {
        Log.i("Error","Call was not ended by ITelephony" + e.getMessage());
    }

Однако моя программа не может найти пакет телефонии (CallReceiver.java справа):

Main program can't find telephony

ВЫВОД:

Я хочу знать, делаю ли я какую-то базовую ошибку с упаковкой, есть ли новый способ сделать это, или это просто невозможно больше.

...