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 : 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;
 
}
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
 
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