Android 利用launcher(安卓系统UI桌面)实现开机自启动App(root)

背景
前段时间有这样一个需求,做一个安卓系统的小型服务器,使用的开发板是萤火虫的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相关的文件。
如果有什么扩展的需求或者我有什么遗失和错误欢迎评论,我会第一时间回复和更新。
————————————————
借鉴了https://blog.csdn.net/qq_38001118/article/details/80675646
 

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现这个功能,你需要在你的安卓APP中添加以下几个步骤: 1. 在AndroidManifest.xml文件中添加启动器和权限: ```xml <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> <application ... <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> ``` 2. 在MainActivity.java文件中添加WebView组件,用于加载指定网址: ```java public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 设置全屏 requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.activity_main); // 初始化WebView mWebView = findViewById(R.id.webview); mWebView.setWebViewClient(new WebViewClient()); mWebView.loadUrl("http://www.example.com"); } } ``` 3. 在AndroidManifest.xml文件中添加服务,用于开机自启动: ```xml <service android:name=".BootService" android:permission="android.permission.RECEIVE_BOOT_COMPLETED"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </service> ``` 4. 在BootService.java文件中添加代码,用于开机自启动并打开MainActivity: ```java public class BootService extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent i = new Intent(context, MainActivity.class); i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(i); } } } ``` 5. 在AndroidManifest.xml文件中添加悬浮窗权限,用于全屏显示WebView: ```xml <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" /> ``` 6. 在MainActivity.java文件中重写onResume()方法,用于全屏显示WebView: ```java @Override public void onResume() { super.onResume(); // 全屏显示 getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN); } ``` 到此为止,你的安卓APP就可以实现开机自启动并全屏浏览指定网址的功能了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值