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


105

我希望我的应用程序用户能够与其他用户共享/推荐我的应用程序。我使用ACTION_SEND意图。我添加纯文本,其中包含以下内容:安装此炫酷应用程序。但是我找不到能使用户直接进入市场安装屏幕的方法。我所能提供的只是一个Web链接或一些文本。换句话说,我正在寻找一种非常直接的方式来让android用户安装我的应用。

感谢您的帮助/指标,

汤玛士

Answers:


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


我们也可以设定语言吗?我知道将&hl标签附加到url 会很简单,但是很好奇它是否可以在setLang之类的库中使用。
排名

3
请始终在链接中使用https而不是http。
ubuntudroid

20

托马斯

您想为用户提供一个market://链接,该链接会将他们直接带到您应用程序的详细信息页面。以下是来自developer.android.com的内容:

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

在Android Market中,每个应用程序都有一个“详细信息”页面,该页面为用户提供了该应用程序的概述。例如,该页面包括对应用程序的简短描述以及正在使用的应用程序的屏幕截图(如果由开发人员提供),以及来自用户的反馈和有关开发人员的信息。“详细信息”页面还包括一​​个“安装”按钮,该按钮可让用户触发应用程序的下载/购买。

如果您要引导用户使用特定的应用程序,则您的应用程序可以将用户直接带到该应用程序的“详细信息”页面。为此,您的应用程序发送ACTION_VIEW Intent,其中包含以下格式的URI和查询参数:

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 2011年

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

3

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

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

实际上,在用户之间剪切应用程序的最佳方法是google(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
                        // ...
                    }
                }
            });

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")
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.