Багато відповідей тут пропонують використовувати Uri.parse("market://details?id=" + appPackageName))
для відкриття Google Play, але я думаю, що насправді це недостатньо :
Деякі сторонні додатки можуть використовувати власні фільтри намірів із "market://"
визначеною схемою , таким чином вони можуть обробляти поставлений Uri замість Google Play (я відчував цю ситуацію із програмою egSnapPea). Питання "Як відкрити Google Play Store?", Тож я припускаю, що ви не хочете відкривати жодну іншу програму. Зауважте також, що, наприклад, рейтинг додатків є релевантним лише в додатку GP Store тощо ...
Щоб відкрити Google Play І ТІЛЬКО Google Play, я використовую цей метод:
public static void openAppRating(Context context) {
// you can also use BuildConfig.APPLICATION_ID
String appId = context.getPackageName();
Intent rateIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("market://details?id=" + appId));
boolean marketFound = false;
// find all applications able to handle our rateIntent
final List<ResolveInfo> otherApps = context.getPackageManager()
.queryIntentActivities(rateIntent, 0);
for (ResolveInfo otherApp: otherApps) {
// look for Google Play application
if (otherApp.activityInfo.applicationInfo.packageName
.equals("com.android.vending")) {
ActivityInfo otherAppActivity = otherApp.activityInfo;
ComponentName componentName = new ComponentName(
otherAppActivity.applicationInfo.packageName,
otherAppActivity.name
);
// make sure it does NOT open in the stack of your activity
rateIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// task reparenting if needed
rateIntent.addFlags(Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
// if the Google Play was already open in a search result
// this make sure it still go to the app page you requested
rateIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
// this make sure only the Google Play app is allowed to
// intercept the intent
rateIntent.setComponent(componentName);
context.startActivity(rateIntent);
marketFound = true;
break;
}
}
// if GP not present on device, open web browser
if (!marketFound) {
Intent webIntent = new Intent(Intent.ACTION_VIEW,
Uri.parse("https://play.google.com/store/apps/details?id="+appId));
context.startActivity(webIntent);
}
}
Справа в тому, що коли більше додатків поруч із Google Play можуть відкрити наш намір, діалогове вікно вибору додатків пропускається і програма GP запускається безпосередньо.
ОНОВЛЕННЯ:
Іноді здається, що він відкриває лише додаток GP, не відкриваючи профіль додатка. Як запропонував TrevorWiley у своєму коментарі, це Intent.FLAG_ACTIVITY_CLEAR_TOP
може вирішити проблему. (Я його ще не перевіряв ...)
Дивіться цю відповідь, щоб зрозуміти, що Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
робить.