Итак, я пытаюсь сделать свое приложение для телефона. Мне удалось изменить номеронабиратель и экран вызова, но есть один глюк, который мне не нравится.
Ожидания: После того, как я ввожу номер вызывающего абонента в номеронабиратель и нажимаю кнопку вызова, я хочу немедленно вызвать свой собственный экран вызова.
Проблема: После того, как я ввожу номер вызывающего абонента в номеронабиратель и нажимаю кнопку вызова, экран вызова по умолчанию вызывается в течение доли секунды, и только тогда мой пользовательский экран становится видимым. Этот сбой происходит только в API 29, но он работает так, как я ожидаю в API 26.
Реализация: Я использую ICallService для обработки вызовов, и все работает нормально.
Манифест с пользовательскими действиями при наборе номера и вызове
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<activity
android:screenOrientation="portrait"
android:name=".Views.Activities.DialerActivity"
android:windowSoftInputMode="stateAlwaysVisible|adjustResize"
>
<intent-filter>
<!-- Handle links from other applications -->
<action android:name="android.intent.action.VIEW" />
<action android:name="android.intent.action.DIAL" />
<!-- Populate the system chooser -->
<category android:name="android.intent.category.DEFAULT" />
<!-- Handle links in browsers -->
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tel" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.DIAL" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:screenOrientation="portrait"
android:launchMode="singleTop"
android:name=".Views.Activities.CallActivity">
<intent-filter>
<action android:name="android.intent.action.CALl" />
<action android:name="android.intent.action.CALL_BUTTON" />
<action android:name="android.intent.action.ANSWER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Вызов CallActivity
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + callersNumber)).addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Я предполагаю, что есть проблема с вызов новой активности, или фильтров намерений или разрешений.