mirror of
https://github.com/ImranR98/Obtainium.git
synced 2025-07-13 13:26:43 +02:00
request Shizuku permission
This commit is contained in:
@ -66,6 +66,13 @@
|
||||
android:name="android.support.FILE_PROVIDER_PATHS"
|
||||
android:resource="@xml/file_paths" />
|
||||
</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>
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<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.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