如何在一天内每5次发射显示对话框



这是我的代码,它是工作的,请告诉我每5次启动对话框应该显示什么代码,这意味着当用户在一天中第5次启动应用程序时,应该显示评级应用对话框,同样,每5次启动对话框应该显示。

 public class MainActivity extends Activity {

    String android_id,version,ver;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //********************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.
  }

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

使用下面的方法检查启动计数。

private void checkLaunchCount()
{
    int sessionUniqueId = mSharedPref.getInt("DATE_UNIQUE", 0);
    int launchCount = mSharedPref.getInt("LAUNCH_COUNT", 0);
    if(sessionUniqueId != 0)
    {
        int todayUniqueId = getUniqueNumberFromDate();
        if(todayUniqueId == sessionUniqueId)
        {
            if(launchCount >= 5)
            {
                //Show Dialog
            }
            else
            {
                updateLaunchCount(launchCount);
            }
        }
        else
        {
            updateUniqueDateId();
            updateLaunchCount(launchCount);
        }
    }
    else
    {
        updateUniqueDateId()
        updateLaunchCount(launchCount);
    }
}

此方法用于获取日期

的uniqueint。
private int getUniqueNumberFromDate()
{
    Date date = new Date();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(date);
    return calendar.get(Calendar.DAY_OF_YEAR);
}

此方法用于在SharedPref

中节省时间
private static SharedPreferences mSharedPref;
private void updateUniqueDateId()
{
    if(mSharedPref == null)
        mSharedPref = getActivity().getSharedPreferences(getActivity().getPackageName(), Activity.MODE_PRIVATE);
    SharedPreferences.Editor prefsEditor = mSharedPref.edit();
    prefsEditor.putInt("DATE_UNIQUE", getUniqueNumberFromDate()).commit();
}

此方法用于在SharedPref

中保存计数
 private void updateLaunchCount(int launchCount)
{
    launchCount++;
    SharedPreferences.Editor prefsEditor = mSharedPref.edit();
    prefsEditor.putInt("LAUNCH_COUNT", launchCount).commit();
}

您可以获得一个Calendar值和一个计数器,并将其值存储到首选项中。

Calendar rightNow = Calendar.getInstance();
int year = rightNow.get(rightNow.YEAR);
int dayOfYear = rightNow.get(rightNow.DAY_OF_YEAR);
int count = mPreferences.getInt("launchCount",0);
int storedYear = mPreferences.getInt("storedYear",0);
int storedDayOfYear = mPreferences.getInt("storedDayOfYear",0);
if (storedYear == year && storedDayOfYear == dayOfYear) {
    if (count == 5) {
       //rate
    }
    count++;
    mPreferences.edit().putInt("launchCount",count).commit();
} else {
    mPreferences.edit().putInt("year",count);
    mPreferences.edit().putInt("dayOfYear",count);
    count = 1;
    mPreferences.edit().putInt("launchCount",count);
    mPreferences.edit().commit();
}

类似的东西,还没有尝试过,但你可以得到一个想法…

最新更新