web-dev-qa-db-fra.com

Android

Je cherche un moyen de remplacer l'application de numérotation par défaut de mon application de numérotation personnalisée, mais je ne sais pas comment y parvenir.

Voici ce que je veux

  • Créer une interface utilisateur de numérotation personnalisée
  • Mon application est appelée chaque fois que le matériel du bouton d'appel ou celui de Android est enfoncé
  • L'application peut également être appelée depuis l'écran de contact

Je fais référence à Public static final String ACTION_DIAL .

31
ingsaurabh
  1. Créez une simple Android (notre numéroteur). Pour appeler quelqu'un, vous avez juste besoin de cette méthode:

    private void performDial(String numberString) {
        if (!numberString.equals("")) {
           Uri number = Uri.parse("tel:" + numberString);
           Intent dial = new Intent(Intent.ACTION_CALL, number);
           startActivity(dial);
        }
    }
    
  2. Donnez à votre application la permission d'appeler dans AndroidManifest

    <uses-permission Android:name="Android.permission.CALL_PHONE" />
    
  3. Définir dans l'intention AndroidManifest qui dit à votre téléphone d'utiliser votre application lorsque vous avez besoin d'un numéroteur

Lorsque quelqu'un appuie sur le bouton d'appel:

    <intent-filter>
        <action Android:name="Android.intent.action.CALL_BUTTON" />
        <category Android:name="Android.intent.category.DEFAULT" />
    </intent-filter>

Quand quelqu'un tire un 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>
47
zirael

Cela a fonctionné pour moi:

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

Reportez-vous à cette réponse par arekolek .

C'est la bonne façon d'étendre un InCallService par une application tierce, qui remplacera le numéroteur par défaut du système et InCallScreen une fois que l'utilisateur aura accepté l'invite au démarrage.

Il fournit également un exemple d'application en Kotlin (points bonus).

Veuillez voter là-dessus, je ne mérite pas le mérite pour son travail.

Remarque: ne fonctionnera que pour l'API 23+ et pourrait avoir besoin de autorisations supplémentaires dans l'API 26

2
leRobot

L'intention ACTION_DIAL semble vous permettre de passer un numéro à appeler au numéroteur standard, prêt à être appelé par l'utilisateur s'il le souhaite, ce n'est donc pas ce dont vous avez besoin.

Vous avez une question spécifique ou cherchez-vous quelqu'un pour vous dire comment implémenter votre application appelée lorsque vous appuyez sur le bouton d'appel logiciel/matériel?

Il semble que vous ayez besoin d'ACTION_CALL_BUTTON - http://developer.Android.com/reference/Android/content/Intent.html#ACTION_CALL_BUTTON

2
David Precious