This commit is contained in:
d8ahazard 2016-09-22 16:47:54 -05:00
parent 8a8aaf3297
commit 3706b53e65
5 changed files with 59 additions and 31 deletions

View File

@ -3,14 +3,16 @@
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>

View File

@ -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());

View File

@ -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());

View File

@ -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;

View File

@ -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));
} }