Öffnen Sie den Link des Google Play Store in der mobilen Version Android


88

Ich habe einen Link zu meinen anderen Apps in meiner neuesten App und öffne sie auf diese Weise.

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

Dieser Code öffnet die Browserversion des Google Play Store.

Beim Versuch, von meinem Telefon aus zu öffnen, werden Sie gefragt, ob ich einen Browser oder Google Play verwenden möchte. Wenn ich den zweiten auswähle, wird die mobile Version des Google Play Store geöffnet.

Können Sie mir sagen, wie das sofort passieren kann? Ich meine, frag mich nicht, sondern öffne direkt die mobile Version von Google Play, die ich sehe, während ich sie direkt vom Telefon aus öffne.


1
Ich wünschte, der vorletzte Absatz wäre für mich wahr. Wenn Sie den hier gefundenen http-Link verwenden: developer.android.com/distribute/googleplay/promote/…, wird der Benutzer nicht aufgefordert, die App oder den Browser auszuwählen. Es wird immer der Browser vorausgesetzt. Leider kann ich das market://Protokoll auch nicht verwenden. Hat noch jemand dieses Verhalten gesehen?
SilithCrowe

Antworten:


265

Sie möchten das angegebene marketProtokoll verwenden:

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

Beachten Sie, dass dies auf jedem Gerät abstürzt, auf dem der Market nicht installiert ist (z. B. dem Emulator). Daher würde ich etwas vorschlagen wie:

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

Während der Verwendung von getPackageName()from Contextoder seiner Unterklasse aus Gründen der Konsistenz (danke @cprcrack !). Weitere Informationen zu Market Intents finden Sie hier: Link .


Wenn Sie Folgendes im Browser öffnen, wird Google Play nicht geöffnet: market: // details? Id = pandora
IgorGanapolsky

1
Die ID ist der Paketname, nicht der App-Name. Versuchen Sie es market://details?id=com.PandoraTV(vorausgesetzt, dies ist die gewünschte App).
Eric

9
Bei dieser Antwort geht es darum, das market://Präfix aus Ihrer eigenen App zu verwenden, nicht von einer Website über den Browser. Ich kann seine Funktionalität bestätigen (in den Versionen 2.3, 3.x, 4.0, 4.1 und 4.2) und es funktioniert mit dem Aktienbrowser Chrome Beta 25 und Chrome 18.
Eric

1
Ja, Chrome ist eine App, aber dafür müssten die Hersteller [Google] diesen Code verwenden, nicht die Personen [Sie], die die Websites erstellen. Derzeit soll dieser Code Personen helfen, die Links speziell aus ihren Apps heraus strukturieren.
Eric

2
Mit können Sie getPackageName()die App-ID automatisch abrufen.
cprcrack

6

Der folgende Code kann Ihnen bei der Anzeige des Anwendungslinks von Google Play Sore in der mobilen Version helfen.

Für den Anwendungslink:

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

Für Entwickler 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();

            } 

3

Sie können die Android Intents- Bibliothek verwenden, um Ihre Anwendungsseite bei Google Play folgendermaßen zu öffnen:

Intent intent = IntentUtils.openPlayStore(getApplicationContext());
startActivity(intent);

2
Beachten Sie, dass von Antworten nur auf Links abgeraten wird. SO-Antworten sollten der Endpunkt einer Suche nach einer Lösung sein (im Gegensatz zu einem weiteren Zwischenstopp von Referenzen, die im Laufe der Zeit veralten). Bitte fügen Sie hier eine eigenständige Zusammenfassung hinzu, wobei Sie den Link als Referenz behalten.
Kleopatra

4
Es wäre hilfreich, einen Haftungsausschluss beizufügen, dass dies Ihre Bibliothek ist und die Funktion fast genauso implementiert ist wie die akzeptierte Antwort.
ta.speot.is


1

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

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

0

App-Seite bei Google Play öffnen:

Intent intent = new Intent(Intent.ACTION_VIEW,
                Uri.parse("market://details?id=" + context.getPackageName()));
startActivity(intent);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.