Android 7.1 ro.rk.install_non_market_apps属性无效

简介: Android 7.1 ro.rk.install_non_market_apps属性无效

平台


RK3288/RK3368 + Android 7.12


问题


在旧的SDK上, 可以通过设置默认 ro.rk.install_non_market_apps=true, 默认打开安装未知来源应用 在新的代码上此属性不生效


解决


diff --git a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
old mode 100644
new mode 100755
index 9ed6063..dac22e1
--- a/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
+++ b/frameworks/base/packages/SettingsProvider/src/com/android/providers/settings/DatabaseHelper.java
@@ -2522,8 +2522,13 @@ class DatabaseHelper extends SQLiteOpenHelper {
             loadStringSetting(stmt, Settings.Secure.IMMERSIVE_MODE_CONFIRMATIONS,
                         R.string.def_immersive_mode_confirmations);
-            loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS,
-                    R.bool.def_install_non_market_apps);
+            String propNonMarket = android.os.SystemProperties.get("ro.rk.install_non_market_apps");
+            if(propNonMarket.equals("true")){
+                loadSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, "1");
+            }else{
+                loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS,
+                        R.bool.def_install_non_market_apps);
+            }
             loadBooleanSetting(stmt, Settings.Secure.WAKE_GESTURE_ENABLED,
                     R.bool.def_wake_gesture_enabled);


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

private void loadSecureSettings(SQLiteDatabase db) {
        SQLiteStatement stmt = null;
        try {
        //...省略代码...
            String propNonMarket = android.os.SystemProperties.get("ro.rk.install_non_market_apps");
            if(propNonMarket.equals("true")){
                loadSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, "1");
            }else{
                loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS,
                        R.bool.def_install_non_market_apps);
            }
  //...省略代码...
  }


插曲


刚开始加的代码是:

loadBooleanSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS,
                        R.bool.def_install_non_market_apps);
            String propNonMarket = android.os.SystemProperties.get("ro.rk.install_non_market_apps");
            if(propNonMarket.equals("true")){
                loadSetting(stmt, Settings.Secure.INSTALL_NON_MARKET_APPS, "1");
            }


这是无效的, 原因是, 第一行的代码已经往数据库里插入了数据. 见下面SQLiteStatement 的赋值方式:


SQLiteStatement stmt = null;
        stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
                    + " VALUES(?,?);");


相关文章
|
6月前
|
Android开发
android 错误 exported needs to be explicitly specified for Apps targeting Android 12
android 错误 exported needs to be explicitly specified for Apps targeting Android 12
|
Android开发 开发者 小程序
|
测试技术 Android开发
Android 源代码自动编译packages/apps
/*************************************************************************** * Android 源代码自动编译packages/apps * 说明: * 有时候自己编写了一些测试软件,可能会希望自动编译到Android系统中去,但 * 我们又不希望每次都自己去手动编译,让系统自己编译是一个不错的选择。
1163 0
|
前端开发 JavaScript Android开发
|
Android开发
Building Android Apps 30条建议
Building Android Apps — 30 things that experience made me learn the hard way There are two kinds of people — those who learn the hard way and those who learn by taking someone’s advice.
731 0