Чтобы не мешать пользователю раздражающими формами, вы можете добавить пункт меню, который позволит пользователю оценить приложение через сайт вашего приложения в Google Play. После того, как пользователь щелкнет эту опцию, это больше не должно отображаться (даже если пользователь не оценил приложение в конце). На мой взгляд, это решение очень удобно для пользователя.
Добавить пункт меню, подобный этому (в res \ menu [menu] .xml):
<menu xmlns:android="http://schemas.android.com/apk/res/android" >
(other options...)
<item android:id="@+id/MenuRateApp" android:title="@string/menu_Rate_app"
android:icon="@drawable/ic_menu_star"></item>
</menu>
В вашей основной деятельности добавьте следующее, чтобы скрыть опцию, когда пользователь уже оценил ваше приложение:
@Override
public boolean onPrepareOptionsMenu(Menu menu)
{
MenuItem register = menu.findItem(R.id.MenuRateApp);
if(fApp.isRated()) {
register.setVisible(false);
}
return true;
}
Измените fApp.isRated()
для метода или переменной, которые сохраняют логическое выражение, если пользователь уже оценил приложение (запишите и прочитайте это значение с помощью механизма sharedPreferences).
Код для перенаправления пользователя на сайт вашего приложения в Google Play может выглядеть следующим образом:
private boolean MyStartActivity(Intent aIntent) {
try {
startActivity(aIntent);
return true;
} catch (ActivityNotFoundException e) {
return false;
}
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
(other options code...)
if (item.getItemId() == R.id.MenuRateApp) {
//Try Google play
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("market://details?id="+getPackageName()));
if (MyStartActivity(intent) == false) {
//Market (Google play) app seems not installed, let's try to open a webbrowser
intent.setData(Uri.parse("https://play.google.com/store/apps/details?id="+getPackageName()));
if (MyStartActivity(intent) == false) {
//Well if this also fails, we have run out of options, inform the user.
Toast.makeText(this, this.getString(R.string.error_no_google_play), Toast.LENGTH_LONG).show();
}
}
//Do not disturb again (even if the user did not rated the app in the end)
fApp.setRated(true);
}
return super.onOptionsItemSelected(item);
}
Надеюсь, что это решение соответствует вашим требованиям.
Примечание: часть кода была заимствована с этого сайта:
http://martin.cubeactive.com/android-how-to-create-a-rank-this-app-button/
Пример: