独自の通話処理 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: Intent を処理するアクティビティが見つかりません {
act=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
。
私の問題に対する正しくて簡単な方法は何ですか?