Skip to content
This repository was archived by the owner on Oct 20, 2023. It is now read-only.

Commit 1ac8f45

Browse files
committed
add: require battery optimizations
1 parent 62a2803 commit 1ac8f45

File tree

3 files changed

+33
-4
lines changed

3 files changed

+33
-4
lines changed

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
99
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
1010
<uses-permission android:name="android.permission.WAKE_LOCK" />
11+
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
1112

1213
<application
1314
android:name=".BotApplication"

app/src/main/java/io/github/mzdluo123/mirai/android/ui/console/ConsoleFragment.kt

Lines changed: 29 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
package io.github.mzdluo123.mirai.android.ui.console
22

3+
import android.annotation.SuppressLint
4+
import android.app.Activity
35
import android.app.AlertDialog
46
import android.content.ComponentName
57
import android.content.Context
8+
import android.content.Context.POWER_SERVICE
69
import android.content.Intent
710
import 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
1114
import android.view.*
1215
import android.view.inputmethod.EditorInfo
1316
import android.widget.EditText
1417
import android.widget.ScrollView
1518
import android.widget.Toast
19+
import androidx.core.content.ContextCompat.getSystemService
1620
import androidx.fragment.app.Fragment
1721
import androidx.lifecycle.ViewModelProvider
1822
import 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

app/src/main/res/menu/main.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,7 @@
88
<item
99
android:id="@+id/action_report"
1010
android:title="分享日志" />
11+
<item
12+
android:id="@+id/action_battery"
13+
android:title="忽略电池优化" />
1114
</menu>

0 commit comments

Comments
 (0)