close

觀念:

在開機後自動啟動Activity或Service, 主要是利用Android手機在開機完成後,

會發送一個BOOT_COMPLETED, 開機完成的訊息,

所以要在APP上寫一個Receiver來接收該訊息

之後利用Intent去啟動Activity或Service

 

實作:

1. 首先先來實作開機後自動執行Service的部分,

開啟Eclipse, 建立一個新專案, 然後創建一個class繼承Service,

並實作其內部onBind的方法

01.png 

 

2. 接著在建立一個class, 繼承BroadcastReceiver, 並實作onReceive的方法

這邊以Reciver為例

02.png

 

3. 接著用intent.getAction()來接收訊息, 並在收到的訊息為

Intent.ACTION_BOOT_COMPLETED的時候做動作

03.png

 

4. 在裡面利用Intent去啟動Service, 內容如下

   Intent serviceIntent = new Intent(context, BootService.class);
   context.startService(serviceIntent);

04.png

 

5. 上述完成之後, 切換到AndroidManifest.xml, 首先需要開啟此接收開機完成訊息的權限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

05.png

 

6. 並在application內, 註冊這個Reciver

        <receiver android:name=".Reciver" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

06.png

 

7. Reciver註冊完後, 要把需要開啟的Service也註冊進去

    <service android:name="com.example.test.BootService"/>

到這裡就已經完成了開機後自動啟動Service的部分

07.png

 

8. 接著來加入開機後自動執行Activity的部分, 加入的部分如同步驟4,

也是利用Intent去啟動activity

   Intent activityIntent = new Intent(context, MainActivity.class);
   activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
   context.startActivity(activityIntent);

這邊要注意的是, Intent要加入.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

08.png

 

9. 完成之後將程式載入到Android或是模擬器上

10.png

 

10. 如果你是用模擬器的話, 可以用對adb下command的方式來讓他重開機

步驟如下:

(a) 開啟命令提示字元到  編譯器安裝入徑\sdk\platform-tools,

ex: D:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools

(b) 輸入 adb shell 按下Enter

(c) 輸入 am broadcast -a android.intent.action.BOOT_COMPLETED 按下Enter

09.png

 

11. 重啟後, 就會發現該APP啟動後執行了, 測完之後記得刪掉測試APP,

才不會一直發動該機製

11.png

 

 

12. 而Service檢查的方式有很多, 介紹一個最簡單的方法,

到Setting裡面的Apps, 查看RUNNING的部分,

如果你的APP除了Process之外還有Service,

就代表你成功了

12.png  

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 RX1226 的頭像
    RX1226

    給你魚竿

    RX1226 發表在 痞客邦 留言(0) 人氣()