Banyak jawaban di sini menyarankan untuk digunakan Uri.parse("market://details?id=" + appPackageName))
untuk membuka Google Play, tetapi saya pikir itu sebenarnya tidak cukup :
Beberapa aplikasi pihak ketiga dapat menggunakan filter maksud sendiri dengan "market://"
skema yang ditentukan , sehingga mereka dapat memproses Uri yang disediakan alih-alih Google Play (Saya mengalami situasi ini dengan aplikasi egSnapPea). Pertanyaannya adalah "Bagaimana cara membuka Google Play Store?", Jadi saya berasumsi, bahwa Anda tidak ingin membuka aplikasi lain. Harap perhatikan juga, bahwa misalnya peringkat aplikasi hanya relevan di aplikasi GP Store, dll. ...
Untuk membuka Google Play DAN HANYA Google Play saya menggunakan metode ini:
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);
}
}
Intinya adalah ketika lebih banyak aplikasi di samping Google Play dapat membuka maksud kami, dialog pemilih aplikasi dilewati dan aplikasi GP dimulai secara langsung.
PEMBARUAN:
Terkadang sepertinya hanya membuka aplikasi GP, tanpa membuka profil aplikasi. Seperti yang disarankan TrevorWiley dalam komentarnya, Intent.FLAG_ACTIVITY_CLEAR_TOP
dapat memperbaiki masalahnya. (Saya belum mengujinya sendiri ...)
Lihat jawaban ini untuk memahami apa yang Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
terjadi.