Cómo agregar propiedades persistentes en el código fuente de Android
1 Uso de SystemProperties.get
Si el nombre de una propiedad comienza con "ro.", la propiedad se considera de solo lectura. Una vez establecido, el valor de la propiedad no se puede cambiar.
Si el nombre de la propiedad comienza con "persistente", cuando se establezca la propiedad, su valor también se escribirá en /data/property.
En C++, hay dos funciones correspondientes a las funciones JAVA property_set y property_get.get. De hecho, JAVA llama a estas dos funciones a través de JNI. language");
Método Obtener:
boolean fastfoodenable = SystemProperties.getBoolean(" persist.sys.fastfoodenable", false);
Método Establecer:
SystemProperties.set( "persist.sys.fastfoodenable", "true"
C
# incluye
property_set("persist.sys.language", "zh");
property_get("persist.sys.language",propLang, "en");
Se puede leer y modificar nombrando en adb shell
#getprop pers.sys.language
#setprop persist.sys.language zh
Usando Systemproperties set. (nombre, valor) crea y modifica propiedades de Android. Utilice Systemproperties.get(nombre) para obtener propiedades de Android. Cabe señalar que el nombre de las propiedades de Android tiene ciertos requisitos de formato, como se muestra a continuación: El prefijo debe. be Utilizando el prefijo definido en system\core \init\property_service.c, el programa que establece las propiedades del sistema también debe tener permisos de sistema o root
Si queremos agregar una propiedad: Por ejemplo: silvan_liu
Ruta: system/core/rootdir/int .rc
En el directorio post-fs-data
setprop persist.sys.silvan_liu 1/persist. nombre del prefijo sys; 1 es el valor inicial
PD: diferentes nombres de prefijo tienen diferentes permisos, por lo que no los explicaré uno por uno aquí por qué es necesario cargarlos en post-fs-; directorio de datos, esto está relacionado con la sintaxis de int.rc, porque es un nombre de prefijo rc
2 Usando Settings.System.putInt
Este método guardará la variable en. la base de datos de configuración. Este es también el método para activar y desactivar el modo avión, etc.
Primero, debe definir un valor de propiedad del sistema
Ruta: frameworks/base/core/java/android/provider/Settings.System.getInt(getContentResolver(),Settings. Sistema .VIVIEN_FASTFOOD,0)==1)
{
mYesORNo.setChecked(true);
}
else p >
mYesORNo.VIVIEN_FASTFOOD, 1);
} else {
Settings.System.putInt( getContentResolver(),
Settings.System. VIVIEN_FASTFOOD , 0);
}
necesita importar android.provider.Settings;
En el desarrollo del código fuente de Android, a menudo es necesario utilizar algunos elementos globales. banderas o variables En este punto podemos agregar los atributos deseados a Android.
1.Settings.system
A menudo usamos este tipo de propiedades del sistema, como activar y desactivar el modo avión. Solo necesitamos cambiar el valor de Settings.system.AIRPLANE_MODE_ON. .
A continuación se explica cómo definimos las propiedades del sistema. Por ejemplo, para agregar un atributo llamado "SILVAN_LIU",
Ruta: frameworks/base/core/java/android/provider/Settings.AIRPLANE_MODE_ON. java
Cadena final estática pública SILVAN_LIU = "silvan_liu";
Cadena final estática pública[] SETTINGS_TO_BACKUP = {
~
+ SILVAN_LIU
~
}
Una vez agregado de esta manera, puede configurarlo usando la configuración. System.getInt(getContentResolver(),Settings.System.SILVAN_LIU,0) y Settings.System.getInt() y Settings.System.getContentResolver().getContentResolver(), Settings.System.SILVAN_LIU,0) para obtener y configurar SILVAN_LIU El valor del atributo.
2. Propiedades del sistema
Para crear y modificar propiedades de Android, use Systemproperties.set(nombre,valor), y para obtener propiedades de Android, use Systemproperties.get(nombre). Los nombres de las propiedades de Android tienen un formato determinado, como sigue: El prefijo debe ser el prefijo definido en system\core\init\property_service. El prefijo definido en c, y el programa que establece las propiedades del sistema también deben tener permisos del sistema o permisos de root
Si queremos agregar una propiedad: Por ejemplo: silvan_liu
Ruta: sistema /core/ rootdir/int.rc
En el directorio post-fs-data
setprop persist.sys.silvan_liu 1/persist.sys nombre del prefijo 1 es el valor inicial; .
PD: Diferentes nombres de prefijo tienen diferentes permisos, por lo que no los explicaré uno por uno aquí en cuanto a por qué deben cargarse en el directorio post-fs-data; sintaxis de int.rc.
Lo anterior es lo que utilicé en proyectos reales. Tal vez mi comprensión no sea lo suficientemente profunda y necesito continuar explorando.
Reimprimir