description Wie öffne ich den Google Play Store direkt über meine Android-Anwendung?




google play store app description formatting (12)

Gehen Sie auf Android Developer offiziellen Link als Tutorial Schritt für Schritt zu sehen und bekam den Code für Ihr Anwendungspaket aus Play Store, wenn vorhanden oder Store-Apps zu spielen nicht existiert, dann öffnen Sie die Anwendung von Web-Browser.

Offizieller Android-Entwickler-Link

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

Verknüpfung mit einer Anwendungsseite

Auf einer Website: http://play.google.com/store/apps/details?id=<package_name>

Von einer Android-App aus: market://details?id=<package_name>

Verknüpfen mit einer Produktliste

Auf einer Website: http://play.google.com/store/search?q=pub:<publisher_name>

Von einer Android-App aus: market://search?q=pub:<publisher_name>

Verknüpfung mit einem Suchergebnis

Auf einer Website: http://play.google.com/store/search?q=<search_query>&c=apps

Von einer Android-App aus: market://search?q=<seach_query>&c=apps

Ich habe den Google Play Store mit dem folgenden Code geöffnet

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

Aber es zeigt mir eine komplette Aktionsansicht an, um die Option auszuwählen (Browser / Store abspielen). Ich muss die Anwendung im Playstore direkt öffnen.


In vielen Antworten wird vorgeschlagen, Uri.parse("market://details?id=" + appPackageName)) zu verwenden, um Google Play zu öffnen, aber ich denke, es reicht nicht aus:

Einige Anwendungen von Drittanbietern können ihre eigenen Intent-Filter mit dem Schema "market://" verwenden , so dass sie das bereitgestellte Uri anstelle von Google Play verarbeiten können (ich habe diese Situation mit der egSnapPea-Anwendung erlebt). Die Frage lautet "Wie öffne ich den Google Play Store?", Also nehme ich an, dass Sie keine andere Anwendung öffnen möchten. Bitte beachten Sie auch, dass zB die App-Bewertung nur in der GP Store App relevant ist.

Um Google Play UND NUR Google Play zu öffnen, verwende ich diese Methode:

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

Der Punkt ist, dass wenn mehr Anwendungen neben Google Play unsere Absicht öffnen können, der App-Auswahldialog übersprungen wird und die GP-App direkt gestartet wird.

UPDATE: Manchmal scheint es, dass es GP-App nur öffnet, ohne das Profil der App zu öffnen. Wie TrevorWiley in seinem Kommentar vorgeschlagen hat, könnte Intent.FLAG_ACTIVITY_CLEAR_TOP das Problem beheben. (Ich habe es selbst noch nicht getestet ...)

Sehen Sie diese Antwort, um zu verstehen, was Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED tut.


Gebrauchsfertige Lösung:

public class GoogleServicesUtils {

    public static void openAppInGooglePlay(Context context) {
        final String appPackageName = context.getPackageName();
        try {
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName)));
        } catch (android.content.ActivityNotFoundException e) { // if there is no Google Play on device
            context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
        }
    }

}

Basiert auf Erics Antwort.



public void launchPlayStore(Context context, String packageName) {
    Intent intent = null;
    try {
            intent = new Intent(Intent.ACTION_VIEW);
            intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent.setData(Uri.parse("market://details?id=" + packageName));
            context.startActivity(intent);
        } catch (android.content.ActivityNotFoundException anfe) {
            startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
        }
    }

Alle oben genannten Antworten öffnen Google Play in einer neuen Ansicht derselben App, wenn Sie Google Play (oder eine andere App) unabhängig voneinander öffnen möchten:

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

Der wichtige Teil ist, dass Google Play oder eine andere App unabhängig voneinander geöffnet wird.

Das meiste von dem, was ich gesehen habe, benutzt den Ansatz der anderen Antworten und es war nicht das, was ich brauchte, hoffentlich hilft das jemandem.

Grüße.


Hier ist der letzte Code aus den Antworten oben, der zuerst versucht, die App mit der Google Play Store App zu öffnen und den Store spezifisch zu spielen. Wenn dies fehlschlägt, wird die Action-View mit der Web-Version gestartet: Credits @ @ric, @ Jonathan Caballero

public void goToPlayStore() {
        String playStoreMarketUrl = "market://details?id=";
        String playStoreWebUrl = "https://play.google.com/store/apps/details?id=";
        String packageName = getActivity().getPackageName();
        try {
            Intent intent =  getActivity()
                            .getPackageManager()
                            .getLaunchIntentForPackage("com.android.vending");
            if (intent != null) {
                ComponentName androidComponent = new ComponentName("com.android.vending",
                        "com.google.android.finsky.activities.LaunchUrlHandlerActivity");
                intent.setComponent(androidComponent);
                intent.setData(Uri.parse(playStoreMarketUrl + packageName));
            } else {
                intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreMarketUrl + packageName));
            }
            startActivity(intent);
        } catch (ActivityNotFoundException e) {
            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(playStoreWebUrl + packageName));
            startActivity(intent);
        }
    }

Nutze Markt: //

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

Wenn Sie den Google Play Store von Ihrer App aus öffnen möchten, verwenden Sie den Befehl directy: market://details?gotohome=com.yourAppName , um die Google Play Store-Seiten Ihrer App zu öffnen.

Zeige alle Apps von einem bestimmten Publisher

Suchen Sie nach Apps, die die Abfrage für ihren Titel oder ihre Beschreibung verwenden

Referenz: https://tricklio.com/market-details-gotohome-1/


Während Erics Antwort richtig ist, funktioniert Berťáks Code auch. Ich denke, das verbindet beides eleganter.

try {
    Intent appStoreIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName));
    appStoreIntent.setPackage("com.android.vending");

    startActivity(appStoreIntent);
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName)));
}

Mit setPackage erzwingen Sie, dass das Gerät den Play Store verwendet. Wenn kein Play Store installiert ist, wird die Exception abgefangen.


Versuche dies

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

Sie können dies mit dem Präfix market:// tun.

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

Wir verwenden hier einen try/catch Block, da eine Exception ausgelöst wird, wenn der Play Store nicht auf dem Zielgerät installiert ist.

HINWEIS : Jede App kann sich als handlungsfähig für den market://details?id=<appId> registrieren market://details?id=<appId> Uri, wenn Sie gezielt auf Google Play abzielen, überprüfen Sie die Berťák- Antwort





google-play