以编程方式将文本发送到特定联系人(whatsapp)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式将文本发送到特定联系人(whatsapp)相关的知识,希望对你有一定的参考价值。
我想知道如何将文本发送到特定的WhatsApp联系人。我找到了一些代码来查看特定联系人,但不发送数据。
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();
这适用于查看whatsapp-contact,但我现在如何添加一些文本?或者Whatsapp开发人员没有实现这样的api?
我认为答案是你的问题和这个答案的混合:https://stackoverflow.com/a/15931345/734687所以我会尝试以下代码:
- 将ACTION_VIEW更改为ACTION_SENDTO
- 像你一样设置Uri
- 将包设置为whatsapp
Intent i = new Intent(Intent.ACTION_SENDTO, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
i.setType("text/plain");
i.setPackage("com.whatsapp"); // so that only Whatsapp reacts and not the chooser
i.putExtra(Intent.EXTRA_SUBJECT, "Subject");
i.putExtra(Intent.EXTRA_TEXT, "I'm the body.");
startActivity(i);
我查看了Whatsapp清单,发现ACTION_SEND已注册到活动ContactPicker
,所以这对你没有帮助。但是,ACTION_SENDTO已注册到活动com.whatsapp.Conversation
,这听起来更适合您的问题。
Whatsapp可以作为发送短信的替代品,所以它应该像短信一样工作。如果您未指定所需的应用程序(通过qazxswpoi),Android将显示应用程序选择器。因此,您应该查看通过意图发送SMS的代码,然后提供其他包信息。
setPackage
首先尝试将Uri uri = Uri.parse("smsto:" + smsNumber);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra("sms_body", smsText);
i.setPackage("com.whatsapp");
startActivity(i);
替换为ACTION_SEND
。如果这不起作用,而不是提供额外的额外ACTION_SENDTO
。如果这不起作用,请尝试更改uri。
更新我试图自己解决这个问题,但无法找到解决方案。 Whatsapp打开聊天记录,但不接收文本并发送。似乎这个功能没有实现。
现在可以通过See also the documentation of WhatsApp实现。只有企业可以申请使用它。这是直接向电话号码发送消息的唯一方法,无需任何人为干预。
发送正常消息是免费的。看起来您需要在服务器上托管mysql数据库和WhatsApp Business Client。
检查这个答案。这里你的号码以“91 **********”开头。
WhatsApp Business API
试试这个,为我工作! 。只是使用意图
Intent sendIntent = new Intent("android.intent.action.MAIN");
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send."); sendIntent.putExtra("jid",PhoneNumberUtils.stripSeparators("91**********") + "@s.whatsapp.net");
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
构建whatsapp网址。在whatsapp电话号码 Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(whatsappUrl()));
startActivity(intent);
中添加国家代码
https://countrycode.org/
这将首先搜索指定的联系人,然后打开聊天窗口。
注意:phone_number和str是变量。
public static String whatsappUrl()
final String BASE_URL = "https://api.whatsapp.com/";
final String WHATSAPP_PHONE_NUMBER = "628123232323"; //'62' is country code for Indonesia
final String PARAM_PHONE_NUMBER = "phone";
final String PARAM_TEXT = "text";
final String TEXT_VALUE = "Hello, How are you ?";
String newUrl = BASE_URL + "send";
Uri builtUri = Uri.parse(newUrl).buildUpon()
.appendQueryParameter(PARAM_PHONE_NUMBER, WHATSAPP_PHONE_NUMBER)
.appendQueryParameter(PARAM_TEXT, TEXT_VALUE)
.build();
return buildUrl(builtUri).toString();
public static URL buildUrl(Uri myUri)
URL finalUrl = null;
try
finalUrl = new URL(myUri.toString());
catch (MalformedURLException e)
e.printStackTrace();
return finalUrl;
Uri mUri = Uri.parse("https://api.whatsapp.com/send?
phone=" + phone_no + "&text=" + str);
Intent mIntent = new Intent("android.intent.action.VIEW", mUri);
mIntent.setPackage("com.whatsapp");
startActivity(mIntent);
private void openWhatsApp()
//without '+'
try
Intent sendIntent = new Intent("android.intent.action.MAIN");
//sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation"));
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra("jid",whatsappId);
sendIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
catch(Exception e)
Toast.makeText(this, "Error/n" + e.toString(), Toast.LENGTH_SHORT).show();
Log.e("Error",e+"") ;
Bitmap bmp = null;
bmp = ((BitmapDrawable) tmpimg.getDrawable()).getBitmap();
Uri bmpUri = null;
try
File file = new File(getBaseContext().getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".jpg");
FileOutputStream out = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
out.close();
bmpUri = Uri.fromFile(file);
catch (IOException e)
e.printStackTrace();
String toNumber = "+919999999999";
toNumber = toNumber.replace("+", "").replace(" ", "");
Intent shareIntent =new Intent("android.intent.action.MAIN");
shareIntent.setAction(Intent.ACTION_SEND);
String ExtraText;
ExtraText = "Share Text";
shareIntent.putExtra(Intent.EXTRA_TEXT, ExtraText);
shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUri);
shareIntent.setType("image/jpg");
shareIntent.setPackage("com.whatsapp");
shareIntent.putExtra("jid", toNumber + "@s.whatsapp.net");
shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
try
startActivity(shareIntent);
catch (android.content.ActivityNotFoundException ex)
Toast.makeText(getBaseContext(), "Sharing tools have not been installed.", Toast.LENGTH_SHORT).show();
private void sendToContactUs()
String phoneNo="+918000874386";
Intent sendIntent = new Intent("android.intent.action.MAIN");
sendIntent.setAction(Intent.ACTION_VIEW);
sendIntent.setPackage("com.whatsapp");
String url = "https://api.whatsapp.com/send?phone=" + phoneNo + "&text=" + "Unique Code - "+CommonUtils.getMacAddress();
sendIntent.setDataAndType(Uri.parse(url),"text/plain");
if(sendIntent.resolveActivity(getPackageManager()) != null)
startActivity(sendIntent);
else
Toast.makeText(getApplicationContext(),"Please Install Whatsapp Massnger App in your Devices",Toast.LENGTH_LONG).show();
public void shareWhatsup(String text)
String smsNumber = "91+" + "9879098469"; // E164 format without '+' sign
Intent intent = new Intent(Intent.ACTION_VIEW);
try
String url = "https://api.whatsapp.com/send?phone=" + smsNumber + "&text=" + URLEncoder.encode(text, "UTF-8");
intent.setPackage("com.whatsapp");
intent.setData(Uri.parse(url));
catch (Exception e)
e.printStackTrace();
以上是关于以编程方式将文本发送到特定联系人(whatsapp)的主要内容,如果未能解决你的问题,请参考以下文章
将 Whatsapp 消息发送到特定的联系号码(Swift 项目)
如何从我的 Android 应用程序通过 WhatsApp 向特定联系人发送消息?
WhatsApp 视频作为 Gif 以编程方式在 Android 上共享