Я пытаюсь реализовать свой собственный телефонный вызов, обрабатывающий 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
.
Каков правильный и простой путь к моей проблеме?
Add the category "android.intent.category.DEFAULT
" (Intent.CATEGORY_DEFAULT
)