Pārlūkot izejas kodu

add(自启动): 新增开机自启

(cherry picked from commit c442ef7492bf73c52fb64a6ec75a0daf5e5ee2bf)
周文健 6 mēneši atpakaļ
vecāks
revīzija
7ec6d92487

+ 13 - 0
app/src/main/AndroidManifest.xml

@@ -20,7 +20,10 @@
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.CAMERA" />
+
     <uses-feature android:name="android.hardware.camera" />
+    <!--    开机自启动-->
+    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
 
     <application
         android:name=".MyApplication"
@@ -103,6 +106,16 @@
             android:name=".view.activity.MainActivity"
             android:exported="true">
         </activity>
+
+        <receiver
+            android:name=".receivers.BootReceiver"
+            android:enabled="true"
+            android:exported="true">
+            <intent-filter android:priority="1000">
+                <action android:name="android.intent.action.BOOT_COMPLETED" />
+                <action android:name="android.media.AUDIO_BECOMEING_NOISY" />
+            </intent-filter>
+        </receiver>
     </application>
 
 </manifest>

+ 38 - 0
app/src/main/java/com/grkj/iscs/receivers/BootReceiver.kt

@@ -0,0 +1,38 @@
+package com.grkj.iscs.receivers
+
+import android.app.AlarmManager
+import android.app.PendingIntent
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import com.grkj.iscs.util.log.LogUtil
+import com.grkj.iscs.view.activity.LoginActivity
+
+/**
+ *
+ * 开机启动接收器
+ * */
+class BootReceiver : BroadcastReceiver() {
+    override fun onReceive(context: Context, intent: Intent?) {
+        if (intent!!.action.equals("android.intent.action.BOOT_COMPLETED")) {
+            LogUtil.d("接收到启动通知,开始启动应用")
+            //开机2秒后启动程序
+            val startAppIntent = Intent(
+                context, LoginActivity::class.java
+            ).apply {
+                flags = Intent.FLAG_ACTIVITY_NEW_TASK
+            }
+            //启动应用,得使用PendingIntent
+            val startAppPendingIntent =
+                PendingIntent.getActivity(
+                    context, 0, startAppIntent,
+                    PendingIntent.FLAG_CANCEL_CURRENT or PendingIntent.FLAG_IMMUTABLE
+                );
+            val mAlarmManager = context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
+            mAlarmManager.set(
+                AlarmManager.RTC, System.currentTimeMillis() + 2000,
+                startAppPendingIntent
+            ) // 2秒钟后重启应用
+        }
+    }
+}