如何将我的应用程序添加到了Android默认的拨号器的选择?(How can I add my ap

2019-09-03 16:46发布

我的问题是如何将我的应用程序添加到了Android默认的拨号器的选择,是不使用android.intent.action.CALL_PRIVILEGED更具体?

现在我使用此代码下面,这工作得很好:

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

无论其谷歌最近发布: http://productforums.google.com/forum/#!topic/mobile/wXqnbynsL8Y

并邮寄这谁不使用意图android.intent.action.CALL_PRIVILEGED程序:

问题:您的应用程序的用户可能无法通过该系统的手机拨号器拨打紧急电话,如果他们选择让您的应用程序呼叫路由。 正如指出的是,监听CALL_PRIVILEGED意图的行动将拦截从系统紧急服务电话的文档,应用程序,但可能无法将它们路由正常。 请注意,CALL_PRIVILEGED是受限制的API,不打算为无法路由紧急呼叫适当的第三方应用程序中使用。

解:
•从Java代码的AndroidManifest.xml意图过滤器删除CALL_PRIVILEGED。 •更新您的谷歌Play上的说明,包括一份声明中,使用你的应用程序作为默认拨号器可以与拨打911个紧急服务造成干扰。

最简单的办法我可以删除,但随后的应用程序将使用功能。 但有另一种方式来添加应用程序的默认拨号器选择? 但随后没有CALL_PRIVILEGED意图是什么?

提前致谢

默认的拨号器选择的只是一个例子

编辑:

我说我用别的意图:

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

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

Answer 1:

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

更重要的是需要有数据为“电话”为URI意图过滤特权调用操作。 也低于许可标记,是需要允许电话。 缺少此类别中启动代码。

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


Answer 2:

你不需要拦截CALL_PRIVILEGED进行拨号。 有兴趣3个意图:

ACTION_DIAL:调用拨号器。 你应该截获此。

CALL:发起一个呼叫。 我想你需要拦截这个,如果你的路由通过VoIP呼叫,否则只是把它传递到系统。

CALL_PRIVILEGED:(在美国等911)放置一个紧急呼叫。 你不需要拦截这一点,因为这些电话是专门路由,即使没有SIM卡,并且不收取用户。

对于它的价值,我从谷歌相同的电子邮件。 我的应用程序甚至不使用电话或CALL_PRIVILEGED意图。 不过,有人在传进来的意图是不是这个动作(只是为了完整起见)代码的检查。 所以,我认为他们只是扫描的apk的数据部分,看看这串任何地方使用。

Edit(编辑)试试这个,它为我的应用程序:

    <activity android:name=".ActivityName"
              android:label="@string/activity_name">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.DIAL" />
            <action android:name="android.intent.action.CALL_BUTTON" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity-alias android:targetActivity="fully.qualified.ActivityName"
                    android:name="fully.qualified.ActivityName_HTC_hack"
                    android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <action android:name="android.intent.action.DIAL" />
            <data android:scheme="tel" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
        </intent-filter>
    </activity-alias>


Answer 3:

尝试 “android.intent.action.DIAL”。 用户必须手动启动电话,但我认为这是最好的解决办法。

输入:如果没有,一个空的拨号器启动; 其他的getData()是要拨打的电话号码或电话的URI:明确的电话号码的URI。 裁判:开发者页面



文章来源: How can I add my application to the android default Dialer selection?