Android 7.1 异常删除data文件导致HOME键失效

简介: Android 7.1 异常删除data文件导致HOME键失效

平台


RK3288 + Android 7.1


问题


使用SU命令删除了/data/system/users目录下的文件后重启, HOME 无法正常返回主界面.


system_process I/WindowManager: Not starting activity because user setup is in progress: Intent { act=android.intent.action.MAIN cat=[android.intent.category.HOME] flg=0x10200000 (has extras) }


分析


|-- frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java


private void startActivityAsUser(Intent intent, UserHandle handle) {
        if (isUserSetupComplete()) {
            mContext.startActivityAsUser(intent, handle);
        } else {
            Slog.i(TAG, "Not starting activity because user setup is in progress: " + intent);
        }
    }
  boolean isUserSetupComplete() {
        return Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.USER_SETUP_COMPLETE, 0, UserHandle.USER_CURRENT) != 0;
    }


Settings.Secure.USER_SETUP_COMPLETE 的值为 0?


方法1:

命令查看数据库设置的值: settings get secure user_setup_complete, 结果输出为 0


方法2:

cat /data/system/users/0/settings_secure.xml | grep user_setup


<setting id="56" name="user_setup_complete" value="0" package="com.android.provision" />


解决


使用命令设置为1:


settings put secure user_setup_complete 1


PS


1.以上相关命令需要有系统权限

2.建议仅在调试过程使用.


相关代码:


user_setup_complete 默认值设置:

|-- frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java


loadBooleanSetting(stmt, Settings.Secure.USER_SETUP_COMPLETE,
                    R.bool.def_user_setup_complete);


|-- frameworks/base/packages/SettingsProvider/res/values/defaults.xml


<bool name="def_user_setup_complete">false</bool>


值的修改:

|-- packages/apps/Provision/src/com/android/provision/DefaultActivity.java


public class DefaultActivity extends Activity {
    @Override
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        // Add a persistent setting to allow other apps to know the device has been provisioned.
        Settings.Global.putInt(getContentResolver(), Settings.Global.DEVICE_PROVISIONED, 1);
        Settings.Secure.putInt(getContentResolver(), Settings.Secure.USER_SETUP_COMPLETE, 1);
        // remove this activity from the package manager.
        PackageManager pm = getPackageManager();
        ComponentName name = new ComponentName(this, DefaultActivity.class);
        pm.setComponentEnabledSetting(name, PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
                PackageManager.DONT_KILL_APP);
  ...
        finish();
    }
相关文章
|
20天前
|
Shell Android开发
Android系统 adb shell push/pull 禁止特定文件
Android系统 adb shell push/pull 禁止特定文件
43 1
|
20天前
|
Shell Android开发
Android系统 init.rc文件详解
Android系统 init.rc文件详解
67 0
|
20天前
|
存储 Java API
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
Android 浅度解析:mk预置AAR、SO文件、APP包和签名
120 0
|
9天前
|
Android开发
【苹果安卓通用】xlsx 和 vCard 文件转换器,txt转vCard文件格式,CSV转 vCard格式,如何批量号码导入手机通讯录,一篇文章说全
本文介绍了如何快速将批量号码导入手机通讯录,适用于企业客户管理、营销团队、活动组织、团队协作和新员工入职等场景。步骤包括:1) 下载软件,提供腾讯云盘和百度网盘链接;2) 打开软件,复制粘贴号码并进行加载预览和制作文件;3) 将制作好的文件通过QQ或微信发送至手机,然后按苹果、安卓或鸿蒙系统的指示导入。整个过程简便快捷,可在1分钟内完成。
|
19天前
|
Android开发
jack-server导致 Android 编译 出现异常
jack-server导致 Android 编译 出现异常
23 6
|
19天前
|
Android开发
Android studio 2021.3.1不生成iml文件
Android studio 2021.3.1不生成iml文件
33 5
|
20天前
|
Android开发
Android stdio 无法新建或打开AIDL文件(解决方法)
Android stdio 无法新建或打开AIDL文件(解决方法)
55 0
|
20天前
|
Android开发
android string.xml文件中的整型和string型代替
android string.xml文件中的整型和string型代替
15 0
|
20天前
|
Android开发
android捕获全局异常,并对异常做出处理
android捕获全局异常,并对异常做出处理
20 4
|
20天前
|
Android开发
android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限
android 12 U盘 /mnt/media_rw 下读取文件异常 没有权限
68 0