Switch to DB based su configs
This commit is contained in:
parent
1e4425b30f
commit
ff6938280e
@ -161,18 +161,8 @@ public class MagiskManager extends Application {
|
|||||||
isSuClient = suVersion.toUpperCase().contains("MAGISK");
|
isSuClient = suVersion.toUpperCase().contains("MAGISK");
|
||||||
}
|
}
|
||||||
if (isSuClient) {
|
if (isSuClient) {
|
||||||
ret = Shell.sh("getprop " + ROOT_ACCESS_PROP);
|
suAccessState = suDB.getSettings(SuDatabaseHelper.ROOT_ACCESS, 3);
|
||||||
if (Utils.isValidShellResponse(ret)) {
|
multiuserMode = suDB.getSettings(SuDatabaseHelper.MULTIUSER_MODE, 0);
|
||||||
suAccessState = Integer.parseInt(ret.get(0));
|
|
||||||
} else {
|
|
||||||
suAccessState = 0;
|
|
||||||
}
|
|
||||||
ret = Shell.sh("getprop " + MULTIUSER_MODE_PROP);
|
|
||||||
if (Utils.isValidShellResponse(ret)) {
|
|
||||||
multiuserMode = Integer.parseInt(ret.get(0));
|
|
||||||
} else {
|
|
||||||
multiuserMode = 0;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import com.topjohnwu.magisk.asyncs.MagiskHide;
|
|||||||
import com.topjohnwu.magisk.asyncs.SerialTask;
|
import com.topjohnwu.magisk.asyncs.SerialTask;
|
||||||
import com.topjohnwu.magisk.components.Activity;
|
import com.topjohnwu.magisk.components.Activity;
|
||||||
import com.topjohnwu.magisk.components.AlertDialogBuilder;
|
import com.topjohnwu.magisk.components.AlertDialogBuilder;
|
||||||
|
import com.topjohnwu.magisk.database.SuDatabaseHelper;
|
||||||
import com.topjohnwu.magisk.utils.Logger;
|
import com.topjohnwu.magisk.utils.Logger;
|
||||||
import com.topjohnwu.magisk.utils.Shell;
|
import com.topjohnwu.magisk.utils.Shell;
|
||||||
import com.topjohnwu.magisk.utils.Utils;
|
import com.topjohnwu.magisk.utils.Utils;
|
||||||
@ -188,24 +189,12 @@ public class SettingsActivity extends Activity {
|
|||||||
}.exec();
|
}.exec();
|
||||||
break;
|
break;
|
||||||
case "su_access":
|
case "su_access":
|
||||||
magiskManager.suAccessState = Utils.getPrefsInt(prefs, "su_access", 0);
|
magiskManager.suAccessState = Utils.getPrefsInt(prefs, "su_access", 3);
|
||||||
new SerialTask<Void, Void, Void>(getActivity()) {
|
magiskManager.suDB.setSettings(SuDatabaseHelper.ROOT_ACCESS, magiskManager.suAccessState);
|
||||||
@Override
|
|
||||||
protected Void doInBackground(Void... params) {
|
|
||||||
Shell.su("setprop " + MagiskManager.ROOT_ACCESS_PROP + " " + magiskManager.suAccessState);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}.exec();
|
|
||||||
break;
|
break;
|
||||||
case "multiuser_mode":
|
case "multiuser_mode":
|
||||||
magiskManager.multiuserMode = Utils.getPrefsInt(prefs, "multiuser_mode", 0);
|
magiskManager.multiuserMode = Utils.getPrefsInt(prefs, "multiuser_mode", 0);
|
||||||
new SerialTask<Void, Void, Void>(getActivity()) {
|
magiskManager.suDB.setSettings(SuDatabaseHelper.MULTIUSER_MODE, magiskManager.multiuserMode);
|
||||||
@Override
|
|
||||||
protected Void doInBackground(Void... params) {
|
|
||||||
Shell.su("setprop " + MagiskManager.MULTIUSER_MODE_PROP + " " + magiskManager.multiuserMode);
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
}.exec();
|
|
||||||
case "su_request_timeout":
|
case "su_request_timeout":
|
||||||
magiskManager.suRequestTimeout = Utils.getPrefsInt(prefs, "su_request_timeout", 10);
|
magiskManager.suRequestTimeout = Utils.getPrefsInt(prefs, "su_request_timeout", 10);
|
||||||
break;
|
break;
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.topjohnwu.magisk.database;
|
package com.topjohnwu.magisk.database;
|
||||||
|
|
||||||
|
import android.content.ContentValues;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.pm.PackageManager;
|
import android.content.pm.PackageManager;
|
||||||
import android.database.Cursor;
|
import android.database.Cursor;
|
||||||
@ -18,6 +19,9 @@ import java.util.List;
|
|||||||
|
|
||||||
public class SuDatabaseHelper extends SQLiteOpenHelper {
|
public class SuDatabaseHelper extends SQLiteOpenHelper {
|
||||||
|
|
||||||
|
public static final String ROOT_ACCESS = "root_access";
|
||||||
|
public static final String MULTIUSER_MODE = "multiuser_mode";
|
||||||
|
|
||||||
private static final int DATABASE_VER = 2;
|
private static final int DATABASE_VER = 2;
|
||||||
private static final String POLICY_TABLE = "policies";
|
private static final String POLICY_TABLE = "policies";
|
||||||
private static final String LOG_TABLE = "logs";
|
private static final String LOG_TABLE = "logs";
|
||||||
@ -206,4 +210,25 @@ public class SuDatabaseHelper extends SQLiteOpenHelper {
|
|||||||
db.delete(LOG_TABLE, null, null);
|
db.delete(LOG_TABLE, null, null);
|
||||||
db.close();
|
db.close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setSettings(String key, int value) {
|
||||||
|
ContentValues data = new ContentValues();
|
||||||
|
data.put("key", key);
|
||||||
|
data.put("value", value);
|
||||||
|
SQLiteDatabase db = getWritableDatabase();
|
||||||
|
db.replace(SETTINGS_TABLE, null, data);
|
||||||
|
db.close();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getSettings(String key, int defaultValue) {
|
||||||
|
SQLiteDatabase db = getReadableDatabase();
|
||||||
|
int value = defaultValue;
|
||||||
|
try (Cursor c = db.query(SETTINGS_TABLE, null, "key=?", new String[] { key }, null, null, null)) {
|
||||||
|
while (c.moveToNext()) {
|
||||||
|
value = c.getInt(c.getColumnIndex("value"));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
db.close();
|
||||||
|
return value;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user