error checks, manifest updates to limit market devices
authorMichael Gernoth <michael@gernoth.net>
Wed, 5 Sep 2012 16:22:00 +0000 (18:22 +0200)
committerMichael Gernoth <michael@gernoth.net>
Wed, 5 Sep 2012 16:22:00 +0000 (18:22 +0200)
MS2Debounce/AndroidManifest.xml
MS2Debounce/src/de/rmdir/ms2debounce/DebounceModuleHelper.java
MS2Debounce/src/de/rmdir/ms2debounce/MS2Debounce.java

index 3087cfb..3d999b1 100644 (file)
@@ -1,8 +1,13 @@
 <?xml version="1.0" encoding="utf-8"?>
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
       package="de.rmdir.ms2debounce"
-      android:versionCode="1"
-      android:versionName="1.0">
+      android:versionCode="4"
+      android:versionName="1.4">
+    <uses-sdk android:minSdkVersion="8" />
+    <uses-configuration android:reqKeyboardType="qwerty" />
+    <supports-screens android:smallScreens="false"
+                     android:normalScreens="true"
+                     android:largeScreens="false" />
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
     <application android:label="@string/app_name" android:icon="@drawable/icon">
         <activity android:name="MS2Debounce"
index 6234eae..b5310d6 100644 (file)
@@ -32,9 +32,13 @@ public class DebounceModuleHelper
                setActiveHigh(getSavedActiveHigh());
        }
 
-       public void loadModule() {
-               _loadModule();
+       public boolean loadModule() {
+               if (!_loadModule())
+                       return false;
+
                setAllValues();
+
+               return true;
        }
 
        protected void runAsRoot(String command) throws java.io.IOException,java.lang.InterruptedException {
@@ -48,7 +52,7 @@ public class DebounceModuleHelper
                rootcmd.waitFor();
        }
 
-       public synchronized void _loadModule() {
+       public synchronized boolean _loadModule() {
                File debounce_ko = new File(ctx.getFilesDir() + "/debounce.ko");
 
                extractModule();
@@ -61,28 +65,34 @@ public class DebounceModuleHelper
                }
 
                try {
-                       runAsRoot("/system/bin/insmod " + debounce_ko);
+                       runAsRoot("/system/bin/insmod " + debounce_ko + " || /system/xbin/insmod " + debounce_ko);
                } catch (Exception e) {
-                       return;
+                       return false;
                }
 
                if (!isLoaded()) {
-                       return;
+                       return false;
                }
 
                if (getDelay() < 0) {
-                       return;
+                       return false;
                }
 
                /* Module was obviously loaded, so it is safe to load on boot */
                editor.putBoolean("safe_to_load", true);
                editor.commit();
+
+               return true;
        }
 
-       public synchronized void unloadModule() {
+       public synchronized boolean unloadModule() {
                try {
-                       runAsRoot("/system/bin/rmmod debounce");
-               } catch (Exception e) {}
+                       runAsRoot("/system/bin/rmmod debounce || /system/xbin/rmmod debounce");
+               } catch (Exception e) {
+                       return false;
+               }
+
+               return true;
        }
 
        public synchronized boolean isLoaded() {
@@ -138,7 +148,8 @@ public class DebounceModuleHelper
                        fbuf.write((new Integer(value)).toString());
 
                        fbuf.close();
-               } catch (Exception e) {}
+               } catch (Exception e) {
+               }
        }
 
        public synchronized int getDelay() {
index 27508fc..c7ba1b9 100644 (file)
@@ -238,7 +238,8 @@ public class MS2Debounce extends Activity
        public void loadModule(View view) {
                disableUI();
                if (!module.isLoaded()) {
-                       module.loadModule();
+                       if (!module.loadModule())
+                               showDialog(23);
                }
                updateUI();
        }
@@ -246,7 +247,8 @@ public class MS2Debounce extends Activity
        public void unloadModule(View view) {
                disableUI();
                if (module.isLoaded()) {
-                       module.unloadModule();
+                       if (!module.unloadModule())
+                               showDialog(23);
                }
                updateUI();
        }
@@ -254,7 +256,8 @@ public class MS2Debounce extends Activity
        public void setValues(View view) {
                disableUI();
                if (!module.isLoaded()) {
-                       module.loadModule();
+                       if (!module.loadModule())
+                               showDialog(23);
                }
                module.setAllValues();
                updateUI();
@@ -305,15 +308,33 @@ public class MS2Debounce extends Activity
        protected Dialog onCreateDialog(int id) {
                Dialog dlg = null;
 
-               AlertDialog.Builder about = new AlertDialog.Builder(this);
-               about.setMessage("Milestone 2 Debounce\n\n(C) 2011 Michael Gernoth <michael@gernoth.net>\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA")
-                       .setCancelable(true)
-                       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
-                               public void onClick(DialogInterface dialog, int id) {
-                                       dialog.cancel();
-                               }
-                       });
-               dlg = about.create();
+               switch(id) {
+                       case 23:
+                               AlertDialog.Builder noroot = new AlertDialog.Builder(this);
+                               noroot.setMessage("Could not get root access! Is this device rooted and have you granted SuperUser privileges?")
+                                       .setCancelable(true)
+                                       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+                                               public void onClick(DialogInterface dialog, int id) {
+                                                       dialog.cancel();
+                                               }
+                                       });
+                               dlg = noroot.create();
+                               break;
+                       case 42:
+                               AlertDialog.Builder about = new AlertDialog.Builder(this);
+                               about.setMessage("Milestone 2 Debounce\n\n(C) 2011 Michael Gernoth <michael@gernoth.net>\n\nThis program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation version 2 of the License.\n\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA")
+                                       .setCancelable(true)
+                                       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
+                                               public void onClick(DialogInterface dialog, int id) {
+                                                       dialog.cancel();
+                                               }
+                                       });
+                               dlg = about.create();
+                               break;
+                       default:
+                               dlg = null;
+                               break;
+               }
 
                return dlg;
        }
Impressum, Datenschutz