瀏覽代碼

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

周文健 6 月之前
父節點
當前提交
c442ef7492
共有 2 個文件被更改,包括 52 次插入1 次删除
  1. 14 1
      app/src/main/AndroidManifest.xml
  2. 38 0
      app/src/main/java/com/grkj/iscs/receivers/BootReceiver.kt

+ 14 - 1
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"
@@ -50,7 +53,7 @@
         <activity
             android:name=".view.activity.LoginActivity"
             android:exported="true"
-            android:launchMode="singleTask" >
+            android:launchMode="singleTask">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
 
@@ -103,6 +106,16 @@
             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秒钟后重启应用
+        }
+    }
+}