mirror of
				https://github.com/ImranR98/Obtainium.git
				synced 2025-10-30 21:13:28 +01: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