web-dev-qa-db-ja.com

Androidダイヤラーアプリケーション

デフォルトのダイヤラーアプリケーションをカスタムダイヤラーアプリケーションから置き換える方法を考えていますが、これを達成する方法がわかりません。

ここに私が欲しいものがあります

  • カスタムダイヤラーUIを作成する
  • 私のアプリケーションは、ボタンハードウェアを呼び出すか、Androidのいずれかが押されるたびに呼び出されます
  • アプリケーションは、連絡先画面から呼び出すこともできます

public static final String ACTION_DIAL を参照しています。

31
ingsaurabh
  1. シンプルな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);
        }
    }
    
  2. AndroidManifestで呼び出す許可をアプリケーションに付与します

    <uses-permission Android:name="Android.permission.CALL_PHONE" />
    
  3. ダイヤラーが必要なときにアプリを使用するように携帯電話に指示する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>
47
zirael

これは私のために働いた:

        <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>
7
Asaf Pinhassi

この答え by arekolek を参照してください。

これは、サードパーティアプリによってInCallServiceを拡張する正しい方法です。ユーザーが起動時にプロンプ​​トを受け入れた後、システムのデフォルトのダイヤラーとInCallScreenを置き換えます。

また、Kotlinで 動作サンプルアプリ も提供しています(ボーナスポイント)。

そこで彼の答えに賛成してください。私は彼の仕事に感謝しません。

注:API 23以降でのみ機能し、 API 26の追加の許可 が必要になる場合があります

2
leRobot

ACTION_DIALインテントは、標準ダイヤラに電話する番号を渡すことができるように見えます。そうすることで、必要に応じて、ユーザーが電話をかけられるようになります。

特定の質問がありますか、それともソフトウェア/ハードウェアコールボタンが押されたときに呼び出されるアプリを実装する方法を教えてくれる人を探していますか?

ACTION_CALL_BUTTONが必要なようです- http://developer.Android.com/reference/Android/content/Intent.html#ACTION_CALL_BUTTON

2
David Precious