ส่งข้อความผ่าน WhatsApp


112

เนื่องจากฉันพบโพสต์เก่า ๆ ที่บอกว่า whatsapp ไม่รองรับสิ่งนี้ฉันจึงสงสัยว่ามีอะไรเปลี่ยนแปลงหรือไม่และมีวิธีเปิด 'แชท' ของ whatsapp ด้วยหมายเลขที่ฉันส่งผ่านความตั้งใจหรือไม่?


คุณได้ลองแบ่งปันผู้ให้บริการการดำเนินการหรือไม่
Basim Sherif

ฟังดูน่าสนใจ แต่จะได้ผลอย่างไร ฉันสามารถแชร์สตริง (หมายเลขโทรศัพท์) และจะเปิด whatsapp (หรือตัวเลือกได้หรือไม่) คุณสามารถยกตัวอย่างเล็กน้อยได้หรือไม่?
Diego

2
แม้ว่าจะมี ACTION_SENDTO เจตนาใน whatsapp แต่ก็ไม่ได้ดำเนินการ (อย่างถูกต้อง) ดังนั้นจึงไม่สามารถดำเนินการกับหมายเลขโทรศัพท์ที่เฉพาะเจาะจงได้ [นั่นคือสิ่งที่ฉันพบ]
Manan Sharma


ฉันยังคงรอคอยที่จะแนบทั้งรูปภาพและข้อความในเวลาเดียวกัน แต่ไม่พบว่าโชคดีถอนหายใจ :(
gumuruh

คำตอบ:


180

อัปเดต โปรดดูที่https://faq.whatsapp.com/en/android/26000030/?category=5245251

คุณสมบัติคลิกเพื่อแชทของ WhatsApp ช่วยให้คุณสามารถเริ่มแชทกับใครบางคนได้โดยไม่ต้องบันทึกหมายเลขโทรศัพท์ไว้ในสมุดที่อยู่ในโทรศัพท์ของคุณ ตราบใดที่คุณทราบหมายเลขโทรศัพท์ของบุคคลนี้คุณสามารถสร้างลิงก์ที่จะช่วยให้คุณเริ่มแชทกับพวกเขาได้

ใช้: https://wa.me/15551234567

อย่าใช้: https://wa.me/+001-(555)1234567

ตัวอย่าง: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale

คำตอบเดิม นี่คือคำตอบ

public void onClickWhatsApp(View view) {

    PackageManager pm=getPackageManager();
    try {

        Intent waIntent = new Intent(Intent.ACTION_SEND);
        waIntent.setType("text/plain");
        String text = "YOUR TEXT HERE";

        PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA);
        //Check if package exists or not. If not then code 
        //in catch block will be called
        waIntent.setPackage("com.whatsapp");

        waIntent.putExtra(Intent.EXTRA_TEXT, text);
        startActivity(Intent.createChooser(waIntent, "Share with"));

   } catch (NameNotFoundException e) {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
   }  

}

โปรดดูที่http://www.whatsapp.com/faq/en/android/28000012


จะรวมเข้ากับการส่งข้อความได้อย่างไร? เพื่อให้ผู้ใช้สามารถเลือก whatsapp หรือการส่งข้อความ
Srikanth Pai

34
หากเรามีข้อมูลติดต่ออยู่แล้วสามารถเพิ่มข้อมูลติดต่อและส่งข้อความได้โดยไม่ต้องแตะที่รายชื่อเพื่อเลือกและคลิกตกลงเพื่อส่ง ??
user1492955


4
ที่มา @MananMerevikSharma ไม่โกหก ( android.googlesource.com/platform/frameworks/base/+/refs/heads/… ). นอกจากนี้หลักการพื้นฐานของ Java: ออบเจ็กต์จะมีชีวิตอยู่จนกว่าจะไม่มีการอ้างอิงใด ๆ อีกต่อไป
JRomero

1
@MananMerevikSharma -1. มันไม่ "เปลี่ยนเป็นตัวชี้โมฆะ" ส่วนอื่นไม่สามารถเข้าถึงได้ เมื่อไม่ได้ติดตั้ง WhatsApp Intent จะยังคงถูกส่ง แต่กล่องโต้ตอบจะเปิดขึ้นโดยแจ้งว่าไม่มีแอปที่ตรงกัน ซึ่งหมายความว่าคุณไม่ได้ให้วิธีใด ๆ ในการตรวจสอบว่ามีการติดตั้ง WhatsApp หรือไม่
0101100101

64

ด้วยรหัสนี้คุณสามารถเปิดแชท whatsapp ด้วยหมายเลขที่กำหนด

void openWhatsappContact(String number) {
    Uri uri = Uri.parse("smsto:" + number);
    Intent i = new Intent(Intent.ACTION_SENDTO, uri);
    i.setPackage("com.whatsapp");  
    startActivity(Intent.createChooser(i, ""));
}

3
@ user2957782 ฉันติดตามคุณชายคนนี้ แต่เมื่อฉันคลิกที่ปุ่มเพื่อเริ่ม whatsapp ของฉันมันขึ้นว่า "ไม่มีแอปใดสามารถดำเนินการนี้ได้"
arjun narahari

@VihaanVerma คุณสามารถแบ่งปันวิธีการทำงานนี้ได้หรือไม่? ฉันใช้รหัสเดียวกันกับ whatsapp เวอร์ชัน 2.11.56021 และไม่ได้รับอะไรเลย ...
Alamgir Mand

1
ตรวจสอบแล้วระบบจะส่งฉันไปยังรายการแชททั้งหมดไม่ใช่หน้าต่างแชทของหมายเลขใดหมายเลขหนึ่ง
Darpan

8
ใช้งานได้ก็ต่อเมื่อคุณมีหมายเลขนั้นในรายการแชทหรือรายชื่อผู้ติดต่อ
Anshul Tyagi

1
แทนที่จะstartActivity(Intent.createChooser(i, ""));ใช้startActivity(i);สำหรับการแชทแบบเปิดที่ให้ไว้โดยตรง 1. ทดสอบกับ Samsung J7 prime มันใช้งานได้ 2. หมายเลขไม่อยู่ในรายชื่อผู้ติดต่อของฉันและไม่อยู่ในรายชื่อแชทของฉัน 3. หากหมายเลขไม่ได้ใช้ whatsapp กล่องโต้ตอบจะปรากฏขึ้นเพื่อถามฉันว่าฉันต้องการเชิญผู้ติดต่อนั้นใน whatsapp ฉันคิดว่านี่เป็นทางออกที่ดีที่สุดหากคุณต้องการให้การสนับสนุนติดต่อ whatsapp สำหรับผู้ใช้แอปของคุณ
Muhammad Saqib

25

ฉันพบวิธีแก้ปัญหาต่อไปนี้ก่อนอื่นคุณต้องมีรหัส whatsapp:

การจับคู่กับรายงานจากเธรดอื่น ๆ ที่นี่และในฟอรัมอื่น ๆ ชื่อล็อกอินที่ฉันพบคือรหัสพื้นที่ระหว่างประเทศที่ไม่มี 0 หรือ + ในตอนต้น + หมายเลขโทรศัพท์โดยไม่มี 0 + @ s.whatsapp.net แรก

ตัวอย่างเช่นหากคุณอาศัยอยู่ในเนเธอร์แลนด์และมีหมายเลขโทรศัพท์ 0612325032 ก็จะเป็น 31612325023@s.whatsapp.net -> +31 สำหรับเนเธอร์แลนด์โดยไม่มี 0 หรือ + และหมายเลขโทรศัพท์ที่ไม่มี 0

public void sendWhatsAppMessageTo(String whatsappid) {

Cursor c = getSherlockActivity().getContentResolver().query(ContactsContract.Data.CONTENT_URI,
        new String[] { ContactsContract.Contacts.Data._ID }, ContactsContract.Data.DATA1 + "=?",
        new String[] { whatsappid }, null);
c.moveToFirst();

Intent whatsapp = new Intent(Intent.ACTION_VIEW, Uri.parse("content://com.android.contacts/data/" + c.getString(0)));
c.close();

 if (whatsapp != null) {

startActivity(whatsapp);      

} else {
        Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT)
                .show();
//download for example after dialog
                Uri uri = Uri.parse("market://details?id=com.whatsapp");
                Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    }

}

ฉันกำลังลองใช้รหัสนี้ แต่มันบอกว่า getSherlockActivity () ไม่ได้กำหนด แก้ยังไง ??
Eman87

2
@ Eman87 Diego ใช้ Action Bar Sherlock ดังนั้นวิธีการนี้ กำหนดขอบเขตกิจกรรมของคุณแทน getSherlockActivity ()
นันชาร์

4
มีจุดในการไม่เป็นif (whatsapp != null)เป็น 2 Intent whatsapp = new Intent(...)สายดังกล่าวข้างต้นที่คุณทำ
คาร์กามาโน

2
นี่เป็นตัวเลือกที่ดีในการเปิดหน้าต่างแชทโดยตรงหากบุคคลนั้นอยู่ในรายชื่อติดต่อ มีวิธีทำเช่นเดียวกันสำหรับหมายเลขใหม่ที่ไม่มีอยู่ในรายชื่อติดต่อของเราหรือไม่?
โมฮัมเหม็ด Yakub Moriswala

1
คุณต้องเพิ่มการ <uses-permission android:name="android.permission.READ_CONTACTS" />อนุญาตในAndroidManifest.xml
Pratik Butani

16

สิ่งนี้ควรใช้งานได้ไม่ว่าจะติดตั้ง Whatsapp หรือไม่

boolean isWhatsappInstalled = whatsappInstalledOrNot("com.whatsapp");
if (isWhatsappInstalled) {
    Uri uri = Uri.parse("smsto:" + "98*********7")
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Hai Good Morning");
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
} else {
    Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT).show();
    Uri uri = Uri.parse("market://details?id=com.whatsapp");
    Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
    startActivity(goToMarket);

}

private boolean whatsappInstalledOrNot(String uri) {
    PackageManager pm = 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;
}

11
กิจกรรม Not Fount exeption แม้ในขณะที่ติดตั้ง whatsapp
itzhar

2
ไม่พบกิจกรรมที่จะจัดการกับเจตนา {act = android.intent.action.SENDTO typ = text / plain pkg = com.whatsapp (has extras)}
Rajesh

2
คุณต้องลบบรรทัดนี้เพื่อใช้กับ sendIntent.setType ("text / plain");
MSaudi

2
การลบ sendIntent.setType ("text / plain") จะดูแลไม่ให้เกิด Activity Not Found exeption แต่ตอนนี้ไม่ได้เพิ่มข้อความเป็นข้อความ
Rik van Velzen

ดูเหมือนจะเป็นไปไม่ได้อีกต่อไปแล้วกิจกรรมที่ได้รับความตั้งใจมีการอ้างอิงถึง "sms_body" แต่ฉันไม่สามารถดำเนินการได้
sherpya

15

วิธีง่ายๆลองทำตามนี้

String phoneNumberWithCountryCode = "+62820000000";
String message = "Hallo";

startActivity(
    new Intent(Intent.ACTION_VIEW,
        Uri.parse(
            String.format("https://api.whatsapp.com/send?phone=%s&text=%s", phoneNumberWithCountryCode, message)
        )
    )
);

10

ทดสอบกับMarshmallow S5แล้วใช้งานได้จริง!

    Uri uri = Uri.parse("smsto:" + "phone number with country code");
    Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent); 

สิ่งนี้จะเปิดการแชทโดยตรงกับบุคคลหากไม่ได้ติดตั้ง whatsapp สิ่งนี้จะทำให้เกิดข้อยกเว้นหาก whatsapp ไม่รู้จักหมายเลขโทรศัพท์พวกเขาจะเสนอให้ส่งคำเชิญทาง SMS หรือข้อความ SMS ธรรมดา


แล้ว 'ปุ่มส่ง' ล่ะ? เราสามารถทำแบบเป็นโปรแกรมได้เช่นกัน ... ?
gumuruh

3

แอป Google Now ใช้รหัสต่อไปนี้และจะใช้ไม่ได้กับแอปพลิเคชันอื่น ๆ

ฉันเขียนโพสต์นี้เพราะมันทำให้ฉันโกรธ WhatsApp ไม่อนุญาตให้นักพัฒนารายอื่นส่งข้อความโดยตรงยกเว้น Google

และฉันต้องการให้นักพัฒนาอิสระคนอื่น ๆ รู้ว่าความร่วมมือแบบนี้กำลังเกิดขึ้นในขณะที่ Google ยังคงพูดถึง "เปิดให้ใครก็ได้" และ WhatsApp บอกว่าพวกเขาไม่ต้องการให้นักพัฒนาสามารถเข้าถึงได้

เมื่อเร็ว ๆ นี้ WhatsApp ได้เพิ่ม Intent เป็นพิเศษสำหรับ Google Now ซึ่งควรมีลักษณะดังนี้:

Intent intent = new Intent("com.google.android.voicesearch.SEND_MESSAGE_TO_CONTACTS");
intent.setPackage("com.whatsapp");
intent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.VoiceMessagingActivity"));

intent.putExtra("com.google.android.voicesearch.extra.RECIPIENT_CONTACT_CHAT_ID", number);
intent.putExtra("android.intent.extra.TEXT", text);
intent.putExtra("search_action_token", ?????);

ฉันยังพบว่า "search_action_token" เป็น PendingIntent ที่มี IBinder-Object ซึ่งจะถูกส่งกลับไปยัง Google App และตรวจสอบว่า Google Now สร้างขึ้นหรือไม่

มิฉะนั้น WhatsApp จะไม่ยอมรับข้อความ


น่าสนใจ! แต่คุณสามารถอธิบายเพิ่มเติมเกี่ยวกับ "search_action_token" ว่าเราจะรับและนำไปใช้ได้อย่างไร
Bilal Mustafa

APK com.google.android.googlequicksearchbox Class com.google.android.search.verification.api.SearchActionVerificationService Method createGoogleVerificationIntent
black-hawk

3

ปัจจุบันAPI อย่างเป็นทางการเพียงหนึ่งเดียวที่คุณสามารถGETร้องขอได้:

https://api.whatsapp.com/send?phone=919773207706&text=Hello

อย่างไรก็ตามมีโปรแกรม API ลับที่ WhatsApp ดำเนินการอยู่แล้ว


1
แม้ว่าลิงก์นี้อาจตอบคำถามได้ แต่ควรรวมส่วนสำคัญของคำตอบไว้ที่นี่และระบุลิงก์เพื่อการอ้างอิง คำตอบแบบลิงก์เท่านั้นอาจไม่ถูกต้องหากหน้าที่เชื่อมโยงเปลี่ยนไป - จากรีวิว
Kumar Saurabh

1
@KumarSaurabh นี่ไม่ใช่ลิงค์ แต่เป็นการขอ GET
Zameer

3

ใช้รหัสบรรทัดเดียวนี้เพื่อส่งข้อความผ่าน WhatsApp

//NOTE : please use with country code first 2digits without plus signed
try {
      String mobile = "911234567890";
      String msg = "Its Working";
      startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://api.whatsapp.com/send?phone=" + mobile + "&text=" + msg)));
      }catch (Exception e){
        //whatsapp app not install
     }

2

สิ่งนี้ใช้ได้กับฉัน:

PackageManager pm = context.getPackageManager();
try {
    pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
    Intent intent = new Intent();
            intent.setComponent(new ComponentName(packageName,
                    ri.activityInfo.name));
            intent.setType("text/plain");
            intent.putExtra(Intent.EXTRA_TEXT, element);

} catch (NameNotFoundException e) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}

2

นี่คือสิ่งที่ใช้ได้ผลสำหรับฉัน:

        Uri uri = Uri.parse("https://api.whatsapp.com/send?phone=" + "<number>" + "&text=" + "Hello WhatsApp!!");
        Intent sendIntent = new Intent(Intent.ACTION_VIEW, uri);
        startActivity(sendIntent);


1

มันยาวมาก แต่ใช้งานได้ดี สนุกกับรหัสของคุณ :)

 //method used to show IMs
private void show_custom_chooser(String value) {
    List<ResolveInfo> list = null;
    final Intent email = new Intent(Intent.ACTION_SEND);
    email.setData(Uri.parse("sms:"));
    email.putExtra(Intent.EXTRA_TEXT, "" + value);
    email.setType("text/plain"); // vnd.android-dir/mms-sms

    WindowManager.LayoutParams WMLP = dialogCustomChooser.getWindow()
            .getAttributes();
    WMLP.gravity = Gravity.CENTER;
    dialogCustomChooser.getWindow().setAttributes(WMLP);
    dialogCustomChooser.getWindow().setBackgroundDrawable(
            new ColorDrawable(android.graphics.Color.TRANSPARENT));
    dialogCustomChooser.setCanceledOnTouchOutside(true);
    dialogCustomChooser.setContentView(R.layout.about_dialog);
    dialogCustomChooser.setCancelable(true);
    ListView lvOfIms = (ListView) dialogCustomChooser
            .findViewById(R.id.listView1);
    PackageManager pm = getPackageManager();
    List<ResolveInfo> launchables = pm.queryIntentActivities(email, 0);
    // ////////////new
    list = new ArrayList<ResolveInfo>();
    for (int i = 0; i < launchables.size(); i++) {
        String string = launchables.get(i).toString();
        Log.d("heh", string);
//check only messangers
        if (string.contains("whatsapp")) {
            list.add(launchables.get(i));
        }
    }
    Collections.sort(list, new ResolveInfo.DisplayNameComparator(pm));
    int size = launchables.size();
    adapter = new AppAdapter(pm, list, MainActivity.this);
    lvOfIms.setAdapter(adapter);
    lvOfIms.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1,
                int position, long arg3) {
            ResolveInfo launchable = adapter.getItem(position);
            ActivityInfo activity = launchable.activityInfo;
            ComponentName name = new ComponentName(
                    activity.applicationInfo.packageName, activity.name);
            email.addCategory(Intent.CATEGORY_LAUNCHER);
            email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                    | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            email.setComponent(name);
            startActivity(email);
            dialogCustomChooser.dismiss();
        }
    });
    dialogCustomChooser.show();

}

1

ฉันมาสายจริงๆ แต่ฉันเชื่อว่าทุกวันนี้เรามีทางเลือกที่สั้นและดีกว่าในการส่งข้อความผ่าน WhatsApp

คุณสามารถใช้สิ่งต่อไปนี้เพื่อเรียกตัวเลือกระบบจากนั้นเลือกแอปที่คุณจะใช้เพื่อแชร์สิ่งที่คุณต้องการ

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

หากคุณจำเป็นต้องส่งผ่าน WhatsApp จริงๆสิ่งที่คุณต้องทำมีดังต่อไปนี้ (คุณจะข้ามเครื่องมือเลือกระบบ)

 Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.setType("text/plain");
    // Put this line here
    sendIntent.setPackage("com.whatsapp");
    //
    startActivity(sendIntent);

หากคุณต้องการข้อมูลเพิ่มเติมคุณสามารถค้นหาได้ที่นี่: คำถามที่พบบ่อย WhatsApp


1

ตามที่เอกสารระบุว่าคุณสามารถใช้ URL เช่น:

https://wa.me/15551234567

โดยที่ส่วนสุดท้ายคือตัวเลขในรูปแบบ E164

Uri uri = Uri.parse("https://wa.me/15551234567");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);

1
private fun sendWhatsappMessage(phoneNumber:String, text:String) {        
  val url = if (Intent().setPackage("com.whatsapp").resolveActivity(packageManager) != null) {
        "whatsapp://send?text=Hello&phone=$phoneNumber"
    } else {
        "https://api.whatsapp.com/send?phone=$phoneNumber&text=$text"
    }

    val browserIntent = Intent(Intent.ACTION_VIEW, Uri.parse(url))
    startActivity(browserIntent)
}

นี่เป็นวิธีที่ง่ายกว่ามากในการบรรลุเป้าหมายนี้ รหัสนี้จะตรวจสอบว่ามีการติดตั้ง whatsapp บนอุปกรณ์หรือไม่ หากมีการติดตั้งระบบจะข้ามตัวเลือกระบบและไปที่ผู้ติดต่อใน whatsapp และกำหนดข้อความในแชทไว้ล่วงหน้า หากไม่ได้ติดตั้งจะเปิดลิงค์ whatsapp บนเว็บเบราว์เซอร์ของคุณ


1

คุณจะต้องใช้ URL ในรูปแบบต่อไปนี้ ...

https://api.whatsapp.com/send?text=text

จากนั้นคุณสามารถส่งข้อความใดก็ได้ที่คุณต้องการ คุณยังมีตัวเลือกในการระบุหมายเลขโทรศัพท์ ...

https://api.whatsapp.com/send?text=text&phone=1234

สิ่งที่คุณไม่สามารถทำได้คือใช้สิ่งต่อไปนี้:

https://wa.me/send?text=text

คุณจะได้รับ ...

เราไม่พบหน้าที่คุณกำลังค้นหา

wa.meแม้ว่าจะใช้งานได้หากคุณระบุทั้งหมายเลขโทรศัพท์และข้อความ แต่ส่วนใหญ่แล้วหากคุณพยายามสร้างลิงก์สำหรับแชร์คุณไม่ต้องการระบุหมายเลขโทรศัพท์เพราะคุณต้องการให้ผู้ใช้เลือกใครสักคน ในกรณีนั้นหากคุณไม่ระบุหมายเลขและใช้wa.meเป็น URL ลิงก์สำหรับแชร์ทั้งหมดของคุณจะล้มเหลว กรุณาใช้app.whatsapp.com.


0

ตรวจสอบรหัสนี้

    public void share(String subject,String text) {
     final Intent intent = new Intent(Intent.ACTION_SEND);

String score=1000;
     intent.setType("text/plain");
     intent.putExtra(Intent.EXTRA_SUBJECT, score);
     intent.putExtra(Intent.EXTRA_TEXT, text);

     startActivity(Intent.createChooser(intent, getString(R.string.share)));
}

0

สิ่งนี้ใช้ได้กับฉัน:

public static void shareWhatsApp(Activity appActivity, String texto) {

    Intent sendIntent = new Intent(Intent.ACTION_SEND);     
    sendIntent.setType("text/plain");
    sendIntent.putExtra(android.content.Intent.EXTRA_TEXT, texto);

    PackageManager pm = appActivity.getApplicationContext().getPackageManager();
    final List<ResolveInfo> matches = pm.queryIntentActivities(sendIntent, 0);
    boolean temWhatsApp = false;
    for (final ResolveInfo info : matches) {
      if (info.activityInfo.packageName.startsWith("com.whatsapp"))  {
          final ComponentName name = new ComponentName(info.activityInfo.applicationInfo.packageName, info.activityInfo.name);
          sendIntent.addCategory(Intent.CATEGORY_LAUNCHER);
          sendIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_NEW_TASK);
          sendIntent.setComponent(name);
          temWhatsApp = true;
          break;
      }
    }               

    if(temWhatsApp) {
        //abre whatsapp
        appActivity.startActivity(sendIntent);
    } else {
        //alerta - você deve ter o whatsapp instalado
        Toast.makeText(appActivity, appActivity.getString(R.string.share_whatsapp), Toast.LENGTH_SHORT).show();
    }
}

0

รับหมายเลขติดต่อที่คุณต้องการส่งข้อความและสร้าง uri สำหรับ whatsapp ที่นี่ c คือเคอร์เซอร์ส่งคืนผู้ติดต่อที่เลือก

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

0

จากเอกสารประกอบ

หากต้องการสร้างลิงก์ของคุณเองพร้อมข้อความที่กรอกไว้ล่วงหน้าซึ่งจะปรากฏในช่องข้อความของการแชทโดยอัตโนมัติให้ใช้ https://wa.me/whatsappphonenumber/?text=urlencodedtextโดยที่ whatsappphonenumber เป็นหมายเลขโทรศัพท์แบบเต็มในรูปแบบสากลและ URL -encodedtext คือข้อความที่กรอกไว้ล่วงหน้าที่เข้ารหัส URL

ตัวอย่าง: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale

ตัวอย่างโค้ด

val phoneNumber = "13492838472"
    val text = "Hey, you know... I love StackOverflow :)"
    val uri = Uri.parse("https://wa.me/$phoneNumber/?text=$text")
    val sendIntent = Intent(Intent.ACTION_VIEW, uri)
    startActivity(sendIntent)

-1

API ที่ต่อไปนี้สามารถนำมาใช้ใน c ++ ตามที่ปรากฏในบทความของฉัน

คุณต้องกำหนดค่าคงที่หลายค่า:

//
#define    GroupAdmin                <YOUR GROUP ADMIN MOBILE PHONE>
#define GroupName                <YOUR GROUP NAME>
#define CLIENT_ID                <YOUR CLIENT ID>
#define CLIENT_SECRET            <YOUR CLIENT SECRET>

#define GROUP_API_SERVER        L"api.whatsmate.net"
#define GROUP_API_PATH          L"/v3/whatsapp/group/text/message/12"
#define IMAGE_SINGLE_API_URL    L"http://api.whatsmate.net/v3/whatsapp/group/image/message/12"

//

จากนั้นคุณเชื่อมต่อกับปลายทางของ API

hOpenHandle = InternetOpen(_T("HTTP"), INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
if (hOpenHandle == NULL)
{
    return false;
}

hConnectHandle = InternetConnect(hOpenHandle,
    GROUP_API_SERVER,
    INTERNET_DEFAULT_HTTP_PORT,
    NULL, NULL, INTERNET_SERVICE_HTTP,
    0, 1);

if (hConnectHandle == NULL)
{
    InternetCloseHandle(hOpenHandle);
    return false;
}

จากนั้นส่งทั้งส่วนหัวและเนื้อหาและรอผลที่ต้องเป็น "OK"

ขั้นตอนที่ 1 - เปิดคำขอ HTTP:

const wchar_t *AcceptTypes[] = { _T("application/json"),NULL };
HINTERNET hRequest = HttpOpenRequest(hConnectHandle, _T("POST"), GROUP_API_PATH, NULL, NULL, AcceptTypes, 0, 0);

if (hRequest == NULL)
{
    InternetCloseHandle(hConnectHandle);
    InternetCloseHandle(hOpenHandle);
    return false;
}

ขั้นตอนที่ 2 - ส่งส่วนหัว:

std::wstring HeaderData;

HeaderData += _T("X-WM-CLIENT-ID: ");
HeaderData += _T(CLIENT_ID);
HeaderData += _T("\r\nX-WM-CLIENT-SECRET: ");
HeaderData += _T(CLIENT_SECRET);
HeaderData += _T("\r\n");
HttpAddRequestHeaders(hRequest, HeaderData.c_str(), HeaderData.size(), NULL);

ขั้นตอนที่ 3 - ส่งข้อความ:

std::wstring WJsonData;
WJsonData += _T("{");
WJsonData += _T("\"group_admin\":\"");
WJsonData += groupAdmin;
WJsonData += _T("\",");
WJsonData += _T("\"group_name\":\"");
WJsonData += groupName;
WJsonData += _T("\",");
WJsonData += _T("\"message\":\"");
WJsonData += message;
WJsonData += _T("\"");
WJsonData += _T("}");

const std::string JsonData(WJsonData.begin(), WJsonData.end());

bResults = HttpSendRequest(hRequest, NULL, 0, (LPVOID)(JsonData.c_str()), JsonData.size());

ตอนนี้ตรวจสอบผลลัพธ์:

TCHAR StatusText[BUFFER_LENGTH] = { 0 };
DWORD StatusTextLen = BUFFER_LENGTH;
HttpQueryInfo(hRequest, HTTP_QUERY_STATUS_TEXT, &StatusText, &StatusTextLen, NULL);
bResults = (StatusTextLen && wcscmp(StatusText, L"OK")==FALSE);
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.