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 發表在 痞客邦 留言(0) 人氣()