import java.io.File;
import java.io.FileReader;
import java.io.BufferedReader;
+import java.io.DataOutputStream;
import android.content.Context;
import android.content.SharedPreferences;
{
private Context ctx;
public static final String PREFS_NAME = "DebounceCfg";
+ final int SUPERUSER_REQUEST = 4223;
public DebounceModuleHelper(Context context) {
ctx = context;
loadModule(getSavedDelay());
}
+ protected void runAsRoot(String command) throws java.io.IOException,java.lang.InterruptedException {
+ Process rootcmd = Runtime.getRuntime().exec(new String[]{"su","-c","sh"});
+ DataOutputStream sh = new DataOutputStream(rootcmd.getOutputStream());
+ sh.writeBytes(command + "\n");
+ sh.writeBytes("exit\n");
+ sh.flush();
+ sh.close();
+
+ rootcmd.waitFor();
+ }
+
public synchronized void loadModule(int delay) {
File debounce_ko = new File(ctx.getFilesDir() + "/debounce.ko");
}
try {
- Process insmod = Runtime.getRuntime().exec(new String[]{"su","-c","/system/bin/insmod " + debounce_ko + " debounce_delay=" + delay});
- insmod.waitFor();
+ runAsRoot("/system/bin/insmod " + debounce_ko + " debounce_delay=" + delay);
} catch (Exception e) {
return;
}
public synchronized void unloadModule() {
try {
- Process rmmod = Runtime.getRuntime().exec(new String[]{"su","-c","/system/bin/rmmod debounce"});
- rmmod.waitFor();
+ runAsRoot("/system/bin/rmmod debounce");
} catch (Exception e) {}
}