背景
前段时间有这样一个需求,做一个安卓系统的小型服务器,使用的开发板是萤火虫的7.0.1系统,并且已经root了,网上有很多利用广播,通过监听开机广播的方式来,实现App的开机自启动,这个方法不做考虑,因为我就没有成功过。采用另一种方式来实现这个需求,也就是launcher。
什么是launcher
对于初级开发者来说launcher可能还有些陌生,它俗称“HomeScreen”也就是我们开机后看到的第一个App(其实也就是系统的桌面)。launcher其实就是一个app,它的作用用来显示和管理手机上其他App。目前市场上有很多第三方的launcher应用,比如“小米桌面”、“91桌面”等等。那我们就利用launcher来实现开机自启动App的需求吧。
开机自启动App开发
其实实现的方式非常的简单,我们只需要在我们的AndroidManifest中添加上两行代码即可。
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
也就是这样,
<application
...>
<activity
...>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
这样我们的需求就完成了,是不是很简单,在安装完成后重新启动我们的设备,系统就会让我们选择要打开系统的launcher还是我们自己的launcher。
选择始终以后每次开机就会启动自己的launcher APP,这样做是简单,但弊端是:用户如果卸载了这个APP或恢复出厂设置以后,那么就会启用系统的 launcher 。做不到防止修改的作用。但是我的需求是,不需要界面,也就是用户是不能对开发板就行安装和卸载的,所以在这里是比较适用的。
进一步的完善
怎么对我们的App做进一步的完善呢,一山不容二虎,当然是删除系统的launcher了,这样就可以做到比较完善的地步啦。
删除launcher的方式
- 第一种方式的话比较简单一些,就是将设备进行root操作,获取到root权限之后将系统的launcher进行卸载操作,弊端是,用户获取到root权限之后可以随意卸载App,包括咱们自己写的launcher,所以root有风险,一定要慎用啊。
- 第二种就是修改Android系统的源码,删除与系统launcher相关的文件。
如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。