mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-16 06:36:44 +02:00
request Shizuku permission
This commit is contained in:
@ -66,6 +66,13 @@
|
|||||||
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>
|
||||||
|
<provider
|
||||||
|
android:name="rikka.shizuku.ShizukuProvider"
|
||||||
|
android:authorities="${applicationId}.shizuku"
|
||||||
|
android:multiprocess="false"
|
||||||
|
android:enabled="true"
|
||||||
|
android:exported="true"
|
||||||
|
android:permission="android.permission.INTERACT_ACROSS_USERS_FULL" />
|
||||||
</application>
|
</application>
|
||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
||||||
|
@ -5,10 +5,51 @@ import io.flutter.embedding.engine.FlutterEngine
|
|||||||
import io.flutter.plugin.common.MethodChannel
|
import io.flutter.plugin.common.MethodChannel
|
||||||
import io.flutter.plugin.common.MethodChannel.Result
|
import io.flutter.plugin.common.MethodChannel.Result
|
||||||
import androidx.annotation.NonNull
|
import androidx.annotation.NonNull
|
||||||
|
import android.content.pm.PackageManager
|
||||||
|
import android.os.Bundle
|
||||||
|
import rikka.shizuku.Shizuku
|
||||||
|
import rikka.shizuku.Shizuku.OnBinderDeadListener
|
||||||
|
import rikka.shizuku.Shizuku.OnBinderReceivedListener
|
||||||
|
import rikka.shizuku.Shizuku.OnRequestPermissionResultListener
|
||||||
import com.topjohnwu.superuser.Shell
|
import com.topjohnwu.superuser.Shell
|
||||||
|
|
||||||
class MainActivity: FlutterActivity() {
|
class MainActivity: FlutterActivity() {
|
||||||
private val installersChannel = "installers"
|
private val installersChannel = "installers"
|
||||||
|
private val SHIZUKU_PERMISSION_REQUEST_CODE = 839 // random num
|
||||||
|
private var shizukuBinderAlive = false
|
||||||
|
private var shizukuPermissionGranted = false
|
||||||
|
|
||||||
|
private val shizukuBinderReceivedListener = OnBinderReceivedListener {
|
||||||
|
if(!Shizuku.isPreV11()) { // pre 11 unsupported
|
||||||
|
shizukuBinderAlive = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private val shizukuBinderDeadListener = OnBinderDeadListener { shizukuBinderAlive = false }
|
||||||
|
|
||||||
|
private val shizukuRequestPermissionResultListener = OnRequestPermissionResultListener {
|
||||||
|
requestCode: Int, grantResult: Int ->
|
||||||
|
if(requestCode == SHIZUKU_PERMISSION_REQUEST_CODE) {
|
||||||
|
shizukuPermissionGranted = grantResult == PackageManager.PERMISSION_GRANTED
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun shizukuCheckPermission() {
|
||||||
|
if(Shizuku.isPreV11()) {
|
||||||
|
shizukuPermissionGranted = false
|
||||||
|
} else if (Shizuku.checkSelfPermission() == PackageManager.PERMISSION_GRANTED) {
|
||||||
|
shizukuPermissionGranted = true
|
||||||
|
} else if (Shizuku.shouldShowRequestPermissionRationale()) { // Deny and don't ask again
|
||||||
|
shizukuPermissionGranted = false
|
||||||
|
} else {
|
||||||
|
Shizuku.requestPermission(SHIZUKU_PERMISSION_REQUEST_CODE)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun installWithShizuku(apkFilePath: String, result: Result) {
|
||||||
|
shizukuCheckPermission()
|
||||||
|
result.success(0)
|
||||||
|
}
|
||||||
|
|
||||||
private fun installWithRoot(apkFilePath: String, result: Result) {
|
private fun installWithRoot(apkFilePath: String, result: Result) {
|
||||||
Shell.sh("pm install -r -t " + apkFilePath).submit { out ->
|
Shell.sh("pm install -r -t " + apkFilePath).submit { out ->
|
||||||
@ -20,10 +61,6 @@ class MainActivity: FlutterActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun installWithShizuku(apkFilePath: String, result: Result) {
|
|
||||||
val a = 1
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
|
||||||
super.configureFlutterEngine(flutterEngine)
|
super.configureFlutterEngine(flutterEngine)
|
||||||
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, installersChannel).setMethodCallHandler {
|
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, installersChannel).setMethodCallHandler {
|
||||||
@ -36,4 +73,18 @@ class MainActivity: FlutterActivity() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
|
super.onCreate(savedInstanceState)
|
||||||
|
Shizuku.addBinderReceivedListener(shizukuBinderReceivedListener)
|
||||||
|
Shizuku.addBinderDeadListener(shizukuBinderDeadListener)
|
||||||
|
Shizuku.addRequestPermissionResultListener(shizukuRequestPermissionResultListener)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onDestroy() {
|
||||||
|
super.onDestroy()
|
||||||
|
Shizuku.removeBinderReceivedListener(shizukuBinderReceivedListener)
|
||||||
|
Shizuku.removeBinderDeadListener(shizukuBinderDeadListener)
|
||||||
|
Shizuku.removeRequestPermissionResultListener(shizukuRequestPermissionResultListener)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user