只要使用拨号器拨打电话,应用程序就不会出现在活动选择器中

时间:2013-07-08 09:27:08

标签: android intentfilter

应该使用什么样的过滤器,以便在拨打电话时我的应用程序显示在活动选择器中:如显示Viber和Skype。

我正在使用此过滤器:

   <receiver android:name="OutgoingCallReceiver" >
        <intent-filter>
            <action android:name="android.intent.action.ACTION_NEW_OUTGOING_CALL" />

            <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>
    </receiver>
经许可

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

仍然myApp不会出现在活动选择器中。

3 个答案:

答案 0 :(得分:2)

声明您的Activity将其添加到选项列表中以便调用应用程序

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

并且要拨打任何号码,请使用Intent.ACTION_DIAL

Uri numberuri = Uri.parse("tel:"  + edit_text_number);
Intent intent_call = new Intent(Intent.ACTION_DIAL, numberuri);
startActivity(intent_call);

答案 1 :(得分:1)

令人惊讶的是,我发现我需要在我的清单中添加动作VIEW,以便我的拨号器显示在App Chooser中。还在寻找解释。
所以这是有效的:

<!-- language: lang-XML -->   
<intent-filter>
    <action android:name="android.intent.action.VIEW" />
    <action android:name="android.intent.action.DIAL"/>
    <action android:name="android.intent.action.CALL"/>
    <data android:scheme="tel"/>
    <category android:name="android.intent.category.DEFAULT"/>
</intent-filter>

当我添加到intent-filter

<!-- language: lang-XML --> 
<data android:mimeType="text/plain"/>

我的拨号器出现在App Chooser

答案 2 :(得分:0)

您需要注册广播接收器的主要活动。

请勿使用拦截CALL_PRIVILEGED Intent调用的活动。这样做会干扰EMS呼叫。你的例子就在正确的轨道上。