android手机的开机方法,Android:如何判断系统是第一次开机

c553807d5588

三体

在系统的首次启动过程中,可能要做一些事情,但后面的启动不做。有什么方法判断手机是第一次启动呢?PMS里面有接口介绍,简单看下。

@Override

public boolean isFirstBoot() {

return mFirstBoot;

}

看看mFirstBoot的赋值,是在PackageManagerService构造函数进行赋值。

public PackageManagerService(Context context, Installer installer,

boolean factoryTest, boolean onlyCore) {

.....

mFirstBoot = !mSettings.readLPw(sUserManager.getUsers(false));

......

}

final Settings mSettings;

mSettings = new Settings(mPackages);

final ArrayMap mPackages =

new ArrayMap();

看看这个类的readLPw函数罗

boolean readLPw(@NonNull List users) {

FileInputStream str = null;

//第一次启动data/system/packages-backup.xml肯定不存在,所以不会进入这个条件

if (mBackupSettingsFilename.exists()) {

try {

str = new FileInputStream(mBackupSettingsFilename);

mReadMessages.append("Reading from backup settings file\n");

PackageManagerService.reportSettingsProblem(Log.INFO,

"Need to read from backup settings file");

if (mSettingsFilename.exists()) {

// If both the backup and settings file exist, we

// ignore the settings since it might have been

// corrupted.

Slog.w(PackageManagerService.TAG, "Cleaning up settings file "

+ mSettingsFilename);

mSettingsFilename.delete();

}

} catch (java.io.IOException e) {

// We'll try for the normal settings file.

}

}

..................

.................

try {

if (str == null) {

//第一次启动data/system/packages.xml肯定不存在,所以这里会进入,返回false,进而确定是第一次启动

if (!mSettingsFilename.exists()) {

mReadMessages.append("No settings file found\n");

PackageManagerService.reportSettingsProblem(Log.INFO,

"No settings file; creating initial state");

// It's enough to just touch version details to create them

// with default values

findOrCreateVersion(StorageManager.UUID_PRIVATE_INTERNAL);

findOrCreateVersion(StorageManager.UUID_PRIMARY_PHYSICAL);

return false;

}

.................

................

}

所以,判断第一次启动其实是通过判断data/system/packages.xml是否存在来实现的,如果文件不存在,则认为是系统第一次启动。写完啦!!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值