Karena saya menemukan beberapa posting lama, yang mengatakan bahwa whatsapp tidak mendukung ini, saya bertanya-tanya apakah ada yang berubah dan apakah ada cara untuk membuka 'obrolan' whatsapp dengan nomor yang saya kirim melalui maksud?
Karena saya menemukan beberapa posting lama, yang mengatakan bahwa whatsapp tidak mendukung ini, saya bertanya-tanya apakah ada yang berubah dan apakah ada cara untuk membuka 'obrolan' whatsapp dengan nomor yang saya kirim melalui maksud?
Jawaban:
PEMBARUAN Silakan merujuk ke https://faq.whatsapp.com/en/android/26000030/?category=5245251
Fitur Klik untuk Mengobrol di WhatsApp memungkinkan Anda untuk memulai obrolan dengan seseorang tanpa menyimpan nomor teleponnya di buku alamat telepon Anda. Selama Anda mengetahui nomor telepon orang ini, Anda dapat membuat tautan yang memungkinkan Anda memulai obrolan dengannya.
Gunakan: https://wa.me/15551234567
Jangan gunakan: https://wa.me/+001-(555)1234567
Contoh: https://wa.me/15551234567?text=I 'm% 20interested% 20in% 20your% 20car% 20for% 20sale
Jawaban asli Inilah solusinya
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();
}
}
Dengan kode ini Anda dapat membuka obrolan whatsapp dengan nomor yang diberikan.
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, ""));
}
startActivity(Intent.createChooser(i, ""));
digunakan startActivity(i);
untuk langsung membuka obrolan nomor yang disediakan. 1. Diuji pada Samsung J7 prime itu bekerja. 2. nomor tidak ada dalam daftar kontak saya maupun dalam daftar obrolan saya. 3. jika nomor tidak menggunakan whatsapp, sebuah kotak dialog muncul menanyakan saya apakah saya ingin mengundang kontak itu di whatsapp. Saya pikir ini adalah solusi terbaik jika Anda ingin memberikan dukungan kontak whatsapp untuk pengguna aplikasi Anda.
Saya menemukan solusi berikut, pertama-tama Anda memerlukan id whatsapp:
Sesuai dengan laporan dari beberapa utas lain di sini dan di forum lain, nama login yang saya temukan adalah semacam: kode area internasional tanpa 0 atau + di awal + nomor telepon tanpa 0 + @ s.whatsapp.net pertama
Misalnya jika Anda tinggal di Belanda dan memiliki nomor telepon 0612325032 maka akan menjadi 31612325023@s.whatsapp.net -> +31 untuk Belanda tanpa 0 atau + dan nomor telepon tanpa 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);
}
}
if (whatsapp != null)
seperti 2 baris di atas yang Anda lakukan Intent whatsapp = new Intent(...)
.
<uses-permission android:name="android.permission.READ_CONTACTS" />
izin diAndroidManifest.xml
Ini harus berfungsi baik Whatsapp diinstal atau tidak.
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;
}
Solusi sederhana, coba ini.
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)
)
)
);
Diuji di Marshmallow S5 dan berhasil!
Uri uri = Uri.parse("smsto:" + "phone number with country code");
Intent sendIntent = new Intent(Intent.ACTION_SENDTO, uri);
sendIntent.setPackage("com.whatsapp");
startActivity(sendIntent);
Ini akan membuka obrolan langsung dengan seseorang, jika whatsapp tidak diinstal ini akan menimbulkan pengecualian , jika nomor telepon tidak diketahui whatsapp mereka akan menawarkan untuk mengirim undangan melalui sms atau pesan sms sederhana
Kode berikut digunakan oleh Aplikasi Google Now dan TIDAK akan berfungsi untuk aplikasi lain.
Saya menulis posting ini karena itu membuat saya marah, bahwa WhatsApp tidak mengizinkan pengembang lain untuk mengirim pesan secara langsung kecuali Google.
Dan saya ingin pengembang lepas lainnya tahu, bahwa kerja sama semacam ini sedang berlangsung, sementara Google terus berbicara tentang "terbuka untuk siapa saja" dan WhatsApp mengatakan mereka tidak ingin memberikan akses apa pun kepada pengembang.
Baru-baru ini WhatsApp menambahkan Intent khusus untuk Google Now, yang akan terlihat seperti berikut:
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", ?????);
Saya juga bisa mengetahui bahwa "search_action_token" adalah PendingIntent yang berisi IBinder-Object, yang dikirim kembali ke Google App dan diperiksa, jika dibuat oleh Google Now.
Jika tidak, WhatsApp tidak akan menerima pesan tersebut.
Saat ini, satu-satunya API resmi yang dapat Anda GET
minta untuk:
https://api.whatsapp.com/send?phone=919773207706&text=Hello
Bagaimanapun, ada program API rahasia yang sudah dijalankan oleh 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
}
Ini bekerja untuk saya:
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.");
}
Gunakan URL langsung dari whatsapp
String url = "https://api.whatsapp.com/send?phone="+number;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
ini jauh lebih lama tetapi bekerja tidak pasti. nikmati kode Anda :)
//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();
}
Saya sangat terlambat di sini tetapi saya percaya bahwa saat ini kami memiliki solusi yang lebih singkat dan lebih baik untuk mengirim pesan melalui WhatsApp.
Anda dapat menggunakan berikut ini untuk memanggil pemilih sistem, lalu memilih aplikasi mana yang akan Anda gunakan untuk membagikan apa pun yang Anda inginkan.
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);
Jika Anda benar-benar perlu mengirim melalui WhatsApp, yang perlu Anda lakukan adalah sebagai berikut (Anda akan melewati pemilih sistem)
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);
Jika Anda membutuhkan informasi lebih lanjut, Anda dapat menemukannya di sini: FAQ WhatsApp
Seperti yang dikatakan dalam dokumentasi Anda bisa menggunakan URL seperti:
https://wa.me/15551234567
Dimana segmen terakhir adalah nomor dalam Format E164
Uri uri = Uri.parse("https://wa.me/15551234567");
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
startActivity(intent);
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)
}
Ini adalah cara yang lebih mudah untuk mencapai ini. Kode ini memeriksa apakah whatsapp diinstal pada perangkat. Jika terinstal, itu melewati pemilih sistem dan pergi ke kontak di whatsapp dan memasukkan teks dalam obrolan. Jika tidak diinstal, itu membuka tautan whatsapp di browser web Anda.
Anda ingin menggunakan URL dalam format berikut ...
https://api.whatsapp.com/send?text=text
Kemudian Anda dapat membuatnya mengirim teks apa pun yang Anda inginkan. Anda juga memiliki opsi untuk menentukan nomor telepon ...
https://api.whatsapp.com/send?text=text&phone=1234
Apa yang TIDAK DAPAT Anda LAKUKAN adalah menggunakan yang berikut ini:
https://wa.me/send?text=text
Kamu akan mendapatkan...
Kami tidak dapat menemukan halaman yang Anda cari
wa.me
, meskipun, akan berfungsi jika Anda memberikan nomor telepon dan teks. Namun, sebagian besar, jika Anda mencoba membuat tautan berbagi, Anda benar-benar tidak ingin menunjukkan nomor teleponnya, karena Anda ingin pengguna memilih seseorang. Dalam hal ini, jika Anda tidak memberikan nomor dan digunakan wa.me
sebagai URL, semua tautan berbagi Anda akan gagal. Silakan gunakan app.whatsapp.com
.
Periksa kode ini,
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)));
}
Ini bekerja untuk saya:
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();
}
}
dapatkan nomor kontak yang ingin Anda kirimi pesan dan buat uri untuk whatsapp, di sini c adalah Kursor mengembalikan kontak yang dipilih.
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);
Dari dokumentasi
Untuk membuat tautan Anda sendiri dengan pesan yang telah diisi sebelumnya yang secara otomatis akan muncul di bidang teks obrolan, gunakan https://wa.me/whatsappphonenumber/?text=urlencodedtext di mana whatsappphonenumber adalah nomor telepon lengkap dalam format internasional dan URL -encodedtext adalah pesan yang sudah diisi sebelumnya dengan kode URL.
Contoh: 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)
API berikut dapat digunakan di c ++ seperti yang ditunjukkan di artikel saya .
Anda perlu menentukan beberapa konstanta:
//
#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"
//
Kemudian Anda terhubung ke titik akhir 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;
}
Kemudian kirim header dan body dan tunggu hasil yang harus “OK”.
Langkah 1 - buka permintaan 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;
}
Langkah 2 - kirim tajuk:
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);
Langkah 3 - kirim pesan:
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());
Sekarang lihat saja hasilnya:
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);