如何实现Android app开机自启动

如何实现Android app开机自启动,第1张

概述这里写目录标题前言代码实现AndroidManifest.xmlBootReceiver.javaMainActivity.java、MyService.java问题解决前言上一篇文章如何实现无界面Androidapp介绍了如何使app仅在后台运行服务,而这样的app常常需要同时具备开机启动的功能,接下来讲解一下实现app开机自启

这里写目录标题前言代码实现AndroidManifest.xmlBootReceiver.javaMainActivity.java、MyService.java问题解决

前言

上一篇文章如何实现无界面Android app介绍了如何使app仅在后台运行服务,而这样的app常常需要同时具备开机自启动的功能,接下来讲解一下实现app开机自启动的方法。

代码实现AndroIDManifest.xml

为了实现开机自启动功能,app需要监听androID开机广播,AndroIDManifest.xml中需要添加以下权限:

<uses-permission androID:name="androID.permission.RECEIVE_BOOT_COMPLETED" />

然后注册接收系统开机广播消息的广播接收者:

<receiver androID:name=".BootReceiver">	<intent-filter>		<action androID:name="androID.intent.action.BOOT_COMPLETED"></action>	</intent-filter></receiver>

完整代码如下:

<?xml version="1.0" enCoding="utf-8"?><manifest xmlns:androID="http://schemas.androID.com/apk/res/androID"    package="com.example.bootserviceapp">    <uses-permission androID:name="androID.permission.RECEIVE_BOOT_COMPLETED" />    <application        androID:allowBackup="true"        androID:icon="@mipmap/ic_launcher"        androID:label="@string/app_name"        androID:roundIcon="@mipmap/ic_launcher_round"        androID:supportsRtl="true"        androID:theme="@style/Apptheme">        <activity            androID:name=".MainActivity"            androID:theme="@androID:style/theme.Nodisplay"            >            <intent-filter>                <action androID:name="androID.intent.action.MAIN" />                <category androID:name="androID.intent.category.LAUNCHER" />            </intent-filter>        </activity>        <service androID:name=".MyService"></service>        <receiver androID:name=".BootReceiver">            <intent-filter>                <action androID:name="androID.intent.action.BOOT_COMPLETED"></action>            </intent-filter>        </receiver>    </application></manifest>
BootReceiver.java

编写广播接收者代码,广播接收者在收到androID开机广播后,启动需要在后台运行的service:

package com.example.bootserviceapp;import androID.content.broadcastReceiver;import androID.content.Context;import androID.content.Intent;import androID.util.Log;public class BootReceiver extends broadcastReceiver {    public BootReceiver() {    }    @OverrIDe    public voID onReceive(Context context, Intent intent) {        Log.v("Jason", "BootReceiver start");        Intent service = new Intent(context, MyService.class);        context.startService(service);        Log.v("Jason", "BootReceiver end");    }}
MainActivity.java、MyService.java

MainActivity.java和MyService.java的示例代码参考上一篇文章如何实现无界面Android app即可。

问题解决

如果app自启动失败,可以尝试以下方法进行解决:
1、确认手机管家是否禁止了app自启动,如果被禁用,在手机管家中为app添加自启动权限后,再进行尝试:


2、如果app安装在SD卡中,可能会导致接收不到系统的广播消息,这种情况可以在AndroIDManifest.xml中添加如下代码,使app只能被安装在内存中:

androID:installLocation="internalOnly"
总结

以上是内存溢出为你收集整理的如何实现Android app开机自启动全部内容,希望文章能够帮你解决如何实现Android app开机自启动所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1053188.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存