private int getFirstTimeRun() {
SharedPreferences sp = getSharedPreferences("MYAPP", 0);
int result, currentVersionCode = BuildConfig.VERSION_CODE;
int lastVersionCode = sp.getInt("FIRSTTIMERUN", -1);
if (lastVersionCode == -1) result = 0; else
result = (lastVersionCode == currentVersionCode) ? 1 : 2;
sp.edit().putInt("FIRSTTIMERUN", currentVersionCode).apply();
return result;
}
函数返回的值:
0:App 从未运行过。
1:应用程序曾经运行过。
2:该应用程序已经运行了一段时间,但不是那个版本。
使用示例:
switch(getFirstTimeRun()) {
case 0:
Log.d("appPreferences", "Es la primera vez!");
break;
case 1:
Log.d("appPreferences", "ya has iniciado la app alguna vez");
break;
case 2:
Log.d("appPreferences", "es una versión nueva");
}
您可以使用Shared Preferences永久保存值。然后,您可以保存一个包含应用程序版本名称的变量,并在每次应用程序启动时检查它。此外,共享首选项即使在更新后也会保留,因此此方法也可用于检测更新后的第一次执行。
这个想法是你有一个应用程序版本的常量(例如“1.0.0”类型的字符串)。然后在启动应用程序时遵循这样的算法:
如果常量的值与步骤 1 中Shared Preferences的值不同,则这是应用程序第一次启动:
将常量的值与Shared Preferences中的版本一起保存。
已解决,从答案中获取想法:
函数返回的值:
使用示例:
接受功能改进和代码优化。
已编辑
另一种方法是使用Once库:
初始化:
Once.initialise(this);
第一次方法:
用户第一次安装应用程序时:
应用升级后的第一次:
2017 年 4 月更新
也有可能获取如果是安装0或者更新,获取APK的值
可以使用SharedPreferences,请记住,卸载应用程序时这些值可能会丢失。
您可以使用该方法保存
setInicia()
,第一次安装时发送值 1,您可以使用该方法获取该首选项的值getInicia()
但是,如果您想定义应用程序第一次在设备上启动的时间,我使用的方法(尽管它也不是完全可靠)是在目录中
/Android/data
而不是在目录中写入包含字符串“1”的文件应用程序目录/Android/data/com.midominio.miapp
这些是使用的方法: