Viele Antworten hier schlagen vor, Uri.parse("market://details?id=" + appPackageName))
zu verwenden, um den Google Play Store zu öffnen, aber ich glaube, dass es tatsächlich unzureichend ist:
Einige Drittanbieteranwendungen können eigene Intent-Filter mit dem Schema "market://"
verwenden, sodass sie die bereitgestellte Uri anstelle von Google Play verarbeiten können (ich habe diese Situation z.B. mit der SnapPea-Anwendung erlebt). Die Frage lautet "Wie öffne ich den Google Play Store?", daher gehe ich davon aus, dass Sie keine andere Anwendung öffnen möchten. Bitte beachten Sie auch, dass z.B. die App-Bewertung nur relevant ist in der GP Store-App usw.
Um den Google Play Store UND NUR den Google Play Store zu öffnen, verwende ich diese Methode:
public static void openAppRating(Context context) {
// Sie können auch BuildConfig.APPLICATION_ID verwenden
String appId = context.getPackageName();
Intent rateIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + appId));
boolean marketFound = false;
// finde alle Anwendungen, die unseren rateIntent verarbeiten können
final List otherApps = context.getPackageManager()
.queryIntentActivities(rateIntent, 0);
for (ResolveInfo otherApp: otherApps) {
// Suche nach der Google Play-Anwendung
if (otherApp.activityInfo.applicationInfo.packageName
.equals("com.android.vending")) {
ActivityInfo otherAppActivity = otherApp.activityInfo;
ComponentName componentName = new ComponentName(
otherAppActivity.applicationInfo.packageName,
otherAppActivity.name
);
// Stellen Sie sicher, dass sie NICHT im Stapel Ihrer Aktivität geöffnet wird
rateIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// Task-Reparenting bei Bedarf
rateIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// Wenn der Google Play bereits in einem Suchergebnis geöffnet war
// Stellen Sie sicher, dass er immer noch zur angeforderten App-Seite geht
rateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// Stellen Sie sicher, dass nur die Google Play-App berechtigt ist,
// den Intent abzufangen
rateIntent.setComponent(componentName);
context.startActivity(rateIntent);
marketFound = true;
break;
}
}
// falls GP auf dem Gerät nicht vorhanden ist, Browser öffnen
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 neben Google Play weitere Anwendungen unseren Intent öffnen können, der App-Auswahldialog übersprungen wird und die GP-App direkt gestartet wird.
UPDATE: Manchmal scheint es, dass sie nur die GP-App ö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 sich diese Antwort an, um zu verstehen, was Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
tut.
0 Stimmen
Beantwortet das Ihre Frage? "Rate This App"-Link im Google Play Store auf dem Telefon