1

我正在尝试处理我的应用程序中的呼叫。我希望它能够在拨打电话(而不是拨号)时启动活动。然而,当我在“人员”活动中按下“呼叫”或电话号码按钮时,从未建议我的应用程序,即使我清除了所有类似应用程序的默认值或取消安装它们。编码:

<!-- ... -->

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

<!-- ... -->

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >
    <activity
        android:name="com.example.contact.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <intent-filter>
            <action android:name="android.intent.action.CALL" />
            <action android:name="android.intent.action.CALL_BUTTON" />
            <action android:name="android.intent.action.CALL_PRIVILEGED" />
            <action android:name="android.intent.action.DIAL" />
        </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>
    </activity>
</application>

<!-- ... -->

我想我正在尝试捕捉与呼叫或至少拨号相关的所有可能意图?那么有什么问题呢?

更新:录音电话(例如在电子邮件应用程序中)有效,但我仍然无法处理来自“人”的电话。

4

2 回答 2

0

你试过了吗?

<activity
    android:name="com.test.Call"
    android:label="@string/makeCall" >
    <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>
于 2013-08-27T13:31:39.500 回答
0

它始终取决于调用应用程序正在执行的 Intent。例如,当用户点击 SMS 应用程序中的电话号码时,我想执行我的 Intent。对 LogCat 的查看表明 SMS 应用程序执行了以下意图:

11-24 13:16:57.453: I/ActivityManager(390): START u0 {act=android.intent.action.VIEW dat=tel:xxxxxxxxxxxxx cmp=android/com.android.internal.app.ResolverActivity (有附加功能) } 从 pid 2493

因此,通过添加以下意图过滤器,它适用于我的 SMS 应用程序:

        <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.VIEW"/>
            <data android:scheme="tel" />
        </intent-filter>

我的建议是简单地使用 LogCat 来找出“人员”活动所期望的意图。

于 2013-11-24T12:28:30.227 回答