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(?,?);");


相关文章
|
Shell API Android开发
android queries属性
android queries属性
978 2
|
XML Java Android开发
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
Android Studio App开发中改造已有的控件实战(包括自定义支付宝月份选择器、给翻页栏添加新属性、不滚动的列表视图 附源码)
276 1
|
6月前
|
Android开发 开发者
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
本文详细介绍了如何通过自定义 `attrs.xml` 文件实现 Android 自定义 View 的属性配置。以一个包含 TextView 和 ImageView 的 DemoView 为例,讲解了如何使用自定义属性动态改变文字内容和控制图片显示隐藏。同时,通过设置布尔值和点击事件,实现了图片状态的切换功能。代码中展示了如何在构造函数中解析自定义属性,并通过方法 `setSetting0n` 和 `setbackeguang` 实现功能逻辑的优化与封装。此示例帮助开发者更好地理解自定义 View 的开发流程与 attrs.xml 的实际应用。
148 2
Android自定义View之不得不知道的文件attrs.xml(自定义属性)
|
Android开发 UED
Android focusable属性的作用
Android focusable属性的作用
432 0
|
XML Android开发 数据格式
Android中利用shape属性自定义设置Button按钮
Android中利用shape属性自定义设置Button按钮
497 0
|
Java Android开发 C++
Android源代码定制:MK文件执行顺序|属性覆盖
Android源代码定制:MK文件执行顺序|属性覆盖
1238 2
Android源代码定制:MK文件执行顺序|属性覆盖
|
Android开发
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
AutoX——当Android中clickable属性显示为false,实际可点击的布局如何处理
230 0
|
缓存 安全 Java
Android中的persistent属性
Android中的persistent属性
838 2
|
Android开发
通过反射方式获取Android设备系统属性
通过反射方式获取Android设备系统属性 【5月更文挑战第1天】
285 2
|
Android开发 C++
Android 系统属性(SystemProperties)
Android 系统属性(SystemProperties)
741 1

热门文章

最新文章