将是否第一次启动状态写入系统属性persist.sys.isfirstboot,其他地方获取属性值判断是否第一次启动。
frameworks/base/services/java/com/android/server/SystemServer.java
private void startBootstrapServices() {
Slog.i(TAG, "Reading configuration...");mFirstBoot = mPackageManagerService.isFirstBoot();
mFirstBoot = mPackageManagerService.isFirstBoot();
+ if(isFirstBootOrUpgrade()){
+ SystemProperties.set("persist.sys.isfirstboot","1");
+ Slog.w(TAG, "isFirstBootOrUpgrade");
+ }else{
+ SystemProperties.set("persist.sys.isfirstboot","0");
+ }
mPackageManager = mSystemContext.getPackageManager();
private boolean isFirstBootOrUpgrade() {
return mPackageManagerService.isFirstBoot() || mPackageManagerService.isUpgrade();
}
在c++代码中使用,例子如下:
#include <cutils/properties.h>
char isfirstboot[PROPERTY_VALUE_MAX] = { 1 };
property_get("persist.sys.isfirstboot", isfirstboot, "");
if ( strcmp(isfirstboot,"1") == 0){
xxxx
}