Намерение ACTION_CALL не перехватывается моим приложением

Есть приложение с кнопкой, которая при нажатии использует startActivity метод с ACTION_CALL намерение.

Вот как это называется:

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>

Любой другой вопрос, который я видел, предлагает сделать именно такие декларации в манифесте.

Я проверил, и в приложении Google Dialer, поставляемом с телефоном, не установлено никаких настроек по умолчанию.

Так почему бы не показать всплывающее диалоговое окно с возможностью выбрать мое приложение в качестве номеронабирателя, чтобы поймать это намерение?

1 ответ

Решение

Я наконец получил это, чтобы работать. После добавления набора фильтров намерений он начал работать:

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

Я думаю, что первый сделал волшебство.

Другие вопросы по тегам