11package io.github.mzdluo123.mirai.android.ui.console
22
3+ import android.annotation.SuppressLint
4+ import android.app.Activity
35import android.app.AlertDialog
46import android.content.ComponentName
57import android.content.Context
8+ import android.content.Context.POWER_SERVICE
69import android.content.Intent
710import android.content.ServiceConnection
8- import android.os.Bundle
9- import android.os.DeadObjectException
10- import android.os.IBinder
11+ import android.net.Uri
12+ import android.os.*
13+ import android.provider.Settings
1114import android.view.*
1215import android.view.inputmethod.EditorInfo
1316import android.widget.EditText
1417import android.widget.ScrollView
1518import android.widget.Toast
19+ import androidx.core.content.ContextCompat.getSystemService
1620import androidx.fragment.app.Fragment
1721import androidx.lifecycle.ViewModelProvider
1822import androidx.lifecycle.lifecycleScope
@@ -109,10 +113,30 @@ class ConsoleFragment : Fragment() {
109113 append(conn.botService.log.joinToString(separator = " \n " ))
110114 }, lifecycleScope
111115 )
116+ R .id.action_battery-> {
117+ ignoreBatteryOptimization(requireActivity())
118+ }
112119 }
113120 return false
114121 }
115122
123+ @SuppressLint(" BatteryLife" )
124+ private fun ignoreBatteryOptimization (activity : Activity ) {
125+ val powerManager =
126+ getSystemService(requireContext(),PowerManager ::class .java) as PowerManager ?
127+ val hasIgnored =
128+ powerManager!! .isIgnoringBatteryOptimizations(activity.packageName)
129+ // 判断当前APP是否有加入电池优化的白名单,如果没有,弹出加入电池优化的白名单的设置对话框。
130+ if (! hasIgnored) {
131+ val intent = Intent (Settings .ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS )
132+ intent.data = Uri .parse(" package:" + activity.packageName)
133+ startActivity(intent)
134+ }else {
135+ Toast .makeText(context," 您已授权忽略电池优化" ,Toast .LENGTH_SHORT ).show()
136+ }
137+
138+ }
139+
116140 private fun submitCmd () {
117141 var command = command_input.text.toString()
118142 lifecycleScope.launch(Dispatchers .Default ) {
@@ -128,7 +152,7 @@ class ConsoleFragment : Fragment() {
128152 val alertView = View .inflate(activity, R .layout.dialog_autologin, null )
129153 val pwdInput = alertView.findViewById<EditText >(R .id.password_input)
130154 val qqInput = alertView.findViewById<EditText >(R .id.qq_input)
131- val accountStore = activity !! .getSharedPreferences(" account" , Context .MODE_PRIVATE )
155+ val accountStore = requireActivity() .getSharedPreferences(" account" , Context .MODE_PRIVATE )
132156 val dialog = AlertDialog .Builder (activity)
133157 .setView(alertView)
134158 .setCancelable(true )
@@ -193,6 +217,7 @@ class ConsoleFragment : Fragment() {
193217 toString()
194218 }
195219 }
220+
196221}
197222
198223
0 commit comments