Come posso submit un messaggio a un contatto specifico tramite WhatsApp dalla mia applicazione android?

Sto sviluppando un'applicazione android e devo submit un messaggio a un contatto specifico di WhatsApp. Ho provato questo codice:

Uri mUri = Uri.parse("smsto:+999999999"); Intent mIntent = new Intent(Intent.ACTION_SENDTO, mUri); mIntent.setPackage("com.whatsapp"); mIntent.putExtra("sms_body", "The text goes here"); mIntent.putExtra("chat",true); startActivity(mIntent); 

Il problema è che il parametro "sms_body" non viene ricevuto su WhatsApp, anche se il contatto è selezionato.

  • Come utilizzare il gestore di download incorporato in Android
  • Bluetooth Parametri di connessione a bassa energia per Android, iOS e Win8
  • Servizio Android riavviato quando l'applicazione viene uccisa
  • Errore nell'apertura della videocamera android per lo streaming di video
  • Esecuzione di più AsyncTask Parallely
  • Come impostare un allarme esatto ripetuto su API 19 (kitkat)?
  • Android Studio: riprova le dependencies e il progetto di sincronizzazione
  • Come aumentare la durata della logging video in android?
  • Imansible avviare Eclipse - Java è stato avviato ma restituito codice di output = 13
  • Come analizzare le celle della terza colonna di un tavolo?
  • È ansible eseguire più AsyncTask nello stesso tempo?
  • Come hide la barra di navigazione in modo permanente nell'attività di android?
  • 6 Solutions collect form web for “Come posso submit un messaggio a un contatto specifico tramite WhatsApp dalla mia applicazione android?”

    Provate ad usare Intent.EXTRA_TEXT invece che sms_body come chiave extra. Per documentazione di WhatsApp, questo è ciò che devi usare.

    Un esempio dal loro sito web :

     Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.setType("text/plain"); startActivity(sendIntent); 

    Il loro esempio utilizza Intent.ACTION_SEND invece di Intent.ACTION_SENDTO , quindi non so se WhatsApp support anche l'invio diretto a un contatto tramite il sistema di intenti. Alcuni test rapidi dovrebbero consentire di determinare questo.

    C'è un modo. Assicurarsi che il contatto che stai fornendo deve essere passato come string in intenzione senza il prefisso "+". Il codice del paese deve essere allegato come prefisso al numero di telefono.

    per esempio: '+918547264285' deve essere passato come '918547264285'. Qui '91' all'inizio è il codice del paese.

    Nota: sostituire il 'YOUR_PHONE_NUMBER' con il contatto a cui si desidera submit il messaggio.

    Ecco lo snippet:

      Intent sendIntent = new Intent("android.intent.action.MAIN"); sendIntent.setComponent(new ComponentName("com.whatsapp","com.whatsapp.Conversation")); sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators("YOUR_PHONE_NUMBER")+"@s.whatsapp.net"); startActivity(sendIntent); 

    Grande hack Rishabh, grazie mille, stavo cercando questa soluzione da tre anni fa.

    Come per la risposta di Rishabh Maurya sopra, ho implementato questo codice che funziona bene per la condivisione di text e immagini su WhatsApp. Ho pubblicato questo nella mia applicazione android, quindi se vuoi vederlo live prova la mia app Bill Book

    Si noti che in entrambi i casi si apre una conversazione whatsapp (se il numero esistente è presente nell'elenco di utenti whatsapp), ma l'utente deve fare clic sul button invia per completare l'azione. Ciò significa che aiuta a saltare la fase di selezione dei contatti.

    Per i messaggi di text

     String toNumber = "+91 98765 43210"; // contains spaces. toNumber = toNumber.replace("+", "").replace(" ", ""); Intent sendIntent = new Intent("android.intent.action.MAIN"); sendIntent.putExtra("jid", toNumber + "@s.whatsapp.net"); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setPackage("com.whatsapp"); sendIntent.setType("text/plain"); startActivity(sendIntent); 

    Per condividere le immagini

     String toNumber = "+91 98765 43210"; // contains spaces. toNumber = toNumber.replace("+", "").replace(" ", ""); Intent sendIntent = new Intent("android.intent.action.MAIN"); sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(imageFile)); sendIntent.putExtra("jid", toNumber + "@s.whatsapp.net"); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setPackage("com.whatsapp"); sendIntent.setType("image/png"); context.startActivity(sendIntent); 

    Godetevi WhatsApping!

    Questo è ciò che funziona per me.

    Il parametro 'body' non viene rosso dall'applicazione whatsapp, invece utilizzare 'Intent.EXTRA_TEXT'.

    Impostando il numero di telefono specificare il contatto da aprire in whatsapp.

     Intent sendIntent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:" + "" + phoneNumber + "?body=" + encodedMessage)); sendIntent.putExtra(Intent.EXTRA_TEXT, message); sendIntent.setPackage("com.whatsapp"); startActivity(sendIntent); 
     Uri mUri = Uri.parse("smsto:+90000900000"); Intent mIntent = new Intent(Intent.ACTION_SENDTO, mUri); mIntent.setPackage("com.whatsapp"); mIntent.putExtra("chat",true); startActivity(Intent.createChooser(mIntent, "Share with")); 

    Funziona grande per submit un messaggio a un contatto specifico su WhatsApp dalla mia applicazione Android

    Ho trovato il modo giusto per farlo ed è semplice dopo aver letto questo articolo: http://howdygeeks.com/send-whatsapp-message-unsaved-number-android/

    telefono e messaggio sono entrambi String.

    Codice sorgente:

     try { PackageManager packageManager = context.getPackageManager(); Intent i = new Intent(Intent.ACTION_VIEW); String url = "https://api.whatsapp.com/send?phone="+ phone +"&text=" + URLEncoder.encode(message, "UTF-8"); i.setPackage("com.whatsapp"); i.setData(Uri.parse(url)); if (i.resolveActivity(packageManager) != null) { context.startActivity(i); } } catch (Exception e){ e.printStackTrace(); } 

    Godere!

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.