web-dev-qa-db-fra.com

Comment faire un appel téléphonique par programme?

Je passe à une activité le numéro à appeler par paquet

et puis, dans une telle activité, j'ai un bouton pour appeler ce numéro, c'est le code:

callButton.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(bundle.getString("mobilePhone")));
            }
        }); 

Quelque chose ne va pas, car quand j'appuie sur le bouton, rien ne se passe ...

Qu'est-ce que je fais mal?

PD: J'utilise un projet compatible avec Android 1.5 ... un appel téléphonique est-il incompatible avec la version 1.5?

106

Vous avez oublié d'appeler startActivity. Ça devrait ressembler à ça:

Intent intent = new Intent(Intent.ACTION_CALL);

intent.setData(Uri.parse("tel:" + bundle.getString("mobilePhone")));
context.startActivity(intent);

Une intention en soi est simplement un objet qui décrit quelque chose. Ça ne fait rien.

N'oubliez pas d'ajouter l'autorisation correspondante à votre manifeste:

<uses-permission Android:name="Android.permission.CALL_PHONE" />
234
Lior

J'ai essayé cela sur mon téléphone et cela fonctionne parfaitement.

Intent intent = new Intent(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:900..." ));
startActivity(intent);

Ajoutez cette permission dans le fichier manifeste.

<uses-permission Android:name="Android.permission.CALL_PHONE" />
20
Anirudh
 Intent callIntent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+198+","+1+","+1)); 
             startActivity(callIntent);

pour des commandes multiples 

Ceci est utilisé pour les systèmes d’appel DTMF . Si l’appel est interrompu, vous devez passer plus de "," entre les numéros.

13
Dwivedi Ji

Dans la réponse sélectionnée, il n’ya pas de vérification de l’autorisation Marshmallow. Il ne fonctionnera pas directement dans le périphérique Marshmallow 6.0 ou supérieur.

Je sais que je suis trop tard mais cette question a un vote important donc je pensais que cela aiderait d'autres à l'avenir

Dans les appareils Marshmallow, nous devons prendre une autorisation d'exécution pour l'appel ...

Voici un exemple pour faire un appel à Guimauve ou au-dessus.

Comment faire un appel dans Android Marshmallow 6.0 ou supérieur

6
Vishal Chhodwani

Jetez un oeil à cet endroit: http://developer.Android.com/guide/topics/intents/intents-filters.html

Avez-vous mis à jour votre fichier de manifeste afin de donner des droits d'appel?

3
ykatchou

Ici, je vais vous montrer que vous pouvez passer un appel téléphonique à partir de votre activité. Pour passer un appel, vous devez inscrire ce code dans votre application.

try {
    Intent my_callIntent = new Intent(Intent.ACTION_CALL);
    my_callIntent.setData(Uri.parse("tel:"+phn_no));
    //here the Word 'tel' is important for making a call...
    startActivity(my_callIntent);
} catch (ActivityNotFoundException e) {
    Toast.makeText(getApplicationContext(), "Error in your phone call"+e.getMessage(), Toast.LENGTH_LONG).show();
}
2
Pir Fahim Shah
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main); 
   final Button button = (Button) findViewById(R.id.btn_call);
    button.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            String mobileNo = "123456789";
            String uri = "tel:" + mobileNo.trim();
            Intent intent = new Intent(Intent.ACTION_CALL);
            intent.setData(Uri.parse(uri));
            startActivity(intent);
        }
    });*
 }
0

Si quelqu'un cherche à Kotlin

    val  uri = "tel:"+800******
    val call_customer_service = Intent(Intent.ACTION_CALL)
    call_customer_service.setData(Uri.parse(uri))
    startActivity(call_customer_service)
0
mughil