Intent ACTION_CALL 没有被我的应用程序拦截

Intent ACTION_CALL is not being intercepted by my application

有一个带有按钮的应用程序,按下该按钮时使用具有 ACTION_CALL 意图的 startActivity 方法。

它是这样叫的:

public void call(String number)
{
    Intent myIntent = new Intent(Intent.ACTION_CALL);
    myIntent.setData(Uri.parse("tel:" + number);
    startActivity(myIntent);
}

我在获得许可的情况下制作了一个拨号器应用程序:

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

我的清单如下所示:

 <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.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.CALL_BUTTON" />
    <category android:name="android.intent.category.DEFAULT" />
</intent-filter>

我看到的每个其他问题都建议在清单中做出这个确切的声明。

我已经检查过 phone 附带的 Google 拨号器应用程序没有设置默认值。

那么,为什么不显示一个弹出对话框,其中包含选择我的应用程序作为拨号程序的选项以捕捉该意图?

我终于让它工作了。 添加一堆意图过滤器后,它开始工作:

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

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

        </intent-filter>

        <intent-filter android:priority="100" >

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

        </intent-filter>

        <intent-filter>

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

        </intent-filter>

        <intent-filter>

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

        </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>

我觉得第一个很神奇。