plataforma
RK3288/RK3368 + Android 7.12
problema
En el SDK anterior, puede establecer el valor predeterminado ro.rk.install_non_market_apps = true para abrir e instalar aplicaciones de fuentes desconocidas de forma predeterminada . Esta propiedad no tiene efecto en el nuevo código
resolver
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 / Suppliers / 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);
}
//...省略代码...
}
episodio
- El código agregado al principio es:
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");
}
Esto no es válido porque la primera línea de código ha insertado datos en la base de datos. Consulte el siguiente método de asignación de SQLiteStatement :
SQLiteStatement stmt = null;
stmt = db.compileStatement("INSERT OR IGNORE INTO secure(name,value)"
+ " VALUES(?,?);");