xref: /MusicFree/android/app/src/main/java/fun/upup/musicfree/utils/UtilsModule.kt (revision b72437776165146f05624469023a64a2365044b4)
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