mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-11-08 00:53:28 +01:00
request Shizuku permission
This commit is contained in:
@@ -5,10 +5,51 @@ import io.flutter.embedding.engine.FlutterEngine
|
||||
import io.flutter.plugin.common.MethodChannel
|
||||
import io.flutter.plugin.common.MethodChannel.Result
|
||||
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
|
||||
|
||||
class MainActivity: FlutterActivity() {
|
||||
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) {
|
||||
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) {
|
||||
super.configureFlutterEngine(flutterEngine)
|
||||
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