1

用例:

  1. 用户需要转到默认联系人应用程序
  2. 用户选择用户
  3. 用户点击电话号码
  4. 用户得到一个对话框,可以选择我的应用程序

问题

我的问题是关于第 4 步。我需要什么来实现该功能(可能是意图过滤器)?

编辑1:更新清单

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="********"
          android:versionCode="26"
          android:versionName="1.0.11">

    <uses-sdk
            android:minSdkVersion="10"
            android:targetSdkVersion="17"/>

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.RECORD_AUDIO"/>
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
    <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WAKE_LOCK"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.READ_LOGS"/>
    <uses-permission android:name="android.permission.USE_SIP"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.android.vending.BILLING" />
    <uses-permission android:name="android.permission.READ_CONTACTS"/>

    <!-- temporary for contact call -->

    <uses-feature
            android:name="android.hardware.microphone"
            android:required="true"/>

    <application
            android:name=".AppContext"
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme">

        <activity
                android:name=".ui.MainActivity"
                android:label="@string/app_name"
                android:theme="@style/Theme.Base.AppCompat.Light.DarkActionBar"
                android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>

        <activity
                android:name=".ui.WebviewActivity"
                android:label="@string/app_name"
                android:screenOrientation="portrait">
        </activity>
        <activity android:name=".ui.InCallActivity"
                  android:screenOrientation="portrait">
            <intent-filter>
                <action android:name="android.intent.action.DIAL" />
                <category android:name="android.intent.category.DEFAULT" />
                <data android:scheme="tel" />
            </intent-filter>
        </activity>
    </application>

</manifest>
4

2 回答 2

0

是的。您需要将带有动作 ACTION_DIAL/ACTION_CALL 的意图过滤器添加到您的一项活动中。

本机电话应用拨号器活动的意图过滤器:

   <intent-filter>
        <action android:name="android.intent.action.DIAL" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:mimeType="vnd.android.cursor.item/phone" />
        <data android:mimeType="vnd.android.cursor.item/person" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.DIAL" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="voicemail" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.DIAL" />

        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.DEFAULT" />
        <!-- <category android:name="android.intent.category.LAUNCHER" /> -->
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
    <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>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:mimeType="vnd.android.cursor.dir/calls" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.CALL_BUTTON" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
    </intent-filter>
    <!--
         This was never intended to be public, but is here for backward
         compatibility.  Use Intent.ACTION_DIAL instead.
    -->
    <intent-filter>
        <action android:name="com.android.phone.action.TOUCH_DIALER" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.TAB" />
    </intent-filter>
于 2013-10-02T15:21:02.727 回答
0

它现在可以使用以下代码:

<activity android:name=".ui.InCallActivity"
  android:screenOrientation="portrait">
  <intent-filter>
    <action android:name="android.intent.action.CALL" />
    <category android:name="android.intent.category.DEFAULT" />
    <action android:name="android.intent.action.CALL_PRIVILEGED" />
    <data android:scheme="tel" />
  </intent-filter>
</activity>

在 android 指南中,他们说不要使用 call_privileged,但目前他们不是另一个好的选择。

于 2013-10-17T12:20:19.697 回答