Buradaki birçok cevap Uri.parse("market://details?id=" + appPackageName))
Google Play'i açmak için kullanılmasını önermektedir , ancak aslında yetersiz olduğunu düşünüyorum :
Bazı üçüncü taraf uygulamaları, "market://"
tanımlanmış şema ile kendi niyet filtrelerini kullanabilir , böylece Google Play yerine sağlanan Uri'yi işleyebilirler (bu durumu egSnapPea uygulamasıyla yaşadım). Soru, "Google Play Store nasıl açılır?" Sorusudur, bu yüzden başka bir uygulama açmak istemediğinizi varsayalım. Ayrıca, örneğin uygulama derecelendirmesinin yalnızca GP Store uygulamasında vb.
Google Play'i ve SADECE Google Play'i açmak için bu yöntemi kullanıyorum:
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);
}
}
Mesele şu ki, Google Play'in yanında daha fazla uygulama niyetimizi açabilirse, uygulama seçici iletişim kutusu atlanır ve GP uygulaması doğrudan başlatılır.
GÜNCELLEME:
Bazen uygulamanın profilini açmadan yalnızca GP uygulamasını açtığı görülür. TrevorWiley'nin yorumunda önerdiği gibi Intent.FLAG_ACTIVITY_CLEAR_TOP
, sorunu çözebilir. (Henüz kendim test etmedim ...)
Ne işe yaradığını anlamak için bu cevaba bakınız Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
.