चूँकि मुझे कुछ पुराने पोस्ट मिले, जो यह बताता है कि व्हाट्सएप इसका समर्थन नहीं करता है, मैं सोच रहा था कि क्या कुछ बदल गया है और अगर व्हाट्सएप 'चैट' को एक नंबर के साथ खोलने का कोई तरीका है जो मैं एक आशय के माध्यम से भेज रहा हूं?
चूँकि मुझे कुछ पुराने पोस्ट मिले, जो यह बताता है कि व्हाट्सएप इसका समर्थन नहीं करता है, मैं सोच रहा था कि क्या कुछ बदल गया है और अगर व्हाट्सएप 'चैट' को एक नंबर के साथ खोलने का कोई तरीका है जो मैं एक आशय के माध्यम से भेज रहा हूं?
जवाबों:
अद्यतन कृपया https://faq.whatsapp.com/en/android/26000030/?category=52424251 देखें
व्हाट्सएप के क्लिक टू चैट फीचर से आप अपने फोन के एड्रेस बुक में अपना फोन नंबर सेव किए बिना किसी से चैट शुरू कर सकते हैं। जब तक आप इस व्यक्ति के फोन नंबर को जानते हैं, आप एक लिंक बना सकते हैं जो आपको उनके साथ एक चैट शुरू करने की अनुमति देगा।
उपयोग करें: 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 देखें
इस कोड से आप दिए गए नंबर से व्हाट्सएप चैट खोल सकते हैं।
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, ""));
उपयोग startActivity(i);
के। 1. सैमसंग J7 प्राइम पर परीक्षण किया गया यह काम कर रहा है। 2. नंबर मेरी संपर्क सूची में नहीं था और न ही मेरी चैट सूची में। 3. यदि नंबर व्हाट्सएप का उपयोग नहीं कर रहा है, तो एक डायलॉग बॉक्स दिखाई दे रहा है जो मुझसे पूछ रहा है कि क्या मैं व्हाट्सएप पर उस संपर्क को आमंत्रित करना चाहता हूं। यदि आप अपने ऐप उपयोगकर्ताओं के लिए व्हाट्सएप संपर्क समर्थन प्रदान करना चाहते हैं तो यह सबसे अच्छा समाधान है।
मुझे निम्नलिखित समाधान मिला, पहले आपको व्हाट्सएप आईडी की आवश्यकता होगी:
यहां कुछ अन्य थ्रेड्स और अन्य मंचों से रिपोर्ट के साथ मिलान करने पर मुझे मिला लॉगिन नाम कुछ इस प्रकार था: पहले 0 + @ s.whatsapp.net के बिना शुरुआत के फोन नंबर में 0 या + के बिना अंतर्राष्ट्रीय क्षेत्र कोड।
उदाहरण के लिए, यदि आप नीदरलैंड में रहते हैं और फोन नंबर 0612325032 है, तो यह 31612325023@s.whatsapp.net होगा -> +31 नीदरलैंड्स के लिए 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)
आपके ऊपर 2 लाइनों का कोई मतलब नहीं है Intent whatsapp = new Intent(...)
।
<uses-permission android:name="android.permission.READ_CONTACTS" />
अनुमति देने की आवश्यकता है AndroidManifest.xml
यह काम करना चाहिए कि क्या व्हाट्सएप इंस्टॉल है या नहीं।
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;
}
सरल समाधान, यह प्रयास करें।
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)
)
)
);
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);
यह एक व्यक्ति के साथ एक सीधा चैट खोल देगा , अगर व्हाट्सएप ने इसे स्थापित नहीं किया है तो अपवाद छोड़ देगा , अगर फोन नंबर व्हाट्सएप के लिए नहीं जाना जाता है तो वे एसएमएस या सरल एसएमएस संदेश के माध्यम से आमंत्रण भेजने की पेशकश करेंगे।
निम्न कोड Google नाओ ऐप द्वारा उपयोग किया जाता है और किसी अन्य एप्लिकेशन के लिए काम नहीं करेगा।
मैं यह पोस्ट इसलिए लिख रहा हूं क्योंकि इससे मुझे गुस्सा आ रहा है, कि व्हाट्सएप किसी भी अन्य डेवलपर्स को सीधे Google को छोड़कर संदेश भेजने की अनुमति नहीं देता है।
और मैं चाहता हूं कि अन्य फ्रीलांस-डेवलपर्स को पता चले, कि इस तरह का सहयोग चल रहा है, जबकि Google "किसी के लिए भी खुला" के बारे में बात कर रहा है और व्हाट्सएप का कहना है कि वे डेवलपर्स के लिए कोई पहुंच प्रदान नहीं करना चाहते हैं।
हाल ही में व्हाट्सएप ने Google नाओ के लिए विशेष रूप से एक आशय जोड़ा है, जिसे निम्न प्रकार से देखना चाहिए:
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 नाओ द्वारा बनाया गया था।
अन्यथा व्हाट्सएप संदेश को स्वीकार नहीं करेगा।
वर्तमान में, केवल आधिकारिक API जिसे आप के लिए GET
अनुरोध कर सकते हैं :
https://api.whatsapp.com/send?phone=919773207706&text=Hello
वैसे भी, व्हाट्सएप द्वारा पहले से ही एक गुप्त एपीआई कार्यक्रम चलाया जा रहा है
//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
}
यह मेरे लिए काम करता है:
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.");
}
व्हाट्सएप के डायरेक्ट यूआरएल का उपयोग करें
String url = "https://api.whatsapp.com/send?phone="+number;
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);
यह बहुत लंबा है, लेकिन काम कर रहा है। अपने कोड का आनंद लें :)
//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();
}
मैं वास्तव में यहां बहुत देर से आया हूं, लेकिन मेरा मानना है कि आजकल हमारे पास व्हाट्सएप के माध्यम से संदेश भेजने के लिए छोटे और बेहतर समाधान हैं।
आप सिस्टम पिकर को कॉल करने के लिए निम्नलिखित का उपयोग कर सकते हैं, फिर आप जो भी चाहें साझा करने के लिए किस ऐप का उपयोग करेंगे।
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);
यदि आपको वास्तव में व्हाट्सएप के माध्यम से भेजने की आवश्यकता है, तो आपको केवल निम्न करने की आवश्यकता है (आप सिस्टम पिकर को छोड़ देंगे)
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 FAQ
जैसा कि दस्तावेज़ीकरण कहता है कि आप केवल URL का उपयोग कर सकते हैं जैसे:
https://wa.me/15551234567
जहां 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)
}
इसे हासिल करने का यह एक बहुत आसान तरीका है। यह कोड जांचता है कि क्या व्हाट्सएप डिवाइस पर इंस्टॉल है। यदि यह स्थापित है, तो यह सिस्टम पिकर को बायपास करता है और व्हाट्सएप पर संपर्क में आता है और चैट में टेक्स्ट को प्रीफ़िल्ड करता है। यदि स्थापित नहीं है, तो यह आपके वेब ब्राउज़र पर व्हाट्सएप लिंक खोलता है।
आप निम्नलिखित प्रारूप में एक 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
।
इस कोड की जाँच करें,
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)));
}
यह मेरे लिए काम करता है:
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();
}
}
उस संपर्क नंबर को प्राप्त करें जिसे आप संदेश भेजना चाहते हैं और व्हाट्सएप के लिए uri बनाना चाहते हैं, यहाँ 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);
से प्रलेखन
पूर्व-भरे संदेश के साथ अपना लिंक बनाने के लिए जो स्वचालित रूप से किसी चैट के टेक्स्ट फ़ील्ड में दिखाई देगा, https://wa.me/whatsappphonenumber/?text=urlencodedtext का उपयोग करें जहां व्हाट्सएपफ़ोनटेनम्बर अंतर्राष्ट्रीय प्रारूप और 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)
निम्नलिखित एपीआई को 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"
//
फिर आप एपीआई के समापन बिंदु से कनेक्ट करें।
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;
}
फिर हेडर और बॉडी दोनों को भेजें और उस परिणाम की प्रतीक्षा करें जो "ओके" होना चाहिए।
चरण 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);