Skip to content

Commit 54463a4

Browse files
committed
support temporary allow debugging
Signed-off-by: Tommy Alex <[email protected]>
1 parent 77b1a34 commit 54463a4

File tree

5 files changed

+76
-2
lines changed

5 files changed

+76
-2
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package net.iptux.xposed.usbdebugging;
2+
3+
import android.content.SharedPreferences;
4+
import android.preference.SwitchPreference;
5+
6+
import java.lang.ref.WeakReference;
7+
8+
class RelockRunnable implements Runnable {
9+
SharedPreferences sharedPreferences;
10+
WeakReference<SwitchPreference> weakReference;
11+
12+
RelockRunnable(SharedPreferences sharedPreferences, SwitchPreference switchPreference) {
13+
this.sharedPreferences = sharedPreferences;
14+
this.weakReference = new WeakReference<>(switchPreference);
15+
}
16+
17+
@Override
18+
public void run() {
19+
SwitchPreference preference = weakReference.get();
20+
if (null != preference) {
21+
preference.setChecked(true);
22+
} else {
23+
SharedPreferences.Editor editor = sharedPreferences.edit();
24+
editor.putBoolean(Settings.PREF_DENY_USB_DEBUGGING, true);
25+
editor.apply();
26+
}
27+
}
28+
}

UsbDebugging/src/main/java/net/iptux/xposed/usbdebugging/Settings.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,9 @@
2121
import de.robv.android.xposed.XSharedPreferences;
2222

2323
class Settings {
24-
private static final String PREF_DENY_USB_DEBUGGING = "deny_usb_debugging";
24+
static final String PREF_DENY_USB_DEBUGGING = "deny_usb_debugging";
25+
static final String PREF_TEMPORARY_ALLOW = "temporary_allow";
26+
static final String PREF_TEMPORARY_ALLOW_INTETVAL = "temporary_allow_interval";
2527
static final String PREF_VERSION_NAME = "version_name";
2628

2729
private static class SingletonHelper {

UsbDebugging/src/main/java/net/iptux/xposed/usbdebugging/SettingsActivity.java

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,42 @@
1818

1919
package net.iptux.xposed.usbdebugging;
2020

21+
import android.content.SharedPreferences;
2122
import android.preference.PreferenceActivity;
2223
import android.os.Bundle;
24+
import android.preference.SwitchPreference;
2325

24-
public class SettingsActivity extends PreferenceActivity {
26+
public class SettingsActivity extends PreferenceActivity
27+
implements SharedPreferences.OnSharedPreferenceChangeListener {
28+
SwitchPreference denyUsbDebuggingPreference;
2529
@Override
2630
protected void onCreate(Bundle savedInstanceState) {
2731
super.onCreate(savedInstanceState);
2832
getPreferenceManager().setSharedPreferencesMode(MODE_WORLD_READABLE);
33+
getPreferenceManager().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
2934
addPreferencesFromResource(R.xml.preferences);
3035

36+
denyUsbDebuggingPreference = (SwitchPreference) findPreference(Settings.PREF_DENY_USB_DEBUGGING);
3137
findPreference(Settings.PREF_VERSION_NAME).setSummary(BuildConfig.VERSION_NAME);
3238
}
39+
40+
@Override
41+
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
42+
switch (key) {
43+
case Settings.PREF_DENY_USB_DEBUGGING:
44+
if (!sharedPreferences.getBoolean(key, true)) {
45+
scheduleRelock(sharedPreferences);
46+
}
47+
break;
48+
}
49+
}
50+
51+
void scheduleRelock(SharedPreferences sharedPreferences) {
52+
if (sharedPreferences.getBoolean(Settings.PREF_TEMPORARY_ALLOW, true)) {
53+
String value = sharedPreferences.getString(Settings.PREF_TEMPORARY_ALLOW_INTETVAL, "10");
54+
long interval = Long.parseLong(value);
55+
RelockRunnable runnable = new RelockRunnable(sharedPreferences, denyUsbDebuggingPreference);
56+
findViewById(android.R.id.content).postDelayed(runnable, interval * 1000);
57+
}
58+
}
3359
}

UsbDebugging/src/main/res/values/strings.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
2525
<string name="pref_deny_usb_debugging">deny_usb_debugging</string>
2626
<string name="pref_title_deny_usb_debugging">Deny USB Debugging</string>
2727
<string name="pref_summery_deny_usb_debugging">If this option as no effect, you may need to disable this module and then reboot to allow debugging again.</string>
28+
<string name="pref_title_temporary_allow">Temporary Allow USB Debugging</string>
29+
<string name="pref_summery_temporary_allow">re-enable the `Deny USB Debugging\' option after disabled.\nUseful if you want to temporary allow USB debugging.</string>
30+
<string name="pref_temporary_allow" translatable="false">temporary_allow</string>
31+
<string name="pref_title_temporary_allow_interval">Temporary Allow Interval (seconds)</string>
32+
<string name="pref_temporary_allow_interval" translatable="false">temporary_allow_interval</string>
2833
<string name="pref_title_about">About</string>
2934
<string name="pref_title_author">Author</string>
3035
<string name="pref_title_email">E-mail</string>

UsbDebugging/src/main/res/xml/preferences.xml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,19 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
3030
android:key="@string/pref_deny_usb_debugging"
3131
android:defaultValue="true"
3232
/>
33+
<SwitchPreference
34+
android:title="@string/pref_title_temporary_allow"
35+
android:summary="@string/pref_summery_temporary_allow"
36+
android:key="@string/pref_temporary_allow"
37+
android:defaultValue="true"
38+
/>
39+
<EditTextPreference
40+
android:title="@string/pref_title_temporary_allow_interval"
41+
android:dependency="@string/pref_temporary_allow"
42+
android:key="@string/pref_temporary_allow_interval"
43+
android:inputType="number"
44+
android:defaultValue="10"
45+
/>
3346
</PreferenceCategory>
3447
<PreferenceCategory
3548
android:title="@string/pref_title_about"

0 commit comments

Comments
 (0)