Question Comment ouvrir le Google Play Store directement à partir de mon application Android?


J'ai ouvert le google play store en utilisant le code suivant

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

Mais il me montre une vue d'action complète pour sélectionner l'option (navigateur / play store). Je dois ouvrir l'application directement dans playstore.


418
2017-08-01 05:27


origine


Réponses:


Vous pouvez le faire en utilisant le market:// préfixe.

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("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

Nous utilisons un try/catch bloquer ici parce qu'un Exception sera lancé si le Play Store n'est pas installé sur le périphérique cible.

REMARQUE: toute application peut s'inscrire comme capable de gérer le market://details?id=<appId> Uri, si vous souhaitez cibler spécifiquement Google Play, vérifiez les Berťák répondre


1164
2017-08-01 05:34



Beaucoup de réponses suggèrent ici d'utiliser  Uri.parse("market://details?id=" + appPackageName))  pour ouvrir Google Play, mais je pense que c'est insuffisant En réalité:

Certaines applications tierces peuvent utiliser leurs propres filtres d'intention avec "market://" schéma définiAinsi, ils peuvent traiter Uri fourni au lieu de Google Play (j'ai rencontré cette situation avec, par exemple, l'application SnapPea). La question est "Comment ouvrir le Google Play Store?", Donc je suppose que vous ne voulez pas ouvrir d’autres applications. S'il vous plaît noter également que, par exemple la note d'application n'est pertinente que dans l'application GP Store, etc.

Pour ouvrir Google Play et Google Play, j'utilise cette méthode:

public static void openAppRating(Context context) {
    // you can also use BuildConfig.APPLICATION_ID
    String appId = context.getPackageName();
    Intent rateIntent = new Intent(Intent.ACTION_VIEW,
        Uri.parse("market://details?id=" + appId));
    boolean marketFound = false;

    // find all applications able to handle our rateIntent
    final List<ResolveInfo> otherApps = context.getPackageManager()
        .queryIntentActivities(rateIntent, 0);
    for (ResolveInfo otherApp: otherApps) {
        // look for Google Play application
        if (otherApp.activityInfo.applicationInfo.packageName
                .equals("com.android.vending")) {

            ActivityInfo otherAppActivity = otherApp.activityInfo;
            ComponentName componentName = new ComponentName(
                    otherAppActivity.applicationInfo.packageName,
                    otherAppActivity.name
                    );
            // make sure it does NOT open in the stack of your activity
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            // task reparenting if needed
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
            // if the Google Play was already open in a search result
            //  this make sure it still go to the app page you requested
            rateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            // this make sure only the Google Play app is allowed to
            // intercept the intent
            rateIntent.setComponent(componentName);
            context.startActivity(rateIntent);
            marketFound = true;
            break;

        }
    }

    // if GP not present on device, open web browser
    if (!marketFound) {
        Intent webIntent = new Intent(Intent.ACTION_VIEW,
            Uri.parse("https://play.google.com/store/apps/details?id="+appId));
        context.startActivity(webIntent);
    }
}

Le fait est que lorsque plusieurs applications à côté de Google Play peuvent ouvrir notre intention, la boîte de dialogue de sélection des applications est ignorée et l'application GP est lancée directement.

METTRE À JOUR:  Parfois, il semble qu'il ouvre l'application GP uniquement, sans ouvrir le profil de l'application. Comme l'a suggéré TrevorWiley dans son commentaire, Intent.FLAG_ACTIVITY_CLEAR_TOP pourrait résoudre le problème. (Je ne l'ai pas encore testé moi-même ...)

Voir cette réponse pour comprendre quoi Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED Est-ce que.


122
2018-01-22 14:15



Aller sur Android lien officiel de développeur comme tutoriel étape par étape voir et obtenu le code pour votre paquet d'application à partir du magasin de jeu si existe ou jouer des applications du magasin n'existe pas, puis ouvrez l'application à partir du navigateur Web.

Lien officiel Android Developer

http://developer.android.com/distribute/tools/promote/linking.html

Liaison à une page Applicaiton

Depuis un site web: http://play.google.com/store/apps/details?id=<package_name>

A partir d'une application Android: market://details?id=<package_name>

Lien vers une liste de produits

Depuis un site web: http://play.google.com/store/search?q=pub:<publisher_name>

A partir d'une application Android: market://search?q=pub:<publisher_name>

Lien vers un résultat de recherche

Depuis un site web: http://play.google.com/store/search?q=<search_query>&c=apps

A partir d'une application Android: market://search?q=<seach_query>&c=apps


52
2017-11-22 09:36



essaye ça

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id=com.example.android"));
startActivity(intent);

18
2017-08-01 05:36



Toutes les réponses ci-dessus ouvrent Google Play dans une nouvelle vue de la même application, si vous souhaitez réellement ouvrir Google Play (ou toute autre application) de manière indépendante:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.android.vending");

// package name and activity
ComponentName comp = new ComponentName("com.android.vending",
                                       "com.google.android.finsky.activities.LaunchUrlHandlerActivity"); 
launchIntent.setComponent(comp);

// sample to open facebook app
launchIntent.setData(Uri.parse("market://details?id=com.facebook.katana"));
startActivity(launchIntent);

La partie importante est que réellement ouvre google play ou toute autre application indépendamment. 

La plupart de ce que j'ai vu utilise l'approche des autres réponses et ce n'était pas ce dont j'avais besoin, j'espère que cela aide quelqu'un.

Cordialement.


17
2017-07-29 03:10



Vous pouvez vérifier si le Google Play Store application est installée et, si tel est le cas, vous pouvez utiliser le "marché://" protocole.

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

11
2018-04-10 10:18



utiliser le marché: //

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + my_packagename));

8
2017-08-01 05:35