698 Stimmen

Wie öffne ich den Google Play Store direkt aus meiner Android-Anwendung?

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 an, um die Option (Browser/Play Store) auszuwählen. Ich möchte die Anwendung direkt im Play Store öffnen.

0 Stimmen

24voto

code4jhon Punkte 5325

Alle obigen Antworten öffnen Google Play in einer neuen Ansicht derselben App. Wenn Sie tatsächlich Google Play (oder eine andere App) unabhängig öffnen möchten:

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

// Paketname und Aktivität
ComponentName comp = new ComponentName("com.android.vending",
                                       "com.google.android.finsky.activities.LaunchUrlHandlerActivity");
launchIntent.setComponent(comp);

// Beispiel zum Öffnen der Facebook-App
launchIntent.setData(Uri.parse("market://details?id=com.facebook.katana"));
startActivity(launchIntent);

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

Die meisten, die ich gesehen habe, verwenden den Ansatz der anderen Antworten, und das war nicht das, was ich brauchte. Hoffentlich hilft dies jemandem.

Grüße.

0 Stimmen

Was ist this.cordova? Wo sind die Variablendeklarationen? Wo wird callback deklariert und definiert?

0 Stimmen

Dies ist Teil eines Cordova-Plugins, ich denke nicht, dass dies tatsächlich relevant ist ... Sie benötigen nur eine Instanz von PackageManager und starten eine Aktivität auf übliche Weise, aber dies ist das Cordova-Plugin von github.com/lampaa, das ich hier überschrieben habe github.com/code4jhon/org.apache.cordova.startapp

5 Stimmen

Mein Punkt ist einfach, dass dieser Code wirklich nicht einfach von anderen für ihre eigene App übernommen werden kann. Das Ausdünnen und nur das Kernverfahren übrig lassen würde zukünftigen Lesern nützlich sein.

16voto

Paolo Rovelli Punkte 8750

Sie können überprüfen, ob die Google Play Store-App installiert ist, und in diesem Fall das "market://"-Protokoll verwenden.

final String my_package_name = "........."  // <- HIER IHR PAKETNAME!!
String url = "";

try {
    // Überprüfen, ob der Google Play Store installiert ist oder nicht:
    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;
}

// Öffnen Sie die App-Seite im 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);

1 Stimmen

Für Informationen dazu, wie man den Google Play Store unabhängig öffnet (nicht in einer neuen Ansicht innerhalb der gleichen App eingebettet), schauen Sie sich bitte meine Antwort an.

13voto

Johannes Staehlin Punkte 3670

Verwenden Sie market://

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

12voto

appoll Punkte 2830

Einige der Antworten auf diese Frage sind veraltet.

Was für mich (im Jahr 2020) funktioniert hat, war dem Intent ausdrücklich mitzuteilen, den Chooser zu überspringen und die Play Store App direkt zu öffnen, gemäß diesem Link:

"Wenn Sie von einer Android-App aus auf Ihre Produkte verlinken möchten, erstellen Sie einen Intent, der eine URL öffnet. Konfigurieren Sie diesen Intent so, dass Sie "com.android.vending" an Intent.setPackage() übergeben, damit Benutzer die Details Ihrer App in der Google Play Store-App sehen und nicht einen Chooser."

Das ist der Kotlin-Code, den ich benutzt habe, um Benutzer direkt zum Anzeigen der App mit dem Paketnamen com.google.android.apps.maps im Google Play Store 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

Wie in den offiziellen Dokumenten empfohlen wird, wird https:// anstelle von market:// verwendet. Dies kombiniert die Antwort von Eric und M3-n50 mit Code-Wiederverwendung (DRY - dont repeat yourself):

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 versucht, die App von Google Play zu öffnen, wenn sie vorhanden ist, und fällt auf die Standardoption 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