698 Stimmen

Wie kann ich den Google Play Store direkt von meiner Android-Anwendung aus öffnen?

Ich habe den Google Play Store mit folgendem 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 vollständige Aktionsansicht, um die Option (Browser/Play Store) auszuwählen. Ich muss die Anwendung direkt im Play Store öffnen.

24voto

code4jhon Punkte 5325

Alle oben genannten Antworten öffnen Google Play in einer neuen Ansicht derselben App, wenn Sie Google Play (oder eine andere App) tatsächlich unabhängig ö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 tatsächlich unabhängig geöffnet wird.

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

Herzliche Grüße.

16voto

Paolo Rovelli Punkte 8750

Sie können prüfen, ob die Google Play Store App installiert ist, und wenn dies der Fall ist, können Sie die "market://" Protokoll.

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

13voto

Johannes Staehlin Punkte 3670

Markt:// verwenden

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

12voto

appoll Punkte 2830

Einige der Antworten auf diese Frage sind veraltet.

Was bei mir (im Jahr 2020) funktionierte, war die ausdrückliche Anweisung an den Intent, die Auswahl zu überspringen und direkt die Play Store-App zu öffnen, gemäß dieser Link :

"Wenn Sie einen Link zu Ihren Produkten von einer Android-App aus erstellen möchten, erstellen Sie einen Intent, der eine URL öffnet. Wenn Sie diesen Intent konfigurieren, übergeben Sie "com.Android.vending" in Intent.setPackage() ein, damit die Nutzer die Details Ihrer die Details Ihrer App in der Google Play Store-App anstelle eines Auswahlmenüs sehen."

Dies ist der Kotlin-Code, den ich verwendet habe, um Benutzer zum Anzeigen der App mit dem Paketnamen com.google.Android.apps.maps in Google Play zu leiten:

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

Ich hoffe, das hilft jemandem!

12voto

serv-inc Punkte 32204

Als die offiziellen Dokumente verwenden. https:// anstelle von market:// Dies kombiniert Erics und M3-n50s Antwort mit der Wiederverwendung von Code (wiederholen Sie sich nicht):

Intent intent = new Intent(Intent.ACTION_VIEW)
    .setData(Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
try {
    startActivity(new Intent(intent)
                  .setPackage("com.android.vending"));
} catch (android.content.ActivityNotFoundException exception) {
    startActivity(intent);
}

Es wird versucht, die GPlay-Anwendung zu öffnen, wenn sie vorhanden ist, und fällt dann auf die Standardeinstellungen zurück.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X