affecter des paramètres par appel au android.os.SystemProperties
salut,;)
je veux utiliser la fonction android.os.SystemProperties.set(key,value).
je sais que cette classe est impossible l'importé directement et dans ce cas j'ai trouvé un classe qui utilise: Class.forName("android.os.SystemProperties") ...
je sais que cette technique est marche bien car j'ai testé avec android.os.SystemProperties.get(key) dont le code est le suivant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
public static String get(Context context, String key) throws IllegalArgumentException {
String ret= "!!";
try{
ClassLoader cl = context.getClassLoader();
@SuppressWarnings("rawtypes")
Class SystemProperties = cl.loadClass("android.os.SystemProperties");
//Parameters Types
@SuppressWarnings("rawtypes")
Class[] paramTypes= new Class[1];
paramTypes[0]= String.class;
Method get = SystemProperties.getMethod("get", paramTypes);
//Parameters
Object[] params= new Object[1];
params[0]= new String(key);
ret= (String) get.invoke(SystemProperties, params);
}catch( IllegalArgumentException iAE ){
throw iAE;
}catch( Exception e ){
ret= "";
//TODO
}
return ret;
} |
mais pour SystemProperties.set() ne marche pas et je ne sais pas comment utiliser le DexFile (pour décompresser)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
public static void set(Context context, String key, String val) throws IllegalArgumentException {
try{
@SuppressWarnings("unused")
DexFile df = new DexFile(new File("/system/app/Settings.apk"));
@SuppressWarnings("unused")
ClassLoader cl = context.getClassLoader();
@SuppressWarnings("rawtypes")
Class SystemProperties = Class.forName("android.os.SystemProperties");
//Parameters Types
@SuppressWarnings("rawtypes")
Class[] paramTypes= new Class[2];
paramTypes[0]= String.class;
paramTypes[1]= String.class;
Method set = SystemProperties.getMethod("set", paramTypes);
//Parameters
Object[] params= new Object[2];
params[0]= new String(key);
params[1]= new String(val);
set.invoke(SystemProperties, params);
}catch( IllegalArgumentException iAE ){
throw iAE;
}catch( Exception e ){
//TODO
}
} |
j'ai constaté après qlques jours de recherche que "/system/app/Settings.apk" contient l'ensemble des classe .java sous le dossier com.android.settings
mais comment l'utilisé pour que la fonction SystemProperties.set(key,value) est marche
et s'il existe une autre package autre que settings.apk qui m'aide merci de m'informé
merci d'avance