我們有時候會遇到這樣的需求,需要將一個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裏面啓動一個服務來實現我們具體的功能。