এখানে অনেক উত্তর গুগল প্লে খোলার জন্য ব্যবহার করার পরামর্শ দেয় Uri.parse("market://details?id=" + appPackageName))
তবে আমি মনে করি এটি অপ্রতুল বাস্তবে :
কিছু তৃতীয় পক্ষের অ্যাপ্লিকেশনগুলি "market://"
স্কিম সংজ্ঞায়িত করে নিজস্ব ইন্টেন্ট-ফিল্টার ব্যবহার করতে পারে , সুতরাং তারা গুগল প্লেয়ের পরিবর্তে সরবরাহ করা উরি প্রক্রিয়া করতে পারে (উদাহরণস্বরূপ, আমি এই পরিস্থিতিটি স্প্যানিপপি অ্যাপ্লিকেশন সহ অনুভব করেছি)। প্রশ্নটি "গুগল প্লে স্টোরটি কীভাবে খুলবেন?", তাই আমি ধরে নিলাম যে আপনি অন্য কোনও অ্যাপ্লিকেশন খুলতে চান না। দয়া করে নোট করুন, যেমন অ্যাপ্লিকেশন রেটিংটি কেবলমাত্র জিপি স্টোর অ্যাপ্লিকেশন ইত্যাদিতেই প্রাসঙ্গিক ...
গুগল প্লে এবং শুধুমাত্র গুগল প্লে খোলার জন্য আমি এই পদ্ধতিটি ব্যবহার করি:
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);
}
}
মুল বক্তব্যটি হ'ল গুগল প্লে-এর পাশের আরও অ্যাপ্লিকেশনগুলি যখন আমাদের অভিপ্রায়টি খুলতে পারে, অ্যাপ্লিকেশন-চয়নকারী ডায়ালগটি এড়িয়ে যায় এবং জিপি অ্যাপ্লিকেশন সরাসরি শুরু হয়।
আপডেট:
কখনও কখনও মনে হয় এটি কেবল জিপি অ্যাপ্লিকেশনটি খোলে, অ্যাপ্লিকেশনটির প্রোফাইলটি না খোলা। ট্রেভরভিলে যেমন তাঁর মন্তব্যে পরামর্শ দিয়েছেন, Intent.FLAG_ACTIVITY_CLEAR_TOP
সমস্যাটি সমাধান করতে পারেন। (আমি নিজে নিজে এটি পরীক্ষা করিনি ...)
কি করে তা বোঝার জন্য এই উত্তরটি দেখুন Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
।