mirror of
https://github.com/topjohnwu/Magisk.git
synced 2024-11-27 20:15:29 +00:00
WIP sync
This commit is contained in:
parent
8a8aaf3297
commit
3706b53e65
@ -1,16 +1,18 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
|
||||||
package="com.topjohnwu.magisk">
|
package="com.topjohnwu.magisk">
|
||||||
<uses-sdk tools:overrideLibrary="com.kcoppock.broadcatsttilesupport"/>
|
|
||||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
|
<uses-sdk tools:overrideLibrary="com.kcoppock.broadcatsttilesupport" />
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
|
||||||
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||||
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
||||||
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.PACKAGE_USAGE_STATS"
|
android:name="android.permission.PACKAGE_USAGE_STATS"
|
||||||
tools:ignore="ProtectedPermissions"/>
|
tools:ignore="ProtectedPermissions" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
|
|
||||||
@ -25,11 +27,11 @@
|
|||||||
android:label="@string/accessibility_service_name"
|
android:label="@string/accessibility_service_name"
|
||||||
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
|
android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.accessibilityservice.AccessibilityService"/>
|
<action android:name="android.accessibilityservice.AccessibilityService" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.accessibilityservice"
|
android:name="android.accessibilityservice"
|
||||||
android:resource="@xml/accessibilityservice"/>
|
android:resource="@xml/accessibilityservice" />
|
||||||
</service>
|
</service>
|
||||||
<service
|
<service
|
||||||
android:name=".services.TileServiceNewApi"
|
android:name=".services.TileServiceNewApi"
|
||||||
@ -37,7 +39,7 @@
|
|||||||
android:label="@string/app_name"
|
android:label="@string/app_name"
|
||||||
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
|
android:permission="android.permission.BIND_QUICK_SETTINGS_TILE">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.service.quicksettings.action.QS_TILE"/>
|
<action android:name="android.service.quicksettings.action.QS_TILE" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</service>
|
</service>
|
||||||
|
|
||||||
@ -46,9 +48,9 @@
|
|||||||
android:enabled="true"
|
android:enabled="true"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="com.topjohnwu.magisk.CUSTOMTILE_ACTION_AUTOROOT"/>
|
<action android:name="com.topjohnwu.magisk.CUSTOMTILE_ACTION_AUTOROOT" />
|
||||||
<action android:name="com.topjohnwu.magisk.CUSTOMTILE_ACTION_DISABLEROOT"/>
|
<action android:name="com.topjohnwu.magisk.CUSTOMTILE_ACTION_DISABLEROOT" />
|
||||||
<action android:name="com.topjohnwu.magisk.CUSTOMTILE_ACTION_ENABLEROOT"/>
|
<action android:name="com.topjohnwu.magisk.CUSTOMTILE_ACTION_ENABLEROOT" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
@ -57,9 +59,9 @@
|
|||||||
android:configChanges="orientation|screenSize"
|
android:configChanges="orientation|screenSize"
|
||||||
android:exported="true">
|
android:exported="true">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN"/>
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.LAUNCHER"/>
|
<category android:name="android.intent.category.LAUNCHER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
@ -69,12 +71,12 @@
|
|||||||
android:icon="@drawable/ic_chooser"
|
android:icon="@drawable/ic_chooser"
|
||||||
android:label="@string/choose_file">
|
android:label="@string/choose_file">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.GET_CONTENT"/>
|
<action android:name="android.intent.action.GET_CONTENT" />
|
||||||
|
|
||||||
<category android:name="android.intent.category.DEFAULT"/>
|
<category android:name="android.intent.category.DEFAULT" />
|
||||||
<category android:name="android.intent.category.OPENABLE"/>
|
<category android:name="android.intent.category.OPENABLE" />
|
||||||
|
|
||||||
<data android:mimeType="*/*"/>
|
<data android:mimeType="*/*" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</activity>
|
</activity>
|
||||||
|
|
||||||
@ -86,12 +88,12 @@
|
|||||||
android:grantUriPermissions="true"
|
android:grantUriPermissions="true"
|
||||||
android:permission="android.permission.MANAGE_DOCUMENTS">
|
android:permission="android.permission.MANAGE_DOCUMENTS">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.content.action.DOCUMENTS_PROVIDER"/>
|
<action android:name="android.content.action.DOCUMENTS_PROVIDER" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</provider>
|
</provider>
|
||||||
<activity
|
<activity
|
||||||
android:name=".AboutActivity"
|
android:name=".AboutActivity"
|
||||||
android:theme="@style/AppTheme.Transparent"/>
|
android:theme="@style/AppTheme.Transparent" />
|
||||||
|
|
||||||
<provider
|
<provider
|
||||||
android:name="android.support.v4.content.FileProvider"
|
android:name="android.support.v4.content.FileProvider"
|
||||||
@ -100,11 +102,11 @@
|
|||||||
android:grantUriPermissions="true">
|
android:grantUriPermissions="true">
|
||||||
<meta-data
|
<meta-data
|
||||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||||
android:resource="@xml/file_paths"/>
|
android:resource="@xml/file_paths" />
|
||||||
</provider>
|
</provider>
|
||||||
<receiver android:name=".receivers.AutoStartReceiver">
|
<receiver android:name=".receivers.AutoStartReceiver">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
</receiver>
|
</receiver>
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@ import android.widget.ImageView;
|
|||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
import android.widget.Switch;
|
import android.widget.Switch;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
import android.widget.Toast;
|
||||||
|
|
||||||
import com.topjohnwu.magisk.receivers.Receiver;
|
import com.topjohnwu.magisk.receivers.Receiver;
|
||||||
import com.topjohnwu.magisk.services.MonitorService;
|
import com.topjohnwu.magisk.services.MonitorService;
|
||||||
@ -113,6 +114,7 @@ public class RootFragment extends Fragment implements Receiver {
|
|||||||
autoRootToggle.setOnClickListener(toggle -> {
|
autoRootToggle.setOnClickListener(toggle -> {
|
||||||
if (!Utils.hasServicePermission(getActivity())) {
|
if (!Utils.hasServicePermission(getActivity())) {
|
||||||
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
|
Intent intent = new Intent(android.provider.Settings.ACTION_ACCESSIBILITY_SETTINGS);
|
||||||
|
Toast.makeText(getActivity(),"Please enable accessibility access for Magisk's auto-toggle feature to work.", Toast.LENGTH_LONG).show();
|
||||||
startActivityForResult(intent, 100);
|
startActivityForResult(intent, 100);
|
||||||
} else {
|
} else {
|
||||||
ToggleAutoRoot(autoRootToggle.isChecked());
|
ToggleAutoRoot(autoRootToggle.isChecked());
|
||||||
|
@ -68,7 +68,7 @@ public class MonitorService extends AccessibilityService {
|
|||||||
ActivityInfo activityInfo = tryGetActivity(componentName);
|
ActivityInfo activityInfo = tryGetActivity(componentName);
|
||||||
boolean isActivity = activityInfo != null;
|
boolean isActivity = activityInfo != null;
|
||||||
if (isActivity) {
|
if (isActivity) {
|
||||||
Log.i("Magisk", "CurrentActivity: " + componentName.getPackageName());
|
Logger.dh("MonitorService: CurrentActivity: " + componentName.getPackageName());
|
||||||
String mPackage = componentName.getPackageName();
|
String mPackage = componentName.getPackageName();
|
||||||
|
|
||||||
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
|
||||||
|
@ -21,9 +21,9 @@ public class TileServiceCompat extends Service {
|
|||||||
|
|
||||||
private static boolean root, autoRoot;
|
private static boolean root, autoRoot;
|
||||||
|
|
||||||
public static final String TILE_ID = "com.shovelgrill.magiskmmtile.TILE";
|
public static final String TILE_ID = "Magisk";
|
||||||
public static final String ACTION_TILE_CLICK = "com.shovelgrill.magiskmmtile.ACTION_TILE_CLICK";
|
public static final String ACTION_TILE_CLICK = "magisk.ACTION_TILE_CLICK";
|
||||||
public static final String EXTRA_CLICK_TYPE = "com.shovelgrill.magiskmmtile.EXTRA_CLICK_TYPE";
|
public static final String EXTRA_CLICK_TYPE = "magisk.EXTRA_CLICK_TYPE";
|
||||||
public static final int CLICK_TYPE_UNKNOWN = -1;
|
public static final int CLICK_TYPE_UNKNOWN = -1;
|
||||||
public static final int CLICK_TYPE_SIMPLE = 0;
|
public static final int CLICK_TYPE_SIMPLE = 0;
|
||||||
public static final int CLICK_TYPE_LONG = 1;
|
public static final int CLICK_TYPE_LONG = 1;
|
||||||
|
@ -266,11 +266,19 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void installTile(Context context) {
|
public static void installTile(Context context) {
|
||||||
|
String qsTileId;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
qsTileId = "custom(com.topjohnwu.magisk/.services.TileServiceNewApi)";
|
||||||
|
} else {
|
||||||
|
qsTileId = "intent(Magisk)";
|
||||||
|
}
|
||||||
|
|
||||||
String qsTileId = "intent(" + TileServiceCompat.TILE_ID + ")";
|
|
||||||
List<String> lines = Shell.su("settings get secure sysui_qs_tiles");
|
List<String> lines = Shell.su("settings get secure sysui_qs_tiles");
|
||||||
if (lines != null && lines.size() == 1) {
|
if (lines != null && lines.size() == 1) {
|
||||||
List<String> tiles = new LinkedList<String>(Arrays.asList(lines.get(0).split(",")));
|
List<String> tiles = new LinkedList<String>(Arrays.asList(lines.get(0).split(",")));
|
||||||
|
List<String> tiles2;
|
||||||
|
int tileSpace = Math.round(tiles.size()/2);
|
||||||
|
Logger.dh("Utils: Current Tile String is "+ tiles);
|
||||||
if (tiles.size() > 1) {
|
if (tiles.size() > 1) {
|
||||||
for (String tile : tiles) {
|
for (String tile : tiles) {
|
||||||
if (tile.equals(qsTileId)) {
|
if (tile.equals(qsTileId)) {
|
||||||
@ -278,9 +286,15 @@ public class Utils {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tiles.add(tiles.size() + 1, qsTileId);
|
||||||
String newTiles = TextUtils.join(",", tiles);
|
String newTiles = TextUtils.join(",", tiles);
|
||||||
|
Logger.dh("Utils: NewtilesString is "+ newTiles);
|
||||||
Shell.su("settings put secure sysui_qs_tiles \"" + newTiles + "\"");
|
Shell.su("settings put secure sysui_qs_tiles \"" + newTiles + "\"");
|
||||||
Toast.makeText(context, "Tile installed", Toast.LENGTH_SHORT).show();
|
Toast.makeText(context, "Tile installed", Toast.LENGTH_SHORT).show();
|
||||||
|
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
|
||||||
|
Utils.refreshService(context);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -290,7 +304,12 @@ public class Utils {
|
|||||||
|
|
||||||
public static void uninstallTile(Context context) {
|
public static void uninstallTile(Context context) {
|
||||||
|
|
||||||
String qsTileId = "intent(" + TileServiceCompat.TILE_ID + ")";
|
String qsTileId;
|
||||||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||||
|
qsTileId = "custom(com.topjohnwu.magisk/.services.TileServiceNewApi)";
|
||||||
|
} else {
|
||||||
|
qsTileId = "intent(Magisk)";
|
||||||
|
}
|
||||||
List<String> lines = Shell.su("settings get secure sysui_qs_tiles");
|
List<String> lines = Shell.su("settings get secure sysui_qs_tiles");
|
||||||
if (lines != null && lines.size() == 1) {
|
if (lines != null && lines.size() == 1) {
|
||||||
List<String> tiles = new LinkedList<String>(Arrays.asList(lines.get(0).split(",")));
|
List<String> tiles = new LinkedList<String>(Arrays.asList(lines.get(0).split(",")));
|
||||||
@ -307,6 +326,9 @@ public class Utils {
|
|||||||
String newTiles = TextUtils.join(",", tiles);
|
String newTiles = TextUtils.join(",", tiles);
|
||||||
Shell.su("settings put secure sysui_qs_tiles \"" + newTiles + "\"");
|
Shell.su("settings put secure sysui_qs_tiles \"" + newTiles + "\"");
|
||||||
Toast.makeText(context, "Tile uninstalled", Toast.LENGTH_SHORT).show();
|
Toast.makeText(context, "Tile uninstalled", Toast.LENGTH_SHORT).show();
|
||||||
|
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.M) {
|
||||||
|
Utils.refreshService(context);
|
||||||
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Toast.makeText(context, "Tile already uninstalled", Toast.LENGTH_SHORT).show();
|
Toast.makeText(context, "Tile already uninstalled", Toast.LENGTH_SHORT).show();
|
||||||
@ -318,7 +340,9 @@ public class Utils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void refreshService(Context context) {
|
|
||||||
|
|
||||||
|
private static void refreshService(Context context) {
|
||||||
context.startService(new Intent(context, TileServiceCompat.class));
|
context.startService(new Intent(context, TileServiceCompat.class));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user