每天第5次启动如何显示对话框框?

3

这里是我的代码,它正在正常工作。请告诉我每 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次时都会显示。


你说它正在工作,那么实际问题是什么? - Zain Ul Abidin
我想在Yar的第五次启动时显示对话框,只需要这个@ZainUlAbidin。 - user6405383
@ZainUlAbidin兄弟,你看起来有些疲惫了。 - user6405383
acha its strange wu kese :/ - Zain Ul Abidin
@ZainUlAbidin,请通过Skype:sajid.h.glow或电子邮件sd_sajid@hotmail.com与我联系。 - user6405383
2个回答

1
使用以下方法检查启动次数。
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);
    }
}

这个方法用于获取日期的唯一整数

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();
}

在这行代码中出现错误:mSharedPref = MainActivity.getSharedPreferences(MainActivity().getPackageName(), Activity.MODE_PRIVATE); @magesh pandian - user6405383
代码应该像这样:mSharedPref = getActivity().getSharedPreferences(getActivity().getPackageName(), Activity.MODE_PRIVATE); - Magesh Pandian
它给出了这个错误:“The method getActivity() is undefined for the type MainActivity”,@magesh pandian - user6405383
好的。mSharedPref = getSharedPreferences(getPackageName(), Activity.MODE_PRIVATE);。移除getActivity()。 - Magesh Pandian
仍然存在错误,写入您上面更新的行。现在的错误是“方法getPackageN‌ame()未定义为MainActivity类型”。@magesh pandian - user6405383
显示剩余6条评论

0

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

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();
}

像这样的东西,我还没有尝试过,但你可以有个想法...


请您可以在Skype上与我讨论,请告诉我您的Skype名称,请@drez。 - user6405383

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接