如何在应用程序中每三天显示一次对话框

用户名

这是我的代码,它正在工作,如果用户点击此按钮,请告诉我代码按钮“不,谢谢”,然后对话框将永远不会显示

 public class MainActivity extends Activity {


    Button btnRegId;
    EditText etRegId;
    String regID;

    GoogleCloudMessaging gcm;
    String regid,url;

    //String PROJECT_NUMBER = "90787073097";
    String PROJECT_NUMBER =  "440085976573";


    String android_id,version,ver;


ImageView mega4,todayTips,latstnews,sportquiz,tipister;

TextView txtname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

  // etRegId = (EditText) findViewById(R.id.edtvID);




    //********************For Rating APP **********************
     SharedPreferences sharedPrefs = MainActivity.this.getSharedPreferences("RATER", 0);

     SharedPreferences.Editor prefsEditor = sharedPrefs.edit();

    long time = sharedPrefs.getLong("displayedTime", 0);
    if (time < System.currentTimeMillis() - 259200000) {
       displayDialog();
       prefsEditor.putLong("displayedTime", System.currentTimeMillis()).commit();
    }
 }

   //dialog box Function for rating app.

private void displayDialog() {
    // TODO Auto-generated method stub
      DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which){
            case DialogInterface.BUTTON_POSITIVE:
                //Yes button clicked
                   Intent in = new Intent(android.content.Intent.ACTION_VIEW);
                   in.setData(Uri.parse(url));
                   startActivity(in);
                break;

            case DialogInterface.BUTTON_NEGATIVE:
                //No button clicked
                break;
            }
        }
    };

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("Rate This App");
    builder.setMessage("You really seem to like this app, "
              +"since you have already used it %totalLaunchCount% times! "
              +"It would be great if you took a moment to rate it.")
    .setPositiveButton("Rate Now", dialogClickListener)
        .setNegativeButton("Latter", dialogClickListener)
        .setNeutralButton("No,thanks", dialogClickListener).show();

   }
   //End dialog box Function for rating app.
  }

这是我的代码,实际上我想在应每三天显示一次的应用程序中实现应用程序评级对话框

Aayush Thakur

您必须像这样初始化您的SharedPreferences和Editor对象:

   SharedPreferences prefs = mContext.getSharedPreferences("RATER", 0);
   SharedPreferences.Editor editor = prefs.edit();

更新

只要在用户点击“谢谢”时保存一个布尔值,然后在显示对话框之前先检查布尔值即可。如果为true,则不会显示该对话框。

//Saving a boolean on no thanks button click

SharedPreferences prefs = mContext.getSharedPreferences("RATER", 0);
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("NO THANKS", true));
editor.apply();

在显示方法的对话框中访问它。

    SharedPreferences prefs = mContext.getSharedPreferences("RATER", 0);
    if (prefs.getBoolean("NO THANKS", false)) {
        return;
    }else {
   SharedPreferences.Editor editor = prefs.edit();
    //YOUR CODE TO SHOW DIALOG
    editor.apply();
}

完整代码

public class MainActivity extends Activity {

Button btnRegId;
EditText etRegId;
String regID;

GoogleCloudMessaging gcm;
String regid, url;

//String PROJECT_NUMBER = "90787073097";
String PROJECT_NUMBER = "440085976573";


String android_id, version, ver;


ImageView mega4, todayTips, latstnews, sportquiz, tipister;

TextView txtname;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // etRegId = (EditText) findViewById(R.id.edtvID);


    //********************For Rating APP **********************
    SharedPreferences sharedPrefs = MainActivity.this.getSharedPreferences("RATER", 0);
    if (sharedPrefs.getBoolean("NO THANKS", false)) {
        return;
    } else {
        SharedPreferences.Editor prefsEditor = sharedPrefs.edit();
        //YOUR CODE TO SHOW DIALOG
        long time = sharedPrefs.getLong("displayedTime", 0);
        if (time < System.currentTimeMillis() - 259200000) {
            displayDialog();
            prefsEditor.putLong("displayedTime", System.currentTimeMillis()).commit();
        }
        prefsEditor.apply();
    }


}

//dialog box Function for rating app.

private void displayDialog() {
    // TODO Auto-generated method stub
    DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            switch (which) {
                case DialogInterface.BUTTON_POSITIVE:
                    //Yes button clicked
                    Intent in = new Intent(android.content.Intent.ACTION_VIEW);
                    in.setData(Uri.parse(url));
                    startActivity(in);
                    break;

                case DialogInterface.BUTTON_NEGATIVE:
                    //No button clicked
                    //Saving a boolean on no thanks button click

                    SharedPreferences prefs = MainActivity.this.getSharedPreferences("RATER", 0);
                    SharedPreferences.Editor editor = prefs.edit();
                    editor.putBoolean("NO THANKS", true);
                    editor.apply();
                    break;
            }
        }
    };

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
    builder.setTitle("Rate This App");
    builder.setMessage("You really seem to like this app, "
            + "since you have already used it %totalLaunchCount% times! "
            + "It would be great if you took a moment to rate it.")
            .setPositiveButton("Rate Now", dialogClickListener)
            .setNegativeButton("Latter", dialogClickListener)
            .setNeutralButton("No,thanks", dialogClickListener).show();

}
//End dialog box Function for rating app.
    }

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 Flutter 中一天只显示一次警报对话框?

如何在应用程序android中的任何活动之上显示警报对话框

如何在C ++中从控制台应用程序显示MFC对话框?

如何在Linux上的Java应用程序的“打开文件”对话框中显示隐藏文件(。*)?

如何仅一次显示对话框中的错误值

如何在应用程序启动时显示自定义对话框?

如何在无需打开应用程序的情况下显示对话框

FLUTTER:如何在应用程序开始之前显示对话框?

在flutter应用程序中显示另一个文件中的对话框

如何在 MFC Dialog 应用程序中插入更多对话框?

如何在带有Selenium的Firefox中单击“启动应用程序”对话框?

如何在应用程序中设置DatePicker对话框

Delphi控制台应用程序:如何在消息对话框中添加OnHelp?

如何确认对话框以在 TestCafe 中打开另一个应用程序

在“选择应用程序”对话框列表中显示应用程序

Google Play应用内审核API:多久显示一次对话框?

一次单击不显示DatePicker对话框

Android的Java的:如何防止显示对话框关闭时MainActivity应用程序的名字我简要的对话框?

基于 MFC 对话框的应用程序无法两次调用对话框

使用实时数据,如何只显示一次对话框?

如果一次被多次调用,如何避免多次显示对话框?

在首次启动应用程序时显示对话框

在 UWP 应用程序的“添加引用”对话框中显示我的 .NET Standard 程序集

rails 3.2:确认删除。在开发中,confim对话框打开一次,但是在生产中,对话框打开三次

如何从带有Windows 7样式按钮的控制台应用程序中显示对话框?

如何使用控制台应用程序获取输出并将其显示到MFC对话框中StaticText

我想在应用程序打开后每10次显示一次警报

在应用程序购买对话框中未显示在android中

如何在控制台应用程序 .NET Core (C#) 中创建一个打开文件对话框?