Я пытаюсь реализовать свой собственный интерфейс обработки телефонных звонков.
Что я хочу сделать, так это то, что при поступлении вызова отображается номер входящего телефона и изображение, и, если я нажимаю кнопку, входящий вызов будет принят / получен ответ.
Соответствующий код:
@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: не найдено действие для обработки намерения {
акт = android.intent.action.ANSWER
Затем я добавил запись в AndroidManifest.xml:
<uses-permission android:name="android.permission.CALL_PHONE" />
Я снова запускаю приложение, больше нет исключений. Однако я сомневаюсь, что входящий звонок на самом деле не принят. Потому что, если нажать кнопку ответа на экране Android (зеленую кнопку), входящий вызов будет принят, а в левом верхнем углу экрана эмулятора отобразится зеленый значок вызова, а мое приложение - нет.
Я также прочитал исходный код приложения «Телефон» в исходном коде Android. В классе Phone есть такой метод 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
.
Как правильно и просто решить мою проблему?