58 lines
1.9 KiB
Kotlin
58 lines
1.9 KiB
Kotlin
|
package com.massive
|
||
|
|
||
|
import android.annotation.SuppressLint
|
||
|
import android.content.ActivityNotFoundException
|
||
|
import android.content.Context
|
||
|
import android.content.Intent
|
||
|
import android.net.Uri
|
||
|
import android.os.Build
|
||
|
import android.os.PowerManager
|
||
|
import android.provider.Settings
|
||
|
import android.util.Log
|
||
|
import android.widget.Toast
|
||
|
import androidx.annotation.RequiresApi
|
||
|
import com.facebook.react.bridge.*
|
||
|
|
||
|
class SettingsModule constructor(context: ReactApplicationContext?) :
|
||
|
ReactContextBaseJavaModule(context) {
|
||
|
override fun getName(): String {
|
||
|
return "SettingsModule"
|
||
|
}
|
||
|
|
||
|
@RequiresApi(Build.VERSION_CODES.M)
|
||
|
@ReactMethod
|
||
|
fun ignoringBattery(callback: Callback) {
|
||
|
val packageName = reactApplicationContext.packageName
|
||
|
val pm = reactApplicationContext.getSystemService(Context.POWER_SERVICE) as PowerManager
|
||
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
||
|
callback.invoke(pm.isIgnoringBatteryOptimizations(packageName))
|
||
|
} else {
|
||
|
callback.invoke(true)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@SuppressLint("BatteryLife")
|
||
|
@RequiresApi(Build.VERSION_CODES.M)
|
||
|
@ReactMethod
|
||
|
fun ignoreBattery() {
|
||
|
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
|
||
|
intent.data = Uri.parse("package:" + reactApplicationContext.packageName)
|
||
|
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
|
||
|
try {
|
||
|
reactApplicationContext.startActivity(intent)
|
||
|
} catch (e: ActivityNotFoundException) {
|
||
|
Toast.makeText(
|
||
|
reactApplicationContext,
|
||
|
"Requests to ignore battery optimizations are disabled on your device.",
|
||
|
Toast.LENGTH_LONG
|
||
|
).show()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
@ReactMethod
|
||
|
fun is24(promise: Promise) {
|
||
|
val is24 = android.text.format.DateFormat.is24HourFormat(reactApplicationContext)
|
||
|
Log.d("SettingsModule", "is24=$is24")
|
||
|
promise.resolve(is24)
|
||
|
}
|
||
|
}
|