6
votes

Comment ouvrir l'activité de conversation de WhatsApp à l'aide de données de contact?

Je veux ouvrir l'activité de conversation de l'application cmP = com.whatsapp / .conversion code> de mon application.

Comment puis-je faire cela? J'ai un numéro de téléphone de contact, ID de contact, contacter RAW ID et avez également l'URI de l'application pour un contact particulier. P>

private void openWhatsApp(String id) {

    Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/"+id));
    Log.v("ssssss", s);
    i.setType("vnd.android.cursor.item/vnd.com.whatsapp.profile");
    i.setComponent(new ComponentName("com.whatsapp", ".Conversation"));
    startActivity(i);
}


04-20 18:13:45.794: I/ActivityManager(1862): START
{act=android.intent.action.VIEW
dat=content://com.android.contacts/data/8269
typ=vnd.android.cursor.item/vnd.com.whatsapp.profile
cmp=com.whatsapp/.accountsync.ProfileActivity} from pid 32159


04-20 18:42:11.317: I/ActivityManager(1862): START {flg=0x14000000 cmp=com.whatsapp/.Conversation (has extras)} from pid 1150


3 commentaires

Ajout de la brève description et le code a grandement amélioré cette question de "Je veux le code" à "J'ai essayé cela, pourriez-vous aider?" (ce qui fait une énorme différence ici.)


@Sam merci pour votre suggestion. Je garderai ça à l'esprit.


Ce n'est pas clair ce que vous demandez. Le code ne démarre pas la bonne application? (La sortie LOGCAT suggère le contraire.) Est-ce qu'il se bloque? Autre chose?


5 Réponses :


6
votes
private void openWhatsApp(String id) {

Cursor c = getContentResolver().query(ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
        new String[] { id }, null);
c.moveToFirst();
Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));

startActivity(i);
c.close();
}
Where id is what's app uri like 0987654321@s.whatsapp.net

5 commentaires

... Comment obtenir ID .Je pense que c'est ce qui est identité .Quand j'ai utilisé votre code. J'ai une erreur getSherlockactivity (). Je suis nouveau dans Android, donc je ne comprends donc pas ce qui est getSherlocactivité et où il est utilisé. Je veux juste envoyer un message de ma candidature à WhatsUp sans ouvrir ce qui est possible, il est possible ou non


phoneno@s.wwatsapp.net est ce qui est l'identifiant de l'application. Ou vous pouvez l'obtenir à partir de data1 colonne dans contacts.db. Il n'est pas possible d'envoyer un message à partir de votre application à WhatsUp sans Ouvrir Whats App.


@MAHISINGH Je viens de supprimer GetSherlockactivity () et sa fonctionne parfaitement.


@johnsmith Comment avez-vous trouvé cette information? Est-ce fonctionnaire? Un code similaire fonctionne-t-il pour d'autres réseaux sociaux et applications, comme FB-messager, Viber, Line, Telegram?


Ce code me donne un paquet non trouvé d'exception !! Impossible de trouver une application pour gérer l'intention.



1
votes

Essayez ce code:

String smsNumber="919426640584@s.whatsapp.net";
Uri uri = Uri.parse("smsto:" + smsNumber);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra("sms_body", "Prakash Gajera");
i.setPackage("com.whatsapp");
startActivity(i);


1 commentaires

Vous avez besoin du contactID du contact, vous ne pouvez pas utiliser le numéro SMS. Donc, il devrait ressembler à quelque chose 189202@s.wwatsapp.net où 189202 est l'identifiant du contact. Et cela ne lance que le profil de contact, WhatsApp ignore toujours SMS_body et d'autres valeurs extra_text.



0
votes

Vous pouvez utiliser cet exemple

startActivity(new Intent(Intent.ACTION_VIEW,
                            Uri.parse(
                                    "https://api.whatsapp.com/send?phone=+628119xxx&text=I'm%20interested%20in%20your%20car%20for%20sale"
                            )));


0 commentaires

1
votes

Ma solution finale Lorsque le numéro de contact est inconnu de l'utilisateur.

éventuellement, vous pouvez définir un texte préformaté également. P>

    try {
        String whatsAppRoot = "http://api.whatsapp.com/";
        String number = "send?phone=+xxxxxxxxxxx"; //here the mobile number with its international prefix
        String text = "&text=HERE YOUR TEXT";
        String uri = whatsAppRoot+number+text;

        Intent intent = new Intent(Intent.ACTION_VIEW);
        intent.setData(Uri.parse(uri));
        startActivity(intent);
    } catch (Exception e) {
        Toast.makeText(getApplicationContext(), 
        "WhatsApp cannot be opened", Toast.LENGTH_SHORT).show();
    }


0 commentaires

0
votes
 String KEY_QUICK_REPLY_TEXT = "Dear Valued Customer Thank you for contacting us your reference Number is "+refernceNumber ;
   Intent intent = new Intent(Intent.ACTION_SEND);
intent.setData(Uri.parse("http://api.whatsapp.com/send?phone="+phone +"&text="+KEY_QUICK_REPLY_TEXT));
                            startActivity(intent);

Toast.makeText(MainActivity.this, response, Toast.LENGTH_SHORT).show();

0 commentaires