在Android中分享应用程序“链接”

时间:2011-02-11 12:54:24

标签: android share

我希望我的应用程序用户能够与其他用户共享/推荐我的应用程序。我使用ACTION_SEND意图。我添加了纯文本,说明了以下内容:安装这个很酷的应用程序。但我找不到让用户直接进入市场安装界面的方法。我可以提供的只是一个网站链接或一些文字。 换句话说,我正在寻找一个非常直接的方式让Android用户安装我的应用程序。

感谢您的任何帮助/指示,

托马斯

11 个答案:

答案 0 :(得分:209)

这将允许您从电子邮件,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 :(得分:20)

托马斯,

您希望为用户提供market://链接,该链接会将其直接带到您应用的详细信息页面。以下内容来自developer.android.com:

  

加载应用程序的详细信息页面

     

在Android Market中,每个应用程序   有一个提供的详细信息页面   用户应用程序概述。   例如,该页面包含一个简短的   应用程序和屏幕的描述   正在使用的镜头,如果提供的话   开发人员,以及来自的反馈   用户和有关的信息   开发商。详情页面也是   包括一个“安装”按钮   用户触发下载/购买   申请书。

     

如果您想将用户推荐给a   具体应用,你的   应用程序可以直接带给用户   到应用程序的详细信息页面。至   这样做,你的应用程序发送一个   ACTION_VIEW包含URI的Intent   和以下格式的查询参数:

     

市场://细节ID =

     

在这种情况下,包名称   参数是目标应用程序   完全限定的包名称,如   在package属性中声明   中的清单元素   应用程序的清单文件。对于   例如:

     

市场://细节ID = com.example.android.jetboy

来源:http://developer.android.com/guide/publishing/publishing.html

答案 2 :(得分:20)

您也可以使用支持库中的 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

答案 3 :(得分:9)

更确切地说

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

答案 4 :(得分:8)

调用此方法:

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

答案 5 :(得分:5)

要自动填写应用程序名称和应用程序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:"));

答案 6 :(得分:2)

我知道这个问题已经得到解答,但我想分享一个替代解决方案:

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

答案 7 :(得分: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);

答案 8 :(得分:1)

根据 official docs 在 2021 年的首选方式是

fun shareTextToOtherApps(message: String) {
        val sendIntent: Intent = Intent().apply {
            action = Intent.ACTION_SEND
            putExtra(Intent.EXTRA_TEXT, message)
            type = "text/plain"
        }

        val shareIntent = Intent.createChooser(sendIntent, null)
        startActivity(shareIntent)
    }

答案 9 :(得分:0)

实际上是用户之间剪切app的最佳方式,谷歌(firebase)证明了新技术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
                        // ...
                    }
                }
            });

答案 10 :(得分: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")