前言
此篇博客簡單記錄關於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