android開(kāi)機(jī)自啟動(dòng)

很多時(shí)候?yàn)榱擞脩羰褂梅奖?,我們需要在移?dòng)設(shè)備開(kāi)機(jī)時(shí)設(shè)置一些隨機(jī)自啟動(dòng)服務(wù),如定期發(fā)送自己關(guān)心的訊息、新收郵件的自動(dòng)推送以及語(yǔ)音喚醒及識(shí)別等等,這些服務(wù)在日常生活中還是很有意義的。

對(duì)于注冊(cè)并開(kāi)啟自動(dòng)啟動(dòng)的代碼也是比較簡(jiǎn)單的,百度可以在很多網(wǎng)站上找到實(shí)例,現(xiàn)把我自己在項(xiàng)目中使用到的代碼貼在下面:

public class OnBootReceiver extends BroadcastReceiver {
    
    private static final String TAG = "SmartService";
    
    @Override
    public void onReceive(Context context, Intent intent) {
        
        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
            
            // 開(kāi)啟應(yīng)用
            Intent sintent = context.getPackageManager().getLaunchIntentForPackage( "app應(yīng)用包名" );
            context.startActivity( sintent );
            
            // 開(kāi)啟服務(wù)代碼
            //context.startService( new Intent(context, ServerService.class) );
            Log.e(TAG, "Brodcast received!!!");
        }
    }
}

相應(yīng)地,我們需要在AndroidManifest.xml文件中加入權(quán)限設(shè)置和啟動(dòng)注冊(cè),如下:

// 權(quán)限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

// 注冊(cè)廣播接收器,設(shè)置過(guò)濾器
<receiver android:name="app應(yīng)用包名.OnBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</receiver>

將上述代碼加入項(xiàng)目中即可以實(shí)現(xiàn)開(kāi)機(jī)自動(dòng)啟動(dòng)?如果是的話,你就真的太幸運(yùn)了。筆者在小米手機(jī)上試過(guò)很多次,這樣做是基本實(shí)現(xiàn)不了手機(jī)開(kāi)機(jī)自動(dòng)啟動(dòng)應(yīng)用的,還必須在手機(jī)上作如下設(shè)置才行。

先從正在測(cè)試的app中退出,打開(kāi)應(yīng)用管理允許“開(kāi)啟WIFI”,再在自啟動(dòng)管理中允許需要開(kāi)機(jī)啟動(dòng)的app,然后再打開(kāi)app注冊(cè)服務(wù)即可實(shí)現(xiàn)下次設(shè)備啟動(dòng)時(shí)自動(dòng)啟動(dòng),順序最好嚴(yán)格按照這個(gè)過(guò)程來(lái)操作,因?yàn)楣P者做過(guò)很多嘗試都不一定能成功做到自動(dòng)啟動(dòng)。

2016.09.06 補(bǔ)充:發(fā)現(xiàn)在注冊(cè)Service之前先需要先使用Activityextends Activity進(jìn)行注冊(cè),之后再改為extends Service 或者是直接命令 adb shell am startservice <Your package>/<Your Servce>啟動(dòng)Service

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,765評(píng)論 25 709
  • Android 設(shè)備啟動(dòng)的時(shí)候,會(huì)發(fā)送android.intent.action.BOOT_COMPLETED的廣...
    sy1121閱讀 12,053評(píng)論 1 3
  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,506評(píng)論 19 139
  • 晚上,和孩他爹去遛娃,想順便自己也去鍛煉下。孩子一個(gè)人騎著滑板車往前滑,我們倆不遠(yuǎn)不近地跟著,閑聊。我說(shuō),突然發(fā)現(xiàn)...
    newjulie閱讀 265評(píng)論 0 3
  • 我花一秒鐘去喜歡一個(gè)人,卻用了一輩子去忘記。 你總說(shuō)我多愁善感,我無(wú)法辯駁,因?yàn)槲掖_實(shí)如此,對(duì)你,我認(rèn)輸了。 時(shí)間...
    小木瑾兒閱讀 302評(píng)論 0 3

友情鏈接更多精彩內(nèi)容