System App Schreibrechte in /system/usr/keylayout

  • Antworten:3
Celle
  • Forum-Beiträge: 5

30.04.2013, 20:12:57 via Website

die App ist eine erweiterung für das Einstellungs Menü


diese soll das (Hardware!!!) Tastatur Layout ändern (die Layouts befinden sich schon vor ort und sollen nur umbenannt werden)

1try {Process suProcess = Runtime.getRuntime().exec("/system/xbin/su");
2 try { suProcess = Runtime.getRuntime().exec("busybox mount -o rw,remount /system");}
3 catch (IOException e) {return false;}
4 String keypadQwertz = (String) newValue;
5 SystemProperties.set(KEYPAD_QWERTZ_PERSIST_PROP, keypadQwertz);
6 mKeypadQwertzPref.setSummary(String.format(mKeypadQwertzSum,
7 mKeypadQwertzPref.getEntries()[mKeypadQwertzPref.findIndexOfValue(keypadQwertz)]));
8 if (keypadQwertz == "on") {//set QWERTY
9 try { suProcess = Runtime.getRuntime().exec("rm /system/usr/keylayout/keypad_8960.kl");}
10 catch (IOException e) { return false;}
11 try { suProcess = Runtime.getRuntime().exec("cp /system/usr/keylayout/keypad_qwerty.kl /system/usr/keylayout/keypad_8960.kl");}
12 catch (IOException e) {return false;}
13 }
14 else if (keypadQwertz == "off") {//set QWERTZ
15 try { suProcess = Runtime.getRuntime().exec("rm /system/usr/keylayout/keypad_8960.kl");}
16 catch (IOException e) {return false;}
17 try { suProcess = Runtime.getRuntime().exec("cp /system/usr/keylayout/keypad_qwertz.kl /system/usr/keylayout/keypad_8960.kl");}
18 catch (IOException e) {return false;}
19 }
20 try {suProcess.waitFor();} catch (InterruptedException e) {return false;}
21 } catch (IOException e) { return false;} //Try {Process...

nur bekomme ich zum Teufel keine Schreibrechte, Was mach ich falsch?

oder kennt jemand einen besseren Weg das Layout zu ändern, am besten ohne Reboot.

— geändert am 30.04.2013, 20:38:21

Antworten
Celle
  • Forum-Beiträge: 5

01.05.2013, 11:43:06 via Website

1String keypadQwertz = (String) newValue;
2 SystemProperties.set(KEYPAD_QWERTZ_PERSIST_PROP, keypadQwertz);
3 mKeypadQwertzPref.setSummary(String.format(mKeypadQwertzSum,
4 mKeypadQwertzPref.getEntries()[mKeypadQwertzPref.findIndexOfValue(keypadQwertz)]));
5 Process suProcess;
6 try {suProcess = Runtime.getRuntime().exec("/system/xbin/su");
7 DataOutputStream su = null;
8 su = new DataOutputStream(suProcess.getOutputStream());
9 su.writeBytes("mount -o rw,remount /system \n");
10 su.writeBytes("rm /system/usr/keylayout/keypad_8960.kl \n");
11 if (keypadQwertz == "on") {//set QWERTY
12 su.writeBytes("cp /system/usr/keylayout/keypad_qwerty.kl /system/usr/keylayout/keypad_8960.kl \n");}
13 else if (keypadQwertz == "off") {//set QWERTZ
14 su.writeBytes("cp /system/usr/keylayout/keypad_qwertz.kl /system/usr/keylayout/keypad_8960.kl \n");}
15 su.writeBytes("exit\n");
16 su.flush();
17 try {suProcess.waitFor();} catch (InterruptedException e) {Log.e("PHO","Cant Copy KeyPad File - IO");}
18 } catch (IOException e) { Log.e("PHO","Cant Copy KeyPad File - IO");} //Try {Process...
19 return true;

Immer noch keinen Erfolg, Hat niemand eine Idee

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

01.05.2013, 20:59:52 via App

Hast du in der Manifest die permssion für den Speicher gesetzt?

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Celle
  • Forum-Beiträge: 5

01.05.2013, 21:58:37 via Website

hmm Löschen ging komischerweise auch ohne

1Process suProcess;
2 try {suProcess = Runtime.getRuntime().exec("/system/xbin/su");
3 DataOutputStream su = new DataOutputStream(suProcess.getOutputStream());
4 su.writeBytes("mount -o rw,remount /system \n");
5 su.writeBytes("cd /system/usr/keylayout \n");
6 if (keypadMode == "qwertz") {
7 su.writeBytes("cp keypad_qwertz.kl keypad_8960.kl \n");}
8 else if (keypadMode == "qwerty") {
9 su.writeBytes("cp keypad_qwerty.kl keypad_8960.kl \n");}
10 else if (keypadMode == "azerty") {
11 su.writeBytes("cp keypad_azerty.kl keypad_8960.kl \n");}
12 su.writeBytes("exit\n");
13 su.flush();
14 try {suProcess.waitFor();} catch (InterruptedException e) {Log.e("PHO","Cant Copy KeyPad File - IE");}
15 } catch (IOException e) { Log.e("PHO","Cant Copy KeyPad File - IO");} //Try {Process...




1<uses-permission android:name="android.permission.ACCESS_SUPERUSER"/>
2<uses-permission android:name="android.permission.WRITE_INTERNAL_STORAGE"/>
nein keine Änderung
was mich wundert das immer ein anderer Prozess angezeigt wird der angeblich Superuser rechte hat

— geändert am 01.05.2013, 21:58:50

Antworten