Я использую этот code, чтобы создать всплывающее диалоговое окно в моей домашней деятельности, чтобы попросить пользователя оценить мое приложение, коды работают нормально, однако, когда пользователи выбирают параметр «Нет благодарности», диалог не следует показывать снова.Отключить всплывающее диалоговое окно после щелчка
Однако, когда приложение вновь, мой homeActivity перезагружается, все в нем сбрасывается, поэтому, несмотря на это
editor.putBoolean("dontshowagain", true);
editor.commit();
диалоговое окно будет показывать снова, есть в любом случае я могу хранить логическое значение, когда активность перезагружается?
public static class AppRater {
private final int DAYS_UNTIL_PROMPT = 3;
private final int LAUNCHES_UNTIL_PROMPT = 7;
public void app_launched(Context mContext) {
SharedPreferences prefs = mContext.getSharedPreferences("apprater", 0);
if (prefs.getBoolean("dontshowagain", false)) { return ; }
SharedPreferences.Editor editor = prefs.edit();
// Increment launch counter
long launch_count = prefs.getLong("launch_count", 0) + 1;
editor.putLong("launch_count", launch_count);
// Get date of first launch
Long date_firstLaunch = prefs.getLong("date_firstlaunch", 0);
if (date_firstLaunch == 0) {
date_firstLaunch = System.currentTimeMillis();
editor.putLong("date_firstlaunch", date_firstLaunch);
}
// i just use this to test the dialog instantly
showRateDialog(mContext, editor);
// Wait at least n days before opening
if (launch_count >= LAUNCHES_UNTIL_PROMPT) {
if (System.currentTimeMillis() >= date_firstLaunch +
(DAYS_UNTIL_PROMPT * 24 * 60 * 60 * 1000)) {
showRateDialog(mContext, editor);
}
}
editor.commit();
}
public static void showRateDialog(final Context mContext, final SharedPreferences.Editor editor) {
final Dialog dialog = new Dialog(mContext);
dialog.setTitle("Rate MyApp");
LinearLayout ll = new LinearLayout(mContext);
ll.setOrientation(LinearLayout.VERTICAL);
TextView tv = new TextView(mContext);
tv.setText("We see that you have been using MyApp well. Would you like to rate us?");
tv.setWidth(240);
tv.setPadding(4, 0, 4, 10);
ll.addView(tv);
Button b1 = new Button(mContext);
b1.setText("Rate MyApp");
b1.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Uri uri = Uri.parse("market://details?id=" + mContext.getPackageName());
Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
try {
mContext.startActivity(goToMarket); // playstore installed
} catch (ActivityNotFoundException e) { // open website if not
mContext.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("http://play.google.com/store/apps/details?id=" + mContext.getPackageName())));
}
dialog.dismiss();
}
});
ll.addView(b1);
Button b2 = new Button(mContext);
b2.setText("Remind me later");
b2.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
dialog.dismiss();
}
});
ll.addView(b2);
Button b3 = new Button(mContext);
b3.setText("No, thanks");
b3.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
rated = true;
if (editor != null) {
editor.putBoolean("dontshowagain", true);
editor.commit();
}
dialog.dismiss();
}
});
ll.addView(b3);
dialog.setContentView(ll);
dialog.show();
}
}
// http://www.androidsnippets.com/prompt-engaged-users-to-rate-your-app-in-the-android-market-appirater
Да, пожалуйста, на самом деле я попытался установить другое логическое значение и проверить, является ли это значение ложным, тогда я не вызову showRateDialog(), но он все еще не работает. – Casper
Добавлен код и пояснения. Это должно заставить вас идти. – Ridcully
Спасибо, я изменил свои коды, как вы предлагали, но диалог по-прежнему загружается после того, как я выхожу из приложения и снова его использую, btw Я назвал этот класс в методе onCreate из homeActivity 'AppRater.showRateDialog (this);' – Casper