2017-03-18 1 views
0

Dans mon application, j'ai un bouton pour sélectionner un contact du téléphone de contacts et un bouton pour lancer un appel vers ce numéro. Donc, quand je clique sur le bouton pour sélectionner le contact, la boîte de dialogue action complète en utilisant apparaît avec plus d'applications à choisir ainsi que quand je clique sur le bouton pour démarrer le téléphone d'appel. Comment puis-je éviter la boîte de dialogue pour accéder aux contacts et faire un appel téléphonique directement?Comment éviter une action complète à l'aide de la boîte de dialogue pour lire un contact ou faire un appel

partiel Code de mon activité:

contacts.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
      startActivityForResult(intent, 0); 
     } 
}); 

start.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
String numeroDiTelefono = dati.getString("numeroDiTelefono"); 
    Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:" + numeroDiTelefono)); 
    callIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(callIntent); 
     } 
}); 

Répondre

0

Assurez-vous que vous avez ajouté l'autorisation dans le fichier Manifest:

<uses-permission android:name="android.permission.CALL_PHONE" /> 

Et tout ce que vous avez besoin pour le Intent est:

Intent callIntent = new Intent(Intent.ACTION_CALL); 
callIntent.setData(Uri.parse("tel:"+numeroDiTelefono)); 
startActivity(callIntent); 
+0

Je l'ai déjà fait, mais quand je presse le bouton-je obtenir l'action complète en utilisant dialogue. Je ne veux pas le dialogue que je veux que l'appel démarre directement – paniko

0

Fondamentalement, ce dialogue signifie que vous avez plus d'un contact application installée sur votre téléphone. Il s'agit d'un comportement par défaut du système Android lorsque vous appelez des actions d'intention communes.

Ce que vous pouvez faire est de rendre l'intention plus spécifique à l'application que vous recherchez. Par specifing a) les données spécifiques uri b) le nom package c) définir le type de contenu, etc

Essayez aussi cela.

Intent i = new Intent(Intent.ACTION_PICK, ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 
startActivityForResult(i, PICK_CONTACT); 
+0

J'ai essayé mais ça ne marche pas – paniko

0
public void onClick(View view) { 
      String number = String.valueOf(bundle.getLong("phone")); 
      Uri call = Uri.parse("tel:" + number); 
      Intent intent = new Intent(Intent.ACTION_DIAL, call); 
      startActivity(intent); 
     } 
+0

Je l'ai déjà fait mais quand j'appuie sur le bouton j'obtiens l'action complète en utilisant le dialogue. Je ne veux pas le dialogue que je veux que l'appel démarre directement – paniko