运行活动仅适用于安装应用程序后的第一次Android
问题描述:
我正在实现一个具有MainActivity,onlyFirstRunActivity和alwaysRunActivity的应用程序。现在我想,上的应用程序制作安装或更新用应用的我的应用程序周期应该是这样的:运行活动仅适用于安装应用程序后的第一次Android
MainActivity - > onlyFirstRunActivity - > alwaysRunActivity
和安装后或更新用我的应用程序周期应该是:
MainActivity - > alwaysRunActivity
我如何能实现这种情况
答
您可以获取应用程序的更新时间并将其保存在SharedPreference中。
此外,你应该让你的主要活动永远运行一个。
//In your onCreate for your main activity/.
if(last_update_preference < current_update_time){
Update last update preference to current update time.
Run first activity. (Which will finish and bounce you back);
}
要获得current_update_time:
How to get app install time from android
对于最后的更新时间,请参阅:
http://developer.android.com/guide/topics/data/data-storage.html#pref
答
你可以尝试这样的事情:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
App app = (App)getApplication();
if (app.getApi() != null){
super.onBackPressed();
startActivity(new Intent(this, MainActivity.class));
return;
}else showLoginForm();//or do something else.
}
答
像这样你可以区分新的安装和更新。
String StoredVersionname = "";
String VersionName;
AlertDialog LoginDialog;
AlertDialog UpdateDialog;
AlertDialog FirstRunDialog;
SharedPreferences prefs;
public static String getVersionName(Context context, Class cls) {
try {
ComponentName comp = new ComponentName(context, cls);
PackageInfo pinfo = context.getPackageManager().getPackageInfo(
comp.getPackageName(), 0);
return "Version: " + pinfo.versionName;
} catch (android.content.pm.PackageManager.NameNotFoundException e) {
return null;
}
}
public void CheckFirstRun() {
VersionName = MyActivity.getVersionName(this, MyActivity.class);
prefs = PreferenceManager.getDefaultSharedPreferences(this);
StoredVersionname = (prefs.getString("versionname", null));
if (StoredVersionname == null || StoredVersionname.length() == 0){
FirstRunDialog = new FirstRunDialog(this);
FirstRunDialog.show();
}else if (StoredVersionname != VersionName) {
UpdateDialog = new UpdateDialog(this);
UpdateDialog.show();
}
prefs.edit().putString("versionname", VersionName).commit();
}
SharedPreferences可以存储一个布尔型'bFirstRun',告诉你这是否是第一次运行。 – 2013-02-08 16:50:39
但最后存储的sharedprefences仍然在updation.Means如何配置应用程序更新更新? – User42590 2013-02-08 16:57:15
不确定你的意思,但是如果没有名为'bFirstRun'的SharedPreference ...那么你是第一次运行。然后将其设置为false(并提交更改)。下一次通过,它在那里和假所以转到'alwaysRunActivity' – 2013-02-08 17:00:18