需求:安装APK时需要输入密码,例如12345,才能安装成功,否则安装失败
- 添加系统数据库Settings.Global字段
//定义变量 frameworks/base/core/java/android/provider/Settings.java public static final String APK_INSTALL_PASSWORD = "apk_install_password"; //初始化变量 frameworks/base/packages/SettingsProvider/res/values/defaults.xml <string name="apk_install_password"></string> frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java loadStringSetting(stmt, Settings.Global.APK_INSTALL_PASSWORD, R.string.apk_install_password);
- 在Settings模块添加设置
//忽略布局 //添加二级选项 packages/apps/Settings/res/xml/security_dashboard_settings.xml <Preference android:order="60" android:title="@string/apk_install_setting"> <intent android:targetPackage="com.android.settings" android:targetClass="com.android.settings.security.ApkInstallActivity" /> </Preference> //安装设置 packages/apps/Settings/src/com/android/settings/security/ApkInstallActivity.java String IApassword = password.getText().toString(); Settings.Global.putString(getContentResolver(),Settings.Global.APK_INSTALL_PASSWORD,IApassword);
- 安装判断
frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java if (!systemApp) { String password = android.provider.Settings.Global.getString(mContext.getContentResolver(),android.provider.Settings.Global.APK_INSTALL_PASSWORD); if(password.equals("12345")){ res.returnCode = PackageManager.INSTALL_SUCCEEDED; }else { res.returnCode = PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES; } }