在移动版android中打开Goog​​le Play商店的链接


88

我在最新的应用程序中具有其他应用程序的链接,并且以这种方式打开它们。

Uri uri = Uri.parse("url");
Intent intent = new Intent (Intent.ACTION_VIEW, uri); 
startActivity(intent);

此代码将打开Goog​​le Play商店的浏览器版本。

尝试从手机打开时,手机会提示我是否要使用浏览器或Google Play,如果我选择第二个浏览器或Google Play,它会打开Goog​​le Play商店的移动版本。

你能告诉我这怎么发生?我的意思是不问我,而是直接打开Goog​​le Play的移动版本,这是我直接通过电话打开它时看到的版本。


1
我希望倒数第二段对我来说是正确的。使用此处找到的http链接: developer.android.com/distribute/googleplay/promote/…不会提示用户选择应用程序或浏览器。它始终采用浏览器。不幸的是,我也不能使用该market://协议。有人看到这种行为吗?
SilithCrowe

Answers:


265

您将要使用指定的market协议:

final String appPackageName = "com.example"; // Can also use getPackageName(), as below
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));

请记住,这将在未安装Market的任何设备(例如模拟器)上崩溃。因此,我建议如下:

final String appPackageName = getPackageName(); // getPackageName() from Context or Activity object
try {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
} catch (android.content.ActivityNotFoundException anfe) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + appPackageName)));
}

在使用getPackageName()from Context或其子类以保持一致性时(感谢@cprcrack!)。您可以在此处找到有关“市场意图”的更多信息:link


在浏览器中打开以下内容不会打开Goog​​le Play:market:// details?id = pandora
IgorGanapolsky 2013年

1
ID是程序包名称,而不是应用程序名称。试试market://details?id=com.PandoraTV(假设是您想要的应用程序)。
埃里克

9
这个答案是关于使用market://您自己的应用程序中的前缀,而不是使用浏览器中的网站。我可以证明它的功能(在2.3版本中,3.x中,4.0,4.1和4.2),并将其与股票浏览器的工作原理,Chrome测试版25和Chrome 18
埃里克·

1
是的,Chrome是一个应用程序,但这需要其制造商[Google]使用此代码,而不是[您]创建网站的人。就目前而言,此代码旨在帮助专门从其应用程序构建链接的人员。
埃里克

2
您可以getPackageName()用来自动检索应用程序ID。
cprcrack

6

下面的代码可以帮助您在移动版本中显示Google Play疮的应用程序链接。

对于应用程序链接:

Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName());
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);

  try {
        startActivity(myAppLinkToMarket);

      } catch (ActivityNotFoundException e) {

        //the device hasn't installed Google Play
        Toast.makeText(Setting.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();
              }

对于开发人员链接:

Uri uri = Uri.parse("market://search?q=pub:" + YourDeveloperName);
Intent myAppLinkToMarket = new Intent(Intent.ACTION_VIEW, uri);

            try {

                startActivity(myAppLinkToMarket);

            } catch (ActivityNotFoundException e) {

                //the device hasn't installed Google Play
                Toast.makeText(Settings.this, "You don't have Google Play installed", Toast.LENGTH_LONG).show();

            } 

3

您可以使用Android Intents库在Google Play上打开应用程序页面,如下所示:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);

2
请注意,不鼓励仅链接的答案,因此SO答案应该是搜索解决方案的终点(与引用的另一种中途停留相比,随着时间的流逝,它们往往会过时)。请考虑在此处添加独立的简介,并保留链接作为参考。
kleopatra

4
包含免责声明这是您的库,并且该函数的实现方式与接受的答案几乎相同,将很有帮助。
ta.speot.14年


1

您可以检查是否安装了Google Play商店应用,如果是这种情况,则可以使用“ market://”协议。

final String my_package_name = "........."  // <- HERE YOUR PACKAGE NAME!!
String url = "";

try {
    //Check whether Google Play store is installed or not:
    this.getPackageManager().getPackageInfo("com.android.vending", 0);

    url = "market://details?id=" + my_package_name;
} catch ( final Exception e ) {
    url = "https://play.google.com/store/apps/details?id=" + my_package_name;
}


//Open the app page in Google Play store:
final Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
startActivity(intent);

0

在Google Play上打开应用页面:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
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.