Намерение 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>
Я думаю, что первый сделал волшебство.