1 package `fun`.upup.musicfree.utils; // replace your-apps-package-name with your app’s package name 2 import android.Manifest 3 import android.content.Intent 4 import android.content.pm.PackageManager 5 import android.net.Uri 6 import android.os.Build 7 import android.os.Environment 8 import android.provider.Settings 9 import androidx.core.content.ContextCompat 10 import com.facebook.react.bridge.Promise 11 import com.facebook.react.bridge.ReactApplicationContext 12 import com.facebook.react.bridge.ReactContextBaseJavaModule 13 import com.facebook.react.bridge.ReactMethod 14 import kotlin.system.exitProcess 15 16 class UtilsModule(context: ReactApplicationContext) : ReactContextBaseJavaModule(context) { 17 18 private val reactContext: ReactApplicationContext = context; 19 getNamenull20 override fun getName() = "NativeUtils" 21 22 @ReactMethod 23 fun exitApp() { 24 val activity = reactContext.currentActivity 25 activity?.finishAndRemoveTask() 26 android.os.Process.killProcess(android.os.Process.myPid()) 27 exitProcess(0) 28 } 29 30 @ReactMethod checkStoragePermissionnull31 fun checkStoragePermission(promise: Promise) { 32 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { 33 promise.resolve(Environment.isExternalStorageManager()) 34 } else { 35 val readPermission = ContextCompat.checkSelfPermission(reactContext, Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED 36 val writePermission = ContextCompat.checkSelfPermission(reactContext, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED 37 promise.resolve(readPermission && writePermission) 38 } 39 } 40 41 @ReactMethod requestStoragePermissionnull42 fun requestStoragePermission() { 43 val intent = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) { 44 Intent(Settings.ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION).apply { 45 data = Uri.parse("package:${reactContext.packageName}") 46 } 47 } else { 48 Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS).apply { 49 data = Uri.parse("package:${reactContext.packageName}") 50 } 51 } 52 reactContext.currentActivity?.startActivity(intent) 53 } 54 } 55