デフォルトのダイヤラーアプリケーションをカスタムダイヤラーアプリケーションから置き換える方法を考えていますが、これを達成する方法がわかりません。
ここに私が欲しいものがあります
public static final String ACTION_DIAL を参照しています。
シンプルなAndroidアプリケーション(ダイヤラー)を作成します。実際に誰かに電話をかけるには、そのメソッドが必要です。
private void performDial(String numberString) {
if (!numberString.equals("")) {
Uri number = Uri.parse("tel:" + numberString);
Intent dial = new Intent(Intent.ACTION_CALL, number);
startActivity(dial);
}
}
AndroidManifestで呼び出す許可をアプリケーションに付与します
<uses-permission Android:name="Android.permission.CALL_PHONE" />
ダイヤラーが必要なときにアプリを使用するように携帯電話に指示するAndroidManifestの意図を設定します
誰かが通話ボタンを押すと:
<intent-filter>
<action Android:name="Android.intent.action.CALL_BUTTON" />
<category Android:name="Android.intent.category.DEFAULT" />
</intent-filter>
誰かがURIを起動するとき:
<intent-filter>
<action Android:name="Android.intent.action.VIEW" />
<action Android:name="Android.intent.action.DIAL" />
<category Android:name="Android.intent.category.DEFAULT" />
<category Android:name="Android.intent.category.BROWSABLE" />
<data Android:scheme="tel" />
</intent-filter>
これは私のために働いた:
<activity
Android:name=".activities.MainActivity"
Android:label="@string/app_name" >
<intent-filter>
<action Android:name="Android.intent.action.MAIN" />
<category Android:name="Android.intent.category.LAUNCHER" />
</intent-filter>
<!-- open activity when establishing a call -->
<intent-filter>
<action Android:name="Android.intent.action.CALL_PRIVILEGED" />
<category Android:name="Android.intent.category.DEFAULT" />
<data Android:scheme="tel" />
</intent-filter>
</activity>
これは、サードパーティアプリによってInCallServiceを拡張する正しい方法です。ユーザーが起動時にプロンプトを受け入れた後、システムのデフォルトのダイヤラーとInCallScreenを置き換えます。
また、Kotlinで 動作サンプルアプリ も提供しています(ボーナスポイント)。
そこで彼の答えに賛成してください。私は彼の仕事に感謝しません。
注:API 23以降でのみ機能し、 API 26の追加の許可 が必要になる場合があります
ACTION_DIALインテントは、標準ダイヤラに電話する番号を渡すことができるように見えます。そうすることで、必要に応じて、ユーザーが電話をかけられるようになります。
特定の質問がありますか、それともソフトウェア/ハードウェアコールボタンが押されたときに呼び出されるアプリを実装する方法を教えてくれる人を探していますか?
ACTION_CALL_BUTTONが必要なようです- http://developer.Android.com/reference/Android/content/Intent.html#ACTION_CALL_BUTTON