上一篇文章如何实现无界面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.javaMainActivity.java和MyService.java的示例代码参考上一篇文章如何实现无界面Android app即可。
问题解决如果app自启动失败,可以尝试以下方法进行解决:
1、确认手机管家是否禁止了app自启动,如果被禁用,在手机管家中为app添加自启动权限后,再进行尝试:
2、如果app安装在SD卡中,可能会导致接收不到系统的广播消息,这种情况可以在AndroIDManifest.xml中添加如下代码,使app只能被安装在内存中:
androID:installLocation="internalOnly"
总结 以上是内存溢出为你收集整理的如何实现Android app开机自启动全部内容,希望文章能够帮你解决如何实现Android app开机自启动所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)