web-dev-qa-db-ja.com

アプリからWhatsAppにテキストを共有する方法は?

テキストを共有する機能を備えたアプリを開発しています。 WhatsAppを除き、これは正常に機能しています。私は何をすべきか?そのための特定のAPIはありますか?

41
user1755441

そのためにインテントを使用できます。 Whatsapp APIを使用する必要はありません。あなたの質問を誤解していないことを願っています。お役に立てば幸いです。

Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
whatsappIntent.setType("text/plain");
whatsappIntent.setPackage("com.whatsapp");
whatsappIntent.putExtra(Intent.EXTRA_TEXT, "The text you wanted to share");
try {
    activity.startActivity(whatsappIntent);
} catch (Android.content.ActivityNotFoundException ex) {
    ToastHelper.MakeShortText("Whatsapp have not been installed.");
}
107
Sonny Ng

WhatsAppと統合するには2つの方法があります。

  • カスタムURLスキームを介して

  • Androidのインテントシステムを通じて。

Webサイトがあり、事前に入力されたメッセージでWhatsAppチャットを開きたい場合は、カスタムURLスキームを使用して開くことができます。 whatsapp:// send?text =に続いて送信するテキストを開くと、WhatsAppが開き、ユーザーが連絡先を選択できるようになり、入力フィールドに指定されたテキストが事前入力されます。

Androidのほとんどのソーシャルアプリと同様に、WhatsAppはメディアとテキストを共有する意図をリッスンします。たとえば、テキストを共有するインテントを作成するだけで、システムピッカーによって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と直接共有し、システムピッカーをバイパスする場合は、目的でsetPackageを使用して共有できます。

sendIntent.setPackage("com.whatsapp");

これは、startActivity(sendIntent)を呼び出す直前に設定されるだけです。

以下の公式WhatsAppページのリンクを参照してください: https://www.whatsapp.com/faq/en/Android/28000012

特定のWhatsApp連絡先とテキストを共有する場合は、以下のコードを参照してください。

private void openWhatsApp() {
String smsNumber = "7****"; //without '+'
try {
    Intent sendIntent = new Intent("Android.intent.action.MAIN");
    //sendIntent.setComponent(new ComponentName("com.whatsapp", "com.whatsapp.Conversation"));
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.setType("text/plain");
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.putExtra("jid", smsNumber + "@s.whatsapp.net"); //phone number without "+" prefix
    sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
} catch(Exception e) {
    Toast.makeText(this, "Error/n" + e.toString(), Toast.LENGTH_SHORT).show();
 }

}

詳細については、以下のリンクを参照してください 特定の連絡先(whatsapp)にテキストを送信

16
Intent share = new Intent(Intent.ACTION_SEND);
    share.setType("text/plain");
    share.putExtra(Intent.EXTRA_TEXT, "Your text");
    startActivity(Intent.createChooser(share, "Share using"));
6
Rutul Mehta

ユーザーのデバイスにWhatsappアプリがない場合、ユーザーはActivityNotFoundExceptionを受け取ります。

次に、最初にアプリをダウンロードするようにユーザーを移動する必要があります。

public void shareViaWhatsApp() {
        Intent whatsappIntent = new Intent(Intent.ACTION_SEND);
        whatsappIntent.setType("text/plain");
        whatsappIntent.setPackage("com.whatsapp");
        whatsappIntent.putExtra(Intent.EXTRA_TEXT, "Application of social rating share with your friend");
        try {
            Objects.requireNonNull(getActivity()).startActivity(whatsappIntent);
        } catch (Android.content.ActivityNotFoundException ex) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=com.whatsapp")));
        }
    }
3
Prince
1
Nathalie Lima

私は100%確信していません...しかし、私は公式のAPIがリリースされていないのではないかと心配しています。また、「whatsappを送信する」機能を実装したかったのですが、whatsapp.incが公式の機能をリリースするまでしばらくgivingめています

いくつかの非公式APIがありますが、それが必要かどうかはわかりません...

http://www.whatsapp-api.com/developers.php

https://github.com/venomous0x/WhatsAPI

幸運....そして何かを発見したら、私に知らせてください;)

1
Rako
  Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "This is my text to send.");
    sendIntent.setType("text/plain");
sendIntent.setPackage("com.whatsapp");
    startActivity(sendIntent);
1
Amrish Kakadiya
 message = "this msg is sent from My App Time Track"
            val intent = Intent()//Empty as we don't know the destination i.e implicit intent
            intent.action = Intent.ACTION_SEND//intent will do work of sending something
            intent.putExtra(Intent.EXTRA_TEXT, message)//send given message
            intent.putExtra(Intent.EXTRA_SUBJECT,"Download Time Track App")//give the subject for your message
            //Intent.Extra_Text is actually a globol key
            intent.type = "plane/text"//type of intent

            startActivity(Intent.createChooser(intent,"Send to: "))//createChooser is a dialogBox which shows app available to send data
0
Asim