Android拨号程序

时间:2011-02-17 12:56:21

标签: android phone-call

我正在找出一种从我的自定义拨号程序应用程序中替换默认拨号程序应用程序的方法,但我没有得到如何实现这一点。

这就是我想要的

  • 创建自定义拨号器UI
  • 只要按下呼叫按钮硬件或Android中的按钮,就会调用我的应用程序
  • 也可以从联系人屏幕调用该应用程序

我指的是public static final String ACTION_DIAL

4 个答案:

答案 0 :(得分:47)

  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意图,当您需要拨号时,您的手机会使用您的应用

  4. 当有人按下通话按钮时:

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

答案 1 :(得分:7)

这对我有用:

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

答案 2 :(得分:2)

ACTION_DIAL意图似乎允许您传递一个号码来呼叫标准拨号器,准备让用户拨打它,如果他们愿意这样做,那么就不是你需要的了。

您是否有特定问题,或者您是否正在寻找某人告诉您如何在按下软件/硬件呼叫按钮时实施您的应用程序?

看起来你需要ACTION_CALL_BUTTON - http://developer.android.com/reference/android/content/Intent.html#ACTION_CALL_BUTTON

答案 3 :(得分:2)

this answer参考arekolek

这是第三方应用程序扩展InCallService的正确方法,它将在用户在启动时接受提示后替换系统默认拨号程序和InCallScreen。

他还在Kotlin中提供working sample app(奖励积分)。

请在那里回答他的答案,我的工作不值得赞扬。

注意:仅适用于API 23+,可能需要extra permissions in API 26