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里面启动一个服务来实现我们具体的功能。



猜你喜欢

转载自blog.csdn.net/pshiping2014/article/details/78142793