[英]How to display dialog box every 5th launch in a day?
這是我的代碼它正在工作請告訴我我應該寫的每個第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);
}
}
此方法用於獲取Date的getUniqueInt
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 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();
}
這樣的事情,沒試過,但你可以得到一個想法......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.