Ich habe sowohl die Antwort von Berták als auch die Antwort von Stefano Munarini kombiniert, um eine Hybridlösung zu erstellen, die sowohl das Szenario Bewerte diese App als auch das Szenario Mehr Apps anzeigen behandelt.
/**
* Diese Methode überprüft, ob GooglePlay auf dem Gerät installiert ist oder nicht, und behandelt entsprechend
* Intents zum Anzeigen der Bewertung der App oder des Publisher-Profils
*
* @param showPublisherProfile setze true, wenn du die Publisher-Seite öffnen möchtest, andernfalls setze false, um die App-Seite zu öffnen
* @param publisherID gib die Dev-ID an, wenn du Publisher-Profil true übergeben hast
*/
public void openPlayStore(boolean showPublisherProfile, String publisherID) {
//Fehlerbehandlung
if (publisherID == null || !publisherID.isEmpty()) {
publisherID = "";
//Log und weiter
Log.w("openPlayStore Methode", "publisherID ist ungültig");
}
Intent openPlayStoreIntent;
boolean isGooglePlayInstalled = false;
if (showPublisherProfile) {
//Öffne Publisher-Profil im PlayStore
openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://search?q=pub:" + publisherID));
} else {
//Öffne diese App im PlayStore
openPlayStoreIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + getPackageName()));
}
//Finde alle Anwendungen, die openPlayStoreIntent verarbeiten können
final List otherApps = getPackageManager()
.queryIntentActivities(openPlayStoreIntent, 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
);
//Stelle sicher, dass es NICHT im Stapel deiner Aktivität geöffnet wird
openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//Task-Umleitung, falls erforderlich
openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
//Wenn Google Play bereits in einem Suchergebnis geöffnet war,
//stelle sicher, dass es immer noch zur angeforderten App-Seite geht
openPlayStoreIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
//Stelle sicher, dass nur die Google Play App den Intent abfangen kann
openPlayStoreIntent.setComponent(componentName);
startActivity(openPlayStoreIntent);
isGooglePlayInstalled = true;
break;
}
}
//Wenn Google Play nicht auf dem Gerät installiert ist, öffne den Webbrowser
if (!isGooglePlayInstalled) {
Intent webIntent;
if (showPublisherProfile) {
//Öffne Publisher-Profil im Webbrowser
webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("http://play.google.com/store/search?q=pub:" + getPackageName()));
} else {
//Öffne diese App im Webbrowser
webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id=" + getPackageName()));
}
startActivity(webIntent);
}
}
Verwendung
- Um das Publisher-Profil zu öffnen
@OnClick(R.id.ll_more_apps)
public void showMoreApps() {
openPlayStore(true, "Hitesh Sahu");
}
- Um die App-Seite im PlayStore zu öffnen
@OnClick(R.id.ll_rate_this_app)
public void openAppInPlayStore() {
openPlayStore(false, "");
}
0 Stimmen
Beantwortet das Ihre Frage? "Rate This App"-Link im Google Play Store auf dem Telefon