Skip to content

Commit e1a8314

Browse files
committed
opt code
1 parent c3a2f9c commit e1a8314

5 files changed

Lines changed: 59 additions & 54 deletions

File tree

app/src/main/java/com/sevtinge/hyperceiler/ui/activity/HyperCeilerTabActivity.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -112,13 +112,7 @@ private boolean haveCrashReport() {
112112

113113
@Override
114114
public void error(String reason) {
115-
handler.post(() -> new AlertDialog.Builder(context)
116-
.setCancelable(false)
117-
.setTitle(getResources().getString(R.string.tip))
118-
.setMessage(getResources().getString(R.string.root))
119-
.setHapticFeedbackEnabled(true)
120-
.setPositiveButton(android.R.string.ok, null)
121-
.show());
115+
handler.post(() -> DialogHelper.showNoRootPermissionDialog(this));
122116
}
123117

124118
@Override
Lines changed: 2 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,6 @@
11
package com.sevtinge.hyperceiler.ui.activity.base;
22

3-
import android.app.backup.BackupManager;
4-
import android.content.SharedPreferences;
5-
import android.net.Uri;
63
import android.os.Bundle;
7-
import android.os.FileObserver;
84
import android.util.Log;
95
import android.view.View;
106
import android.widget.ImageView;
@@ -13,13 +9,9 @@
139
import androidx.annotation.Nullable;
1410

1511
import com.sevtinge.hyperceiler.R;
16-
import com.sevtinge.hyperceiler.provider.SharedPrefsProvider;
1712
import com.sevtinge.hyperceiler.utils.Helpers;
1813
import com.sevtinge.hyperceiler.utils.prefs.PrefsUtils;
1914

20-
import java.io.File;
21-
import java.util.Set;
22-
2315
import fan.core.utils.AttributeResolver;
2416
import fan.navigator.app.NavigatorActivity;
2517

@@ -32,9 +24,7 @@ protected void onCreate(@Nullable Bundle savedInstanceState) {
3224
checkTheme();
3325
mProxy = new SettingsProxy(this);
3426
super.onCreate(savedInstanceState);
35-
//initActionBar();
3627
registerObserver();
37-
//setRestartView(view -> DialogHelper.showRestartDialog(this));
3828
}
3929

4030
public void checkTheme() {
@@ -68,43 +58,8 @@ public void setRestartView(View.OnClickListener listener) {
6858
}
6959

7060
private void registerObserver() {
71-
PrefsUtils.mSharedPreferences.registerOnSharedPreferenceChangeListener(mSharedPreferenceChangeListener);
61+
PrefsUtils.registerOnSharedPreferenceChangeListener(getApplicationContext());
7262
Helpers.fixPermissionsAsync(getApplicationContext());
73-
registerFileObserver();
74-
}
75-
76-
SharedPreferences.OnSharedPreferenceChangeListener mSharedPreferenceChangeListener = (sharedPreferences, s) -> {
77-
Log.i("prefs", "Changed: " + s);
78-
requestBackup();
79-
Object val = sharedPreferences.getAll().get(s);
80-
String path = "";
81-
if (val instanceof String)
82-
path = "string/";
83-
else if (val instanceof Set<?>)
84-
path = "stringset/";
85-
else if (val instanceof Integer)
86-
path = "integer/";
87-
else if (val instanceof Boolean)
88-
path = "boolean/";
89-
getContentResolver().notifyChange(Uri.parse("content://" + SharedPrefsProvider.AUTHORITY + "/" + path + s), null);
90-
if (!path.isEmpty()) getContentResolver().notifyChange(Uri.parse("content://" + SharedPrefsProvider.AUTHORITY + "/pref/" + path + s), null);
91-
};
92-
93-
private void registerFileObserver() {
94-
try {
95-
FileObserver mFileObserver = new FileObserver(new File(PrefsUtils.getSharedPrefsPath()), FileObserver.CLOSE_WRITE) {
96-
@Override
97-
public void onEvent(int event, String path) {
98-
Helpers.fixPermissionsAsync(getApplicationContext());
99-
}
100-
};
101-
mFileObserver.startWatching();
102-
} catch (Throwable t) {
103-
Log.e("prefs", "Failed to start FileObserver!");
104-
}
105-
}
106-
107-
public void requestBackup() {
108-
new BackupManager(getApplicationContext()).dataChanged();
63+
Helpers.registerFileObserver(getApplicationContext());
10964
}
11065
}

app/src/main/java/com/sevtinge/hyperceiler/utils/DialogHelper.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,4 +142,14 @@ public static void showSafeModeDialog(Context context, String msg) {
142142
.setNegativeButton(R.string.safe_mode_ok, (dialog, which) -> dialog.dismiss())
143143
.show();
144144
}
145+
146+
public static void showNoRootPermissionDialog(Context context) {
147+
new AlertDialog.Builder(context)
148+
.setCancelable(false)
149+
.setTitle(R.string.tip)
150+
.setMessage(R.string.root)
151+
.setHapticFeedbackEnabled(true)
152+
.setPositiveButton(android.R.string.ok, null)
153+
.show();
154+
}
145155
}

app/src/main/java/com/sevtinge/hyperceiler/utils/Helpers.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
import android.annotation.SuppressLint;
2525
import android.app.Activity;
2626
import android.app.ActivityOptions;
27+
import android.app.backup.BackupManager;
2728
import android.content.Context;
2829
import android.content.Intent;
2930
import android.content.res.Configuration;
@@ -36,7 +37,9 @@
3637
import android.graphics.Shader;
3738
import android.net.Uri;
3839
import android.os.Environment;
40+
import android.os.FileObserver;
3941
import android.os.UserHandle;
42+
import android.util.Log;
4043
import android.util.LruCache;
4144
import android.widget.TextView;
4245

@@ -170,6 +173,24 @@ public static void fixPermissionsAsync(Context context) {
170173
});
171174
}
172175

176+
public static void registerFileObserver(Context context) {
177+
try {
178+
FileObserver mFileObserver = new FileObserver(new File(PrefsUtils.getSharedPrefsPath()), FileObserver.CLOSE_WRITE) {
179+
@Override
180+
public void onEvent(int event, String path) {
181+
Helpers.fixPermissionsAsync(context);
182+
}
183+
};
184+
mFileObserver.startWatching();
185+
} catch (Throwable t) {
186+
Log.e("prefs", "Failed to start FileObserver!");
187+
}
188+
}
189+
190+
public static void requestBackup(Context context) {
191+
new BackupManager(context).dataChanged();
192+
}
193+
173194
private static String getCallerMethod() {
174195
StackTraceElement[] stackTrace = Thread.currentThread().getStackTrace();
175196
for (StackTraceElement el : stackTrace)

app/src/main/java/com/sevtinge/hyperceiler/utils/prefs/PrefsUtils.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,15 @@
1818
*/
1919
package com.sevtinge.hyperceiler.utils.prefs;
2020

21+
import android.content.ContentResolver;
2122
import android.content.Context;
2223
import android.content.SharedPreferences;
2324
import android.database.Cursor;
2425
import android.net.Uri;
26+
import android.util.Log;
2527

2628
import com.sevtinge.hyperceiler.XposedInit;
29+
import com.sevtinge.hyperceiler.provider.SharedPrefsProvider;
2730
import com.sevtinge.hyperceiler.utils.Helpers;
2831
import com.sevtinge.hyperceiler.utils.api.ProjectApi;
2932
import com.sevtinge.hyperceiler.utils.log.XposedLogUtils;
@@ -185,4 +188,26 @@ public static boolean getSharedBoolPrefs(Context context, String name, boolean d
185188
else
186189
return defValue;
187190
}
191+
192+
193+
public static void registerOnSharedPreferenceChangeListener(Context context) {
194+
mSharedPreferences.registerOnSharedPreferenceChangeListener((sharedPreferences, key) -> {
195+
Log.i("prefs", "Changed: " + key);
196+
Helpers.requestBackup(context);
197+
Object val = sharedPreferences.getAll().get(key);
198+
String path = "";
199+
if (val instanceof String)
200+
path = "string/";
201+
else if (val instanceof Set<?>)
202+
path = "stringset/";
203+
else if (val instanceof Integer)
204+
path = "integer/";
205+
else if (val instanceof Boolean)
206+
path = "boolean/";
207+
208+
ContentResolver resolver = context.getContentResolver();
209+
resolver.notifyChange(Uri.parse("content://" + SharedPrefsProvider.AUTHORITY + "/" + path + key), null);
210+
if (!path.isEmpty()) resolver.notifyChange(Uri.parse("content://" + SharedPrefsProvider.AUTHORITY + "/pref/" + path + key), null);
211+
});
212+
}
188213
}

0 commit comments

Comments
 (0)