首頁 > 軟體

android studio開發實現APP開機自啟動

2022-05-17 10:00:57

最近在做個APP,需要開啟自啟功能,通過在網上查詢資料,實現了自啟功能,非常簡單,步驟如下:

1、建立廣播接收器broadcastReceiver

2、在AndroidManifest.xml中設定自啟許可權和註冊接收器接收的廣播訊息型別

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<receiver
    android:name=".reveiver.StartReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MEDIA_MOUNTED"/>
        <action android:name="android.intent.action.MEDIA_UNMOUNTED"/>
        <action android:name="android.intent.action.MEDIA_EJECT"/>
        <action android:name="android.intent.action.MEDIA_REMOVED"/>
        <data android:scheme="file" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED"/>
    </intent-filter>
</receiver>

因為Android API Level8以上的時候,程式可以安裝在SD卡上。如果程式安裝在SD卡上,那麼在BOOT_COMPLETED廣播傳送之後,SD卡才會掛載,因此程式無法監聽到BOOT_COMPLETED廣播。

如果BOOT_COMPLETED和MEDIA_MOUNTED,MEDIA_EJECT寫在同一個intent-filter中,那麼無法檢測到BOOT_COMPLETED,對於沒有SD卡的手機,只能檢測BOOT_COMPLETED,這樣就會導致無法檢測到開機了。要解決此問題,同時監聽開機和sd卡掛載就可以了,所以要分別放到了兩個intent-filter中。

3.在第1步建立的廣播接收器中實現自啟動程式碼

package com.example.administrator.mm_scan.reveiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import com.example.administrator.mm_scan.MainActivity;

public class StartReceiver extends BroadcastReceiver {

    private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
    private final String ACTION_MEDIA_MOUNTED = "android.intent.action.MEDIA_MOUNTED";
    private final String ACTION_MEDIA_UNMOUNTED = "android.intent.action.MEDIA_UNMOUNTED";
    private final String ACTION_MEDIA_EJECT = "android.intent.action.MEDIA_EJECT";
    private final String ACTION_MEDIA_REMOVED = "android.intent.action.MEDIA_REMOVED";
    @Override
    public void onReceive(Context context, Intent intent) {
        // 判斷是否是系統開啟啟動的訊息,如果是,則啟動APP
        if (    ACTION_BOOT.equals(intent.getAction()) ||
                ACTION_MEDIA_MOUNTED.equals(intent.getAction()) ||
                ACTION_MEDIA_UNMOUNTED.equals(intent.getAction()) ||
                ACTION_MEDIA_EJECT.equals(intent.getAction()) ||
                ACTION_MEDIA_REMOVED.equals(intent.getAction())
        ) {
            Intent intentMainActivity = new Intent(context, MainActivity.class);
            intentMainActivity.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intentMainActivity);
        }
    }
}

完成以上步驟,APP就能實現開啟自啟了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com