意图打开活动'点击电话号码'

时间:2015-02-04 23:30:31

标签: android android-intent intentfilter

我在这个问题上找到了几个答案,但它对我不起作用。如果您单击电子邮件或网站上的电话号码,则会出现默认拨号器弹出窗口以选择拨号器/ Skype等。

我正在尝试将我的应用程序放入该列表中 - 所以我不想处理实际的呼叫,而是打开活动并显示用户点击的号码。

我试过这个:

<receiver android:name=".MyOutgoingCallHandler">
            <intent-filter>
                 <action android:name="android.intent.action.ACTION_DIAL" />
                 <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

但它没有显示在列表中。我应该过滤什么意图?

2 个答案:

答案 0 :(得分:0)

官方Android Developers blog已涵盖此流程。你可以在那里阅读所有相关信息。

您的意图过滤器看起来似乎有正确的操作,因此您可能没有请求正确的Android权限。

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

以下是Android开发者博客建议您声明广播接收器的方式。

<manifest>
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />  
    <application>
        ...
        <receiver android:name=MyOutgoingCallHandler">
            <intent-filter>
                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>
        ...
    </application>
</manifest>

答案 1 :(得分:0)

如果您要将Activity添加到Activity列表中,该列表将作为可能的电话拨号器显示给用户,您需要Activity和{{{} 1}}定义必须在清单中包含此<activity>

intent-filter>

您所获得的是<activity ...> <intent-filter> <action android:name="android.intent.action.DIAL" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> ,它将接收拨出电话BroadcastReceiver。这有点不同。