How can I send message to specific contact through WhatsApp from my android app?

前端 未结 13 1525
梦毁少年i
梦毁少年i 2020-12-02 17:41

I am developing an android app and I need to send a message to specific contact from WhatsApp. I tried this code:

Uri mUri = Uri.parse(\"smsto:+999999999\");         


        
相关标签:
13条回答
  • 2020-12-02 18:18
    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"));
    

    Works great to send message to specific contact on WhatsApp from my android app

    0 讨论(0)
  • 2020-12-02 18:22

    This new method, send message to a specific contact via whatsapp in Android. For more information look here

                Intent sendIntent = new Intent();
                sendIntent.setAction(Intent.ACTION_VIEW);
                String url = "https://api.whatsapp.com/send?phone=" + number + "&text=" + path;
                sendIntent.setData(Uri.parse(url));
                activity.startActivity(sendIntent);here
    
    0 讨论(0)
  • 2020-12-02 18:27

    We can share/send message to whats app. Below is Sample code to send text message on Whats-app

    1. Single user
    private void shareToOneWhatsAppUser(String message) {
    
        /**
         * NOTE:
         * Message is shared with only one user at a time. and to navigate back to main application user need to click back button
         */
        Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
        whatsappIntent.setType("text/plain");
        whatsappIntent.setPackage("com.whatsapp");
        whatsappIntent.putExtra(Intent.EXTRA_TEXT, message);
    
        //Directly send to specific mobile number...
        String smsNumber = "919900990099";//Number without with country code and without '+' prifix
        whatsappIntent.putExtra("jid", smsNumber + "@s.whatsapp.net"); //phone number without "+" prefix
    
        if (whatsappIntent.resolveActivity(getPackageManager()) == null) {
            Toast.makeText(MainActivity.this, "Whatsapp not installed.", Toast.LENGTH_SHORT).show();
            return;
        }
    
        startActivity(whatsappIntent);
    }
    
    1. Multiple user
    private void shareToMultipleWhatsAppUser(String message) {
    
        /**
         * NOTE:
         *
         * If want to send same message to multiple users then have to select the user to whom you want to share the message & then click send.
         * User navigate back to main Application once he/she select all desired persons and click send button.
         * No need to click Back Button!
         */
    
        Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
        whatsappIntent.setType("text/plain");
        whatsappIntent.setPackage("com.whatsapp");
        whatsappIntent.putExtra(Intent.EXTRA_TEXT, message);
    
        if (whatsappIntent.resolveActivity(getPackageManager()) == null) {
            Toast.makeText(MainActivity.this, "Whatsapp not installed.", Toast.LENGTH_SHORT).show();
            return;
        }
    
        startActivity(whatsappIntent);
    }
    

    One more way to achieve the same

    private void shareDirecctToSingleWhatsAppUser(String message) {
    
        /**
         * NOTE:
         * Message is shared with only one user at a time. and to navigate back to main application user need to click back button
         */
    
        //Directly send to specific mobile number...
        String smsNumber = "919900000000";//Intended user`s mobile number with country code & with out '+'
    
        PackageManager packageManager = getPackageManager();
        Intent i = new Intent(Intent.ACTION_VIEW);
    
        try {
            String url = "https://api.whatsapp.com/send?phone="+ smsNumber +"&text=" + URLEncoder.encode("Test Message!", "UTF-8");
            i.setPackage("com.whatsapp");
            i.setData(Uri.parse(url));
            if (i.resolveActivity(packageManager) != null) {
                startActivity(i);
            }
        } catch (Exception e){
            e.printStackTrace();
        }
    }
    
    0 讨论(0)
  • 2020-12-02 18:28

    This is the best way to send Message through Whatsapp to specific number or unsaved number

    private void openWhatsApp() {
        String smsNumber = "252634651588";
        boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp");
        if (isWhatsappInstalled) {
    
            Intent sendIntent = new Intent("android.intent.action.MAIN");
            sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation"));
            sendIntent.putExtra("jid", PhoneNumberUtils.stripSeparators(smsNumber) + "@s.whatsapp.net");//phone number without "+" prefix
    
            startActivity(sendIntent);
        } else {
            Uri uri = Uri.parse("market://details?id=com.whatsapp");
            Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
            Toast.makeText(getContext(), "WhatsApp not Installed",
                    Toast.LENGTH_SHORT).show();
            startActivity(goToMarket);
        }
    }
    
    private boolean whatsappInstalledOrNot(String uri) {
        PackageManager pm = Objects.requireNonNull(getContext()).getPackageManager();
        boolean app_installed = false;
        try {
            pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
            app_installed = true;
        } catch (PackageManager.NameNotFoundException e) {
            app_installed = false;
        }
        return app_installed;
    }
    
    0 讨论(0)
  • 2020-12-02 18:29

    Try using Intent.EXTRA_TEXT instead of sms_body as your extra key. Per WhatsApp's documentation, this is what you have to use.

    An example from their website:

    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);
    

    Their example uses Intent.ACTION_SEND instead of Intent.ACTION_SENDTO, so I'm not sure if WhatsApp even supports sending directly to a contact via the intent system. Some quick testing should let you determine that.

    0 讨论(0)
  • 2020-12-02 18:32

    Try this code

    Uri uri = Uri.parse("smsto:" + "+6281122xxx");
    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
    i.putExtra(Intent.EXTRA_TEXT, getResources().getString(R.string.default_message_wa));
    i.setPackage("com.whatsapp");
    startActivity(Intent.createChooser(i, ""));
    

    You can't put string directly on putExtra like this

    i.putExtra(Intent.EXTRA_TEXT, "YOUR TEXT");
    

    Change your code and get string from resource like this

    i.putExtra(Intent.EXTRA_TEXT, getResources().getString(R.string.default_message_wa));
    
    0 讨论(0)
提交回复
热议问题