想要在Android应用中打开whatsapp与未保存的联系电话聊天

BHA*_*PTA 3 android android-intent whatsapp

我想打开未保存在用户手机中的某个号码的whatsapp聊天框。

我正在使用以下代码:

Uri uri = Uri.parse("smsto:" + str_MobileNumber);
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra("sms_body", "Hello");
i.setPackage("com.whatsapp");
mContext.startActivity(i);
Run Code Online (Sandbox Code Playgroud)

但是whatsapp显示错误: 在此处输入图片说明

Pra*_*V R 14

方法 1 - 使用 android 组件名称

 public static void openWhatsAppConversation(Context context, String number, String message) {

    number = number.replace(" ", "").replace("+", "");

    Intent sendIntent = new Intent("android.intent.action.MAIN");

    sendIntent.setType("text/plain");
    sendIntent.putExtra(Intent.EXTRA_TEXT, message);
    sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation"));
    sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators(number) + "@s.whatsapp.net");

    context.startActivity(sendIntent);
}
Run Code Online (Sandbox Code Playgroud)

方法 2 - 使用 whatsapp api uri

public static void openWhatsAppConversationUsingUri(Context context, String numberWithCountryCode, String message) {

    Uri uri = Uri.parse("https://api.whatsapp.com/send?phone=" + numberWithCountryCode + "&text=" + message);

    Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);

    context.startActivity(sendIntent);
}
Run Code Online (Sandbox Code Playgroud)

  • 第二种方法对我有用,这应该是公认的答案 (2认同)

San*_*nju 6

抱歉回复晚了。我想你的问题必须现在解决。您可以尝试使用以下代码打开未保存号码的对话:

private void openWhatsApp(String number) {
        try {
            number = number.replace(" ", "").replace("+", "");

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

        } catch(Exception e) {
            Log.e(TAG, "ERROR_OPEN_MESSANGER"+e.toString());
        }
    }
Run Code Online (Sandbox Code Playgroud)