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:
mais pour SystemProperties.set() ne marche pas et je ne sais pas comment utiliser le DexFile (pour décompresser)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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; }
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
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } }
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
Partager