open link of google play store in mobile version android
Asked Answered
R

6

89

I have link of my other apps in my latest app, and I open them in that way.

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

this code opens the browser version of google play store.

When trying to open from my phone, the phone prompts if I want to use a browser or google play and if I choose the second one it opens the mobile version of google play store.

Can you tell me how can this happen at once? I mean not ask me but directly open the mobile version of google play, the one that I see while open it directly from phone.

Robbegrillet answered 6/6, 2012 at 21:45 Comment(1)
I wish that the second to last paragraph was true for me. Using the http link found here: developer.android.com/distribute/googleplay/promote/… does not prompt for the user to choose the app or the browser. It always assumes the browser. Unfortunately, I can't use the market:// protocol either. Anybody else seeing this behavior?Guttle
D
263

You'll want to use the specified market protocol:

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

Keep in mind, this will crash on any device that does not have the Market installed (the emulator, for example). Hence, I would suggest something like:

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

While using getPackageName() from Context or subclass thereof for consistency (thanks @cprcrack!). You can find more on Market Intents here: link.

Dahomey answered 6/6, 2012 at 21:59 Comment(14)
Opening the following in the browser does not open Google Play: market://details?id=pandoraRiches
The ID is the package name, not the app name. Try market://details?id=com.PandoraTV (assuming this is the app you want).Dahomey
Try opening any link that starts with market:// in Chrome for Android. You will see that it only performs a search result, it doesn't open the Google Play store. It is irrelevant if the Pandora package name is correct here, I can give you a hundred correct package names and it won't change the issue.Riches
This answer is about using the market:// prefix from your own app, not from a website via the browser. I can attest to its functionality (on versions 2.3, 3.x, 4.0, 4.1, and 4.2) and it works with the stock browser, Chrome Beta 25, and Chrome 18.Dahomey
I got it, thanks. I would also think that Chrome is considered an app, and it treats market:// specially just like my app would.Riches
Yes, Chrome is an app, but that would require its makers [Google] to use this code, not the people [you] making the websites. As it stands, this code is to help people who are structuring links specifically from their apps.Dahomey
You can use getPackageName() to automatically retrieve the app id.Enschede
How to use this link in share message?Thesis
@ツPratikButaniツ I don't think you can. You could try pasting it as a URL with the market:// prefix, but many parsers would not recognize it. Best to go with the play.google.com URL.Dahomey
But play.google.com Opens in browser and may user dont like to go in browser and open. so any way?Thesis
@ツPratikButaniツ Shares are not always designed to be opened on a mobile device. The link to the Play Store App has to be done in the code of the app where the link is used.Dahomey
can we get the response from play store app after redirection ? That the user has clicked installed or app gets downloaded through my redirection ?Luthuli
@Luthuli No, I'm afraid not.Dahomey
but i got to know that the advertisement sdk's are tracking this too.Luthuli
E
6

Below code may helps you for display application link of google play sore in mobile version.

For Application link :

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

For Developer link :

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

            } 
Escalator answered 12/9, 2013 at 7:19 Comment(0)
O
3

You can use Android Intents library for opening your application page at Google Play like that:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);
Orion answered 20/8, 2013 at 8:28 Comment(2)
Note that link-only answers are discouraged, SO answers should be the end-point of a search for a solution (vs. yet another stopover of references, which tend to get stale over time). Please consider adding a stand-alone synopsis here, keeping the link as a reference.Pack
It would be helpful to include a disclaimer that this is your library and the function is implemented pretty much the same way as the accepted answer.Stowers
S
1

You can check if the Google Play Store app is installed and, if this is the case, you can use the "market://" protocol.

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);
Sibie answered 10/4, 2014 at 10:14 Comment(0)
K
0

Open app page on Google Play:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
Kantar answered 26/5, 2015 at 13:13 Comment(0)
O
0

In case, we want purpose to update by linking to the native google play store application :

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = Uri.parse(
            "https://play.google.com/store/apps/details?id=com.example.android")
    setPackage("com.android.vending")
}
startActivity(intent)

and if we want to open the instant app link here is the purpose kotlin code:

val uriBuilder = Uri.parse("https://play.google.com/store/apps/details")
        .buildUpon()
        .appendQueryParameter("id", "com.example.android")
        .appendQueryParameter("launch", "true")

// Optional parameters, such as referrer, are passed onto the launched
// instant app. You can retrieve these parameters using Activity.intent.data.
uriBuilder.appendQueryParameter("referrer", "exampleCampaignId")

val intent = Intent(Intent.ACTION_VIEW).apply {
    data = uriBuilder.build()
    setPackage("com.android.vending")
}
startActivity(intent)

Please refer to Android Developer Link : https://developer.android.com/distribute/marketing-tools/linking-to-google-play#android-app

Opisthognathous answered 10/10, 2022 at 12:58 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.