android開機(jī)自動啟動app的解決方法
經(jīng)過多次嘗試之后,終于找到了開機(jī)自動啟動App的解決方法
開機(jī)后會停留在鎖屏頁面,且短時(shí)間內(nèi)如果沒有進(jìn)行解鎖操作,屏幕會進(jìn)入休眠狀態(tài),所以啟動APP時(shí)需要先喚醒屏幕和解鎖屏幕
定義一個(gè)廣播類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ī)自啟的問題時(shí)發(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 使用ViewPager實(shí)現(xiàn)圖片左右循環(huán)滑動自動播放
這篇文章主要介紹了Android 使用ViewPager實(shí)現(xiàn)圖片左右循環(huán)滑動自動播放的相關(guān)資料,非常不錯(cuò),具有參考解決價(jià)值,需要的朋友可以參考下2016-08-08
android判斷手機(jī)是否安裝地圖應(yīng)用實(shí)現(xiàn)跳轉(zhuǎn)到該地圖應(yīng)用
這篇文章主要給大家介紹了android如何判斷手機(jī)是否安裝地圖應(yīng)用,并實(shí)現(xiàn)跳轉(zhuǎn)到該地圖應(yīng)用的方法,需要的朋友可以參考借鑒,下面來一起學(xué)習(xí)學(xué)習(xí)吧。2017-01-01
Android給TextView添加點(diǎn)擊事件的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄狝ndroid給TextView添加點(diǎn)擊事件的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-12-12
Android7.0版本影響開發(fā)的改進(jìn)分析
這篇文章主要介紹了Android7.0版本影響開發(fā)的改進(jìn),總結(jié)分析了Android7.0版本中比較常見的開發(fā)注意事項(xiàng)與操作技巧,需要的朋友可以參考下2017-11-11
Android UI設(shè)計(jì)系列之自定義ListView仿QQ空間阻尼下拉刷新和漸變菜單欄效果(8)
這篇文章主要介紹了Android UI設(shè)計(jì)系列之自定義ListView仿QQ空間阻尼下拉刷新和漸變菜單欄效果,具有一定的實(shí)用性和參考價(jià)值,感興趣的小伙伴們可以參考一下2016-06-06
Android應(yīng)用開發(fā)中數(shù)據(jù)的保存方式總結(jié)
這篇文章主要介紹了Android應(yīng)用開發(fā)中數(shù)據(jù)的保存方式總結(jié),包括對ROM、SD卡、SharedPreference這三種方式實(shí)現(xiàn)的核心代碼的精選,需要的朋友可以參考下2016-02-02

