GB_Bhayani ツ
GB_Bhayani ツ

Reputation: 368

How can I share text in what's app on particular Number

Using this code only open particulat number's chat but Text is not share.How can I do this?

public class MainActivity extends AppCompatActivity {
Button Wa;
String id = "+919000000000";
EditText txt;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    txt = (EditText)findViewById(R.id.editText);
    Wa = (Button)findViewById(R.id.btn_whatsapp);
    Wa.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Uri uri = Uri.parse("smsto:" + id);
            Intent waIntent = new Intent(Intent.ACTION_SENDTO,uri);

            String text = "testing message";
            waIntent.setPackage("com.whatsapp");
            if (waIntent != null) {
                waIntent.putExtra(Intent.EXTRA_TEXT, text);
                startActivity(Intent.createChooser(waIntent, text));
            } else {
                Toast.makeText(getApplicationContext(), "WhatsApp not found", Toast.LENGTH_SHORT)
                        .show();
            }

         }
    });

}

Upvotes: 8

Views: 668

Answers (4)

user3248458
user3248458

Reputation: 9

Try something like this:

public class MainActivity extends AppCompatActivity {
    Button Wa;
    String id = "+919000000000";
    EditText txt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        txt = (EditText)findViewById(R.id.editText);
        Wa = (Button)findViewById(R.id.btn_whatsapp);
        Wa.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                PackageManager pm=getPackageManager();
                try {
                    Uri uri = Uri.parse("smsto:" + number);
                    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
                    waIntent.setType("text/plain");
                    String text = "testing message";

                    PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
                    waIntent.setPackage("com.whatsapp");
                    waIntent.putExtra(Intent.EXTRA_TEXT, text);
                    startActivity(Intent.createChooser(waIntent, text));
                }   
                catch (NameNotFoundException e) {
                    Toast.makeText(this, "WhatsApp not found", Toast.LENGTH_SHORT).show();
                }  
             }
        });
    }
}

Upvotes: 0

Manan Sharma
Manan Sharma

Reputation: 631

Answer from Here

Earlier it wasn't possible but since the May '15 update. Checkout :

try{
    PackageInfo info = pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    String sendString = "some random string";
    sendIntent.setPackage("com.whatsapp");
    sendIntent.putExtra(Intent.EXTRA_TEXT, sendString);
    sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    sendIntent.setType("image/*");
    startActivity(sendIntent);
} catch (Exception e){
    // some code
}

Here PackageInfo line is just to check if WhatsApp is installed. It throws Exception if not. You can just ignore that if you want to do a normal share (and setPackage also).

Also. It is important that the media you want to share has to be publicly available on local storage.

UPDATE

To send to a specific contact

Uri uri = Uri.parse("smsto:" + "<CONTACT_NUMBER>");
Intent i = new Intent(Intent.ACTION_SENDTO, uri);
i.putExtra(Intent.EXTRA_TEXT, whatsAppMessage);

As Action Send To is now allowed.

Upvotes: 0

N J
N J

Reputation: 27535

Please go through this stackoverflow links

  1. Sending message through WhatsApp
  2. Send text to specific contact

It seems that WhatsApp still does't have supported this fetaure. You can only open chat history for particular number using below code

try {
            Uri mUri = Uri.parse("smsto:+98xxxxxxxx");
            Intent mIntent = new Intent(Intent.ACTION_SENDTO, mUri);
            mIntent.setPackage("com.whatsapp");

//            mIntent.putExtra("sms_body", "My body");
            mIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");

            startActivity(mIntent);
        } catch (Exception e) {
          // alert WhatsApp in not installed
        }

Upvotes: 0

Let&#39;sRefactor
Let&#39;sRefactor

Reputation: 3346

Since you trying to achieve it as "smsto:", "text/plain" as type will help you. Try Extra as "sms_body" if it won't help.

Uri uri = Uri.parse("smsto:" + id);
Intent waIntent = new Intent(Intent.ACTION_SENDTO,uri);
String text = "testing message";
waIntent.setPackage("com.whatsapp");
if (waIntent != null) {
    waIntent.setType("text/plain");
    //waIntent.putExtra(Intent.EXTRA_TEXT, text);
    waIntent.putExtra("sms_body", text); 
    startActivity(Intent.createChooser(waIntent, text));
} else {
    Toast.makeText(getApplicationContext(), "WhatsApp not found", Toast.LENGTH_SHORT)
            .show();
}

Upvotes: 1

Related Questions