我们有时候会遇到这样的需求,需要将一个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里面启动一个服务来实现我们具体的功能。