Android 實現開機自啓動無界面的Apk

我們有時候會遇到這樣的需求,需要將一個apk作爲一個後臺程序爲第三方應用提供服務。開發這樣的apk我們會遇到兩個問題:

1、apk不需要界面。
2、由於apk沒有界面,我們需要啓動運行,就需要實現開機自啓動。

1、我們先來看看如何實現一個無界面的apk.

大家都知道,我們新建一個應用,默認都是有Activity的,如果把默認的Activity去掉會報錯。那麼我們可以這樣修改:打開manifest文件,把默認的category註釋掉

<activity android:name=".MainActivity">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
         <!--<category android:name="android.intent.category.LAUNCHER" />-->
    </intent-filter>
</activity>

並且把Launch Options 設置爲Nothing,如下圖所示:


這樣運行程序之後在Launcher界面就看不見我們的應用圖標了。

2、開機應用自啓動的實現:首先,我們需要在manifest文件中註冊相應的權限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
接着我們實現一個廣播接收器代碼如下:

public class BootReceiver extends BroadcastReceiver {
    public BootReceiver() {
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        //後邊的XXX.class就是要啓動的服務
        Intent service = new Intent(context,ReadSNService.class);
        context.startService(service);
        Log.v("TAG", "開機自動服務自動啓動.....");
    }
}
在manifest文件中添加監聽開機的action:

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

配置好之後,運行我們的程序,安裝成功之後可以在設置裏面看到我們apk,這樣,我們就實現了一個無界面的後臺程序,我們可以根據業務需求,在MainActity裏面啓動一個服務來實現我們具體的功能。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章