Приложение для набора номера Android
Я выясняю, как заменить приложение для набора номера по умолчанию из моего пользовательского приложения для набора номера, но я не понимаю, как этого добиться.
Вот что я хочу
- Создать пользовательский интерфейс номеронабирателя
- Мое приложение вызывается всякий раз, когда нажимается аппаратная кнопка вызова или та, что в Android
- Приложение также можно вызвать с экрана контактов
Я имею в виду публичную статическую финальную строку ACTION_DIAL.
4 ответа
Создайте простое приложение для Android (наша звонилка). Чтобы действительно вызвать кого-то, вам просто нужен этот метод:
private void performDial(String numberString) { if (!numberString.equals("")) { Uri number = Uri.parse("tel:" + numberString); Intent dial = new Intent(Intent.ACTION_CALL, number); startActivity(dial); } }
Дайте вашему приложению разрешение звонить в AndroidManifest
<uses-permission android:name="android.permission.CALL_PHONE" />
Установите в AndroidManifest намерение, которое говорит вашему телефону, чтобы использовать ваше приложение, когда нужна звонилка
Когда кто-то нажимает кнопку вызова:
<intent-filter>
<action android:name="android.intent.action.CALL_BUTTON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
Когда кто-то запускает URI:
<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>
Это сработало для меня:
<activity
android:name=".activities.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- open activity when establishing a call -->
<intent-filter>
<action android:name="android.intent.action.CALL_PRIVILEGED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="tel" />
</intent-filter>
</activity>
Обратитесь к этому ответу от arekolek.
Это правильный способ расширения InCallService сторонним приложением, которое заменит системный номеронабиратель по умолчанию и InCallScreen после того, как пользователь примет приглашение при запуске.
Он также предоставляет рабочий пример приложения в Котлине (бонусные баллы).
Пожалуйста, подтвердите его ответ там, я не заслуживаю похвалы за его работу.
Примечание: будет работать только для API 23+ и может потребоваться дополнительные разрешения в API 26
Появляется намерение ACTION_DIAL, позволяющее вам передать номер для вызова стандартной звонилке, готовый к тому, чтобы пользователь звонил по нему, если он этого хочет, так что это не то, что вам нужно.
У вас есть конкретный вопрос, или вы ищете кого-то, кто скажет вам, как реализовать приложение, вызываемое при нажатии кнопки вызова программного / аппаратного обеспечения?
Похоже, вам нужен ACTION_CALL_BUTTON - http://developer.android.com/reference/android/content/Intent.html