Androidでアプリケーションの「リンク」を共有する


105

アプリケーションユーザーが自分のアプリを他のユーザーと共有/推奨できるようにしたい。ACTION_SENDインテントを使用します。このクールなアプリケーションをインストールします。しかし、たとえばユーザーがマーケットプレイスのインストール画面に直接移動できるようにする方法が見つかりません。私が提供できるのは、Webリンクまたはテキストです。つまり、Androidユーザーがアプリをインストールするための非常に直接的な方法を探しています。

ヘルプ/ポインタをありがとう、

トーマス

回答:


267

これにより、メール、whatsappなどから選択できます。

try { 
    Intent shareIntent = new Intent(Intent.ACTION_SEND);  
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "My application name");
    String shareMessage= "\nLet me recommend you this application\n\n";
    shareMessage = shareMessage + "https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID +"\n\n";
    shareIntent.putExtra(Intent.EXTRA_TEXT, shareMessage);  
    startActivity(Intent.createChooser(shareIntent, "choose one"));
} catch(Exception e) { 
    //e.toString();
}   

1
Firebase共有アプリケーション。詳細読みfirebase.google.com/docs/invites/android
バヘGharibyan

なぜこれがtry / catchブロックにラップされているのですか?
ルイ

7
Androidはアップデートに非常に多くの変更を加えるのが大好きで、このコードが将来のアップデートで失敗するかどうかを知っています
Ton

1
@Tonアプリのアイコン画像を件名とテキストと一緒に送信するにはどうすればよいですか。
Arbaz Alam

バックグラウンドスレッドで実行します。メインスレッドの場合、どういうわけか重いです。ユーザーはバックグラウンドスレッドの遅れを感じません
blockwala

33

サポートライブラリのShareCompatクラスも使用できます。

ShareCompat.IntentBuilder.from(activity)
    .setType("text/plain")
    .setChooserTitle("Chooser title")
    .setText("http://play.google.com/store/apps/details?id=" + activity.getPackageName())
    .startChooser();

https://developer.android.com/reference/android/support/v4/app/ShareCompat.html


言語も設定できますか?&hlURLにタグを追加するのは簡単ですが、setLangなどのライブラリで使用できるかどうかは気になります。
ランキング

3
リンクでは常にhttpではなくhttpsを使用してください。
ubuntudroid

20

トーマス、

market://アプリの詳細ページに直接アクセスできるリンクをユーザーに提供する必要があります。以下はdeveloper.android.comからのものです。

アプリケーションの詳細ページの読み込み

Androidマーケットでは、すべてのアプリケーションに、ユーザーにアプリケーションの概要を提供する詳細ページがあります。たとえば、開発者から提供された場合、ページにはアプリの短い説明と使用中のアプリのスクリーンショット、ユーザーからのフィードバック、開発者に関する情報が含まれます。詳細ページには、ユーザーがアプリケーションのダウンロード/購入をトリガーできる「インストール」ボタンも含まれています。

ユーザーに特定のアプリケーションを紹介する場合、アプリケーションはユーザーをアプリケーションの詳細ページに直接移動できます。これを行うには、アプリケーションから、次の形式のURIとクエリパラメータを含むACTION_VIEWインテントを送信します。

market:// details?id =

この場合、packagenameパラメータは、アプリケーションのマニフェストファイルのmanifest要素のpackage属性で宣言されている、ターゲットアプリケーションの完全修飾パッケージ名です。例えば:

market:// details?id = com.example.android.jetboy

出典:http : //developer.android.com/guide/publishing/publishing.html


リンクの+1。いいですね。ユーザーに共有したいので、ACTION_SENDを使用して、テキストに市場リンクを追加する必要があります。ユーザーがクリックすると、インストールページにリダイレクトされます。良さそうですね。私があなたを正しく理解したかどうかを教えてください。
トーマス

はい、ACTION_SENDのテキストでマーケットリンクを使用できます。ただし、Androidデバイスでクリックした場合にのみ機能します。
テートする

1
ただし、ACTION_SENDを使用する場合、このリンクはマーケットリンクを開きません。リンクは単純なテキストのままです。しかし、リンクはACTION_VIEWで市場を開くのに役立ちました。
varun bhardwaj

13

このメソッドを呼び出します。

public static void shareApp(Context context)
{
    final String appPackageName = context.getPackageName();
    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.putExtra(Intent.EXTRA_TEXT, "Check out the App at: https://play.google.com/store/apps/details?id=" + appPackageName);
    sendIntent.setType("text/plain");
    context.startActivity(sendIntent);
}

10

より正確に

   Intent intent = new Intent(Intent.ACTION_VIEW);
   intent.setData(Uri.parse("https://play.google.com/store/apps/details?id=com.android.example"));
   startActivity(intent);

または、開発者から他のアプリを共有したい場合。このようなことができるアカウント

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://play.google.com/store/apps/developer?id=Your_Publisher_Name"));
startActivity(intent);

7

アプリケーション名とアプリケーションIDを自動的に入力するには、次のようにします。

int applicationNameId = context.getApplicationInfo().labelRes;
final String appPackageName = context.getPackageName();
Intent i = new Intent(Intent.ACTION_SEND);
i.setType("text/plain");
i.putExtra(Intent.EXTRA_SUBJECT, activity.getString(applicationNameId));
String text = "Install this cool application: ";
String link = "https://play.google.com/store/apps/details?id=" + appPackageName;
i.putExtra(Intent.EXTRA_TEXT, text + " " + link);
startActivity(Intent.createChooser(i, "Share link:"));

5

タイトルを付けてアプリケーションを共有するのはapp_name、コンテンツはアプリケーションのリンクです

private static void shareApp(Context context) {
    final String appPackageName = BuildConfig.APPLICATION_ID;
    final String appName = context.getString(R.string.app_name);
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    String shareBodyText = "https://play.google.com/store/apps/details?id=" +
            appPackageName;
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, appName);
    shareIntent.putExtra(Intent.EXTRA_TEXT, shareBodyText);
    context.startActivity(Intent.createChooser(shareIntent, context.getString(R.string
            .share_with)));
}

アプリのアイコンを共有する方法
John dahat

4

この質問には回答済みですが、別の解決策を共有したいと思います。

Intent shareIntent = new Intent(Intent.ACTION_SEND);
shareIntent.setType("text/plain");
String shareSubText = "WhatsApp - The Great Chat App";
String shareBodyText = "https://play.google.com/store/apps/details?id=com.whatsapp&hl=en";
shareIntent.putExtra(Intent.EXTRA_SUBJECT, shareSubText);
shareIntent.putExtra(Intent.EXTRA_TEXT, shareBodyText);
startActivity(Intent.createChooser(shareIntent, "Share With"));

1

最後に、このコードは、Androidデバイスから電子メールクライアントを開くために機能します。このスニペットを試してください。

Intent testIntent = new Intent(Intent.ACTION_VIEW);
                    Uri data = Uri.parse("mailto:?subject=" + "Feedback" + "&body=" + "Write Feedback here....." + "&to=" + "someone@example.com");
                    testIntent.setData(data);
                    startActivity(testIntent);

0

実際にあなたがユーザー間でのアプリせん断し、(firebase)をGoogleに最良の方法は、いくつかのラインを介して新技術Firebaseダイナミックリンクを証明しますが、これはドキュメントでそれを作ることができ https://firebase.google.com/docs/dynamic-links/ とコードです

  Uri dynamicLinkUri = dynamicLink.getUri();
      Task<ShortDynamicLink> shortLinkTask = FirebaseDynamicLinks.getInstance().createDynamicLink()
            .setLink(Uri.parse("https://www.google.jo/"))
            .setDynamicLinkDomain("rw4r7.app.goo.gl")
            .buildShortDynamicLink()
            .addOnCompleteListener(this, new OnCompleteListener<ShortDynamicLink>() {
                @Override
                public void onComplete(@NonNull Task<ShortDynamicLink> task) {
                    if (task.isSuccessful()) {
                        // Short link created
                        Uri shortLink = task.getResult().getShortLink();
                        Uri flowchartLink = task.getResult().getPreviewLink();
                        Intent intent = new Intent();
                        intent.setAction(Intent.ACTION_SEND);
                        intent.putExtra(Intent.EXTRA_TEXT,  shortLink.toString());
                        intent.setType("text/plain");
                        startActivity(intent);
                    } else {
                        // Error
                        // ...
                    }
                }
            });

0

共有アクション用のKotlin拡張機能。リンクなど、好きなものを共有できます

fun Context.share(text: String) =
    this.startActivity(Intent().apply {
        action = Intent.ACTION_SEND
        putExtra(Intent.EXTRA_TEXT, text)
        type = "text/plain"
    })

使用法

context.share("Check https://stackoverflow.com")
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.