diff --git a/app/build.gradle b/app/build.gradle index c7bc4c92..38d771d6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -53,7 +53,6 @@ dependencies { implementation 'com.google.android.material:material:1.3.0-rc01' implementation 'com.github.bumptech.glide:glide:4.11.0' - implementation 'moe.shizuku.privilege:api:3.1.0' implementation 'com.google.android:flexbox:2.0.1' implementation 'com.tomergoldst.android:tooltips:1.0.11' implementation 'com.google.code.gson:gson:2.8.6' @@ -70,6 +69,11 @@ dependencies { normalImplementation 'com.google.firebase:firebase-crashlytics:17.3.1' normalImplementation 'com.android.billingclient:billing:3.0.2' + //Shizuku/Sui + def shizuku_version = '11.0.1' + implementation "rikka.shizuku:api:$shizuku_version" + implementation "rikka.shizuku:provider:$shizuku_version" + debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.3' } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 009b74bf..14e1f1c4 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -3,6 +3,8 @@ xmlns:tools="http://schemas.android.com/tools" package="com.aefyr.sai"> + + @@ -303,12 +305,19 @@ + + + = 11) { + if (Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) { + installerSet = true; + } else { + Shizuku.requestPermission(PermissionsUtils.REQUEST_CODE_SHIZUKU); + } + } else { + installerSet = PermissionsUtils.checkAndRequestShizukuPermissions(this); + } + break; } if (installerSet) { @@ -326,6 +340,10 @@ public void onDialogDismissed(@NonNull String dialogTag) { public void onDestroy() { super.onDestroy(); getPreferenceManager().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this); + + if (Utils.apiIsAtLeast(Build.VERSION_CODES.M)) { + Shizuku.removeRequestPermissionResultListener(this); + } } @SuppressLint("ApplySharedPref") @@ -343,4 +361,18 @@ public void onThemesChosen(@Nullable String tag, Theme.ThemeDescriptor lightThem theme.setLightTheme(lightTheme); theme.setDarkTheme(darkTheme); } + + @Override + public void onRequestPermissionResult(int requestCode, int grantResult) { + switch (requestCode) { + case PermissionsUtils.REQUEST_CODE_SHIZUKU: + if (grantResult == PackageManager.PERMISSION_DENIED) + AlertsUtils.showAlert(this, R.string.error, R.string.permissions_required_shizuku); + else { + mHelper.setInstaller(PreferencesValues.INSTALLER_SHIZUKU); + updateInstallerSummary(); + } + break; + } + } } diff --git a/build.gradle b/build.gradle index 3e382aa7..c986356f 100644 --- a/build.gradle +++ b/build.gradle @@ -23,6 +23,12 @@ allprojects { google() jcenter() maven { url "https://jitpack.io" } + maven { + url 'https://dl.bintray.com/rikkaw/Libraries' + content { + includeGroup "rikka.shizuku" + } + } } }