Android開發 開機自啟動功能實現


前言

  此篇博客簡單記錄關於app自啟動Activity與自啟動Service的功能,這里的自啟動是指設備開機后的自啟動。並不是自啟動保活。

實現開機自啟動需要的條件

需要AndroidManifest.xml添加權限,但是添加了不等於解決問題。自啟動權限無法通過,動態或者靜態權限授權實際獲得。還必需要自行引導用戶在設置>應用管理>選擇指定應用>開啟自啟動權限。

    <!-- 接收開機廣播的權限,開機是很危險的行為,所以需要此權限 -->
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

具體實現

注冊廣播

  此廣播必需靜態注冊

在AndroidManifest.xml 注冊廣播

        <receiver android:name=".SelfStartingReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" /> <!-- 開機廣播 -->
            </intent-filter>
        </receiver>

自啟動Activity

public class SelfStartingReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent bootIntent = new Intent(context, LogoActivity.class);
        // 這里必須為FLAG_ACTIVITY_NEW_TASK
        bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(bootIntent);
    }
}

自啟動Service

public class SelfStartingReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent bootIntent = new Intent(context, PermanentService.class);
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            context.startForegroundService(bootIntent);
        }else {
            context.startService(bootIntent);
        }
    }
}

 

 

 

 

End


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM