2017-08-05 46 views
0

調用WhatsApp的。這很有效,但前提是電話號碼包含有效的國家/地區代碼。例如調用了WhatsApp與919789006685部作品,但與97890 06685不起作用調用它。這裏是國家代碼。Android的意向,我使用此代碼,直接從我的通話記錄的應用程序調用的WhatsApp從代碼

由於我的應用程序讀取通話記錄的電話號碼,我應該能夠調用的WhatsApp與任何有效的聯繫電話號碼,無論存儲的電話號碼的格式。用戶可能會在不包含國家/地區代碼的聯繫人中存儲號碼。那麼是否有解決此問題的方法?我的應用程序中使用

代碼:

Intent sendIntent = new Intent("android.intent.action.MAIN"); 
sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation")); 
String waNumber = contactPhone.replace("+", ""); 
sendIntent.putExtra("jid", waNumber + "@s.whatsapp.net"); 
startActivity(sendIntent); 
+0

https://stackoverflow.com/questions/38655458/android-make-whatsapp-call –

+0

感謝。但是我想打開一個聯繫人的WhatsApp對話聊天窗口,假設我有這個Id。你能幫忙嗎? – user3140417

回答

0
Intent sharingIntent = new Intent(Intent.ACTION_SEND); 
     sharingIntent.setType("text/html"); 
     sharingIntent.setPackage("com.whatsapp"); 
     sharingIntent.putExtra(Intent.EXTRA_TEXT, Html.fromHtml("<p>https://play.google.com/store/apps/details?id=" + context.getPackageName() + "</p>")); 
     context.startActivity(Intent.createChooser(sharingIntent, "Share using")); 
+0

謝謝。但我想爲給定的聯繫人電話號碼打開WhatsApp,而不是通用的Action Picker。 – user3140417

+0

我寧願開給聯繫人ID WhatsApp的談話聊天窗口。謝謝。 – user3140417

0

下面是完整的解決方案。對於那些在應用中嘗試相同的人可能會有用。感謝Sourav Ganguly的鏈接。

android-make whatsapp call

  1. Retreive所選聯繫的ID。
  2. 獲取所有的RAW聯繫人標識的從ContactsContract.RawContacts接觸ID
  3. 查詢的ContactsContract.Data表的所有原始聯繫人和檢索列ContactsContract.Data._ID
  4. 由於接觸可能有幾個電話號碼在WhatsApp的活躍,你可能要檢查額外列ContactsContract.Data.DATA3過濾出你想匹配
  5. 要開始了WhatsApp對話使用vnd.android.cursor.item/vnd.com.whatsapp的電話號碼。簡介和vnd.android.cursor.item/vnd.com.whatsapp.voip.call如果你想開始一個WhatsApp的通話
  6. 使用步驟3中的ID啓動WhatsApp。下面是示例代碼:

    String data = "content://com.android.contacts/data/" + dataId; 
          String type = "vnd.android.cursor.item/vnd.com.whatsapp.profile"; 
          Intent sendIntent = new Intent(); 
          sendIntent.setAction(Intent.ACTION_VIEW); 
          sendIntent.setDataAndType(Uri.parse(data), type); 
          sendIntent.setPackage("com.whatsapp"); 
    startActivity(sendIntent); 
    
相關問題