"Rate This App"-link in Google Play store app on the phone
I open the Play Store from my App with the following code:
val uri: Uri = Uri.parse("market://details?id=$packageName") val goToMarket = Intent(Intent.ACTION_VIEW, uri) // To count with Play market backstack, After pressing back button, // to taken back to our application, we need to add following flags to intent. goToMarket.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY or Intent.FLAG_ACTIVITY_NEW_DOCUMENT or Intent.FLAG_ACTIVITY_MULTIPLE_TASK) try { startActivity(goToMarket) } catch (e: ActivityNotFoundException) { startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=$packageName"))) }
Option 2:is to use resolveActivity instead of try..catch
if (sendIntent.resolveActivity(getPackageManager()) != null) { startActivity(chooser);} else { openUrl();}
Here is a working and up to date code :)
/** Start with rating the app* Determine if the Play Store is installed on the device** */public void rateApp(){ try { Intent rateIntent = rateIntentForUrl("market://details"); startActivity(rateIntent); } catch (ActivityNotFoundException e) { Intent rateIntent = rateIntentForUrl("https://play.google.com/store/apps/details"); startActivity(rateIntent); }}private Intent rateIntentForUrl(String url){ Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("%s?id=%s", url, getPackageName()))); int flags = Intent.FLAG_ACTIVITY_NO_HISTORY | Intent.FLAG_ACTIVITY_MULTIPLE_TASK; if (Build.VERSION.SDK_INT >= 21) { flags |= Intent.FLAG_ACTIVITY_NEW_DOCUMENT; } else { //noinspection deprecation flags |= Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET; } intent.addFlags(flags); return intent;}
Put the code in the Activity
you would like to call it from.
When the user clicks a button to rate the app, just call the rateApp()
function.
I always use this code:
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=PackageName")));