Как принять входящий вызов путем нажатия кнопки?

Я пытаюсь реализовать свой собственный телефонный вызов, обрабатывающий UI.

То, что я хочу сделать, если вызов входит, входящий телефонный номер и изображение отображены, и, если я нажму кнопку, то входящий вызов будет принят/отвечен.

Связанный код:

 @Override
  public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    answerButton = (Button) findViewById(R.id.pickup);
    answerButton.setOnClickListener(new OnClickListener() {
        public void onClick(final View v) {
            Intent intent = new Intent("android.intent.action.ANSWER");
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);          
        }
    });

К сожалению, код не работает. Сначала, исключение выдается, если я нажимаю свою кнопку ответа:

ActivityNotFoundException: Никакое Действие, которое, как находят, обработало Намерение {
act=android.intent.action. ОТВЕТ

Затем я добавил запись в AndroidManifest.xml:

<uses-permission android:name="android.permission.CALL_PHONE" />

Я запускаю приложение снова, больше нет никакого исключения. Однако я сомневаюсь, что входящий вызов действительно не принимается. Поскольку, если нажатие экранная кнопка ответа Android (зеленая кнопка), входящий вызов принимается и зеленый в значке вызова также отображен на левом верхнем углу экрана эмулятора, в то время как мое приложение не делает.

Я также считал исходный код Телефонного приложения в источнике андроида. Существует метод, такой как acceptCall () в Телефонном классе. Но эти коды кажутся трудными для меня использовать, потому что существует много объявлений импорта в коде, таком как:

import com.android.internal.telephony.Call;
import com.android.internal.telephony.CallStateException;
import com.android.internal.telephony.CallerInfo;
import com.android.internal.telephony.CallerInfoAsyncQuery;
import com.android.internal.telephony.Connection;
import com.android.internal.telephony.MmiCode;
import com.android.internal.telephony.Phone;

И, если я добавлю этот импорт в своем коде, то будет слишком много ошибок, таких как:
The import com.android.internal.telephony cannot be resolved.

Каков правильный и простой путь к моей проблеме?

9
задан Vadim Kotov 24 August 2017 в 13:03
поделиться