android開機(jī)自動啟動app的解決方法
經(jīng)過多次嘗試之后,終于找到了開機(jī)自動啟動App的解決方法
開機(jī)后會停留在鎖屏頁面,且短時間內(nèi)如果沒有進(jìn)行解鎖操作,屏幕會進(jìn)入休眠狀態(tài),所以啟動APP時需要先喚醒屏幕和解鎖屏幕
定義一個廣播類BootBroadcastReceiver.java
public class BootBroadcastReceiver extends BroadcastReceiver {
? ? static final String ACTION = "android.intent.action.BOOT_COMPLETED";
? ? @Override
? ? public void onReceive(Context context, Intent intent) {
? ? ? ? //屏幕喚醒
? ? ? ? PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
? ? ? ? PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP
? ? ? ? ? ? ? ? | PowerManager.SCREEN_DIM_WAKE_LOCK, "BootBroadcastReceiver");
? ? ? ? wl.acquire();
? ? ? ? //屏幕解鎖
? ? ? ? KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE);
? ? ? ? KeyguardManager.KeyguardLock kl = km.newKeyguardLock("BootBroadcastReceiver");
? ? ? ? kl.disableKeyguard();
? ? ? ? //啟動APP
? ? ? ? if (intent.getAction().equals(ACTION)) {
? ? ? ? ? ? Intent intent = new Intent(context, LaunchActivity.class); ?// 要啟動的Activity
? ? ? ? ? ? if (!(context instanceof Activity)) {
? ? ? ? ? ? ? ? //如果不是在Activity中顯示Activity,必須要設(shè)置FLAG_ACTIVITY_NEW_TASK標(biāo)志
? ? ? ? ? ? ? ? intent .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
? ? ? ? ? ? }
? ? ? ? ? ? context.startActivity(intent );
? ? ? ? }
? ? }
} ?AndroidManifest.xml文件
1.添加權(quán)限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> <uses-permission android:name="android.permission.WAKE_LOCK"/> <uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
2.注冊廣播
<receiver ? ? ?android:name=".receiver.BootBroadcastReceiver" ? ? ?android:enabled="true" ? ? ?android:exported="true" ? ? ?android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> ? ? ?<intent-filter> ? ? ? ? ? <action android:name="android.intent.action.BOOT_COMPLETED"/> ? ? ? ? ? <action android:name="android.intent.action.QUICKBOOT_POWERON"/> ? ? ? ? ? <category android:name="android.intent.category.DEFAULT"/> ? ? ? </intent-filter> </receiver>
注:intent-filter中的action要與BootBroadcastReceiver中定義的action相對應(yīng)
在解決開機(jī)自啟的問題時發(fā)現(xiàn)了一篇文章記錄了自啟動失敗的原因,在這里mark一下
自啟動失敗的原因
接收不到BOOT_COMPLETED廣播可能的原因
1.BOOT_COMPLETED對應(yīng)的action和uses-permission(”android.permission.RECEIVE_BOOT_COMPLETED” )沒有一起添加
2.應(yīng)用安裝到了sd卡內(nèi),安裝在sd卡內(nèi)的應(yīng)用是收不到BOOT_COMPLETED廣播的,可以在manifest節(jié)點(diǎn)下添加android:installLocation=”internalOnly”來指定只能安裝在手機(jī)內(nèi)存里面,也可以監(jiān)聽開機(jī)加載sd卡的廣播,可惜有的手機(jī)是沒有sd卡的
3.系統(tǒng)開啟了Fast Boot模式,這種模式下系統(tǒng)啟動并不會發(fā)送BOOT_COMPLETED廣播
4.應(yīng)用程序安裝后重來沒有啟動過,這種情況下應(yīng)用程序接收不到任何廣播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等
5.Android3.1之后,系統(tǒng)為了加強(qiáng)了安全性控制,應(yīng)用程序安裝后或是(設(shè)置)應(yīng)用管理中被強(qiáng)制關(guān)閉后處于stopped狀態(tài),在這種狀態(tài)下接收不到任何廣播,除非廣播帶有FLAG_INCLUDE_STOPPED_PACKAGES標(biāo)志,而默認(rèn)所有系統(tǒng)廣播都是FLAG_EXCLUDE_STOPPED_PACKAGES的,所以就沒法通過系統(tǒng)廣播自啟動了。所以Android3.1之后
(1)、應(yīng)用程序無法在安裝后自己啟動
(2)、沒有ui的程序必須通過其他應(yīng)用激活才能啟動,如它的Activity、Service、Content Provider被其他應(yīng)用調(diào)用。
6.存在一種例外,就是應(yīng)用程序被adb push you.apk /system/app/下是會自動啟動的,不處于stopped狀態(tài)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android 簡單服務(wù)定位器模式實(shí)現(xiàn)
這篇文章主要介紹了Android 簡單服務(wù)定位器模式實(shí)現(xiàn),幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-03-03
Android 監(jiān)聽軟鍵盤狀態(tài)的實(shí)例詳解
這篇文章主要介紹了Android 監(jiān)聽軟鍵盤狀態(tài)的實(shí)例詳解的相關(guān)資料,希望通過本文能掌握這樣的知識,需要的朋友可以參考下2017-09-09
Flutter中如何加載并預(yù)覽本地的html文件的方法
這篇文章主要介紹了Flutter中如何加載并預(yù)覽本地的html文件的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
android實(shí)現(xiàn)添加耳機(jī)狀態(tài)圖標(biāo)的方法
這篇文章主要介紹了android實(shí)現(xiàn)添加耳機(jī)狀態(tài)圖標(biāo)的方法,較為詳細(xì)的分析了Android實(shí)現(xiàn)添加耳機(jī)圖標(biāo)的原理與相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-10-10
Android使用開源框架ANDROID-IMAGE-INDICATOR實(shí)現(xiàn)圖片輪播部署
這篇文章主要為大家詳細(xì)介紹了Android使用開源框架ANDROID-IMAGE-INDICATOR實(shí)現(xiàn)圖片輪播部署,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-01-01
ubuntu下 AndroidStudio4.1啟動報(bào)錯問題的解決
這篇文章主要介紹了ubuntu下 AndroidStudio4.1啟動報(bào)錯問題的解決,本文給大家分享個人經(jīng)驗(yàn)對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
Android自定義控件實(shí)現(xiàn)方向盤效果
這篇文章主要為大家詳細(xì)介紹了Android自定義控件實(shí)現(xiàn)方向盤效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04
Android 驗(yàn)證碼功能實(shí)現(xiàn)代碼
這篇文章主要介紹了Android 驗(yàn)證碼功能實(shí)現(xiàn)代碼的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08
Android NDK開發(fā)的環(huán)境搭建與簡單示例
本文主要介紹Android NDK的知識,這里整理了相關(guān)資料,來說明如何搭建相應(yīng)環(huán)境和簡單實(shí)例,幫助大家理解,有興趣的小伙伴可以參考下2016-09-09

