receiver开机自启动失败原因

发布时间:2024-12-10 11:56

反思失败原因,但不必过分自责。 #生活技巧# #心理健康建议# #应对失败的韧性培养#

最新推荐文章于 2021-05-25 16:14:15 发布

jingwen3699 于 2016-11-29 22:01:00 发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

应用开启自启动需要下面步骤

(1)在AndroidManifest.xml中注册广播

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.autoregistration"

android:versionCode="1"

android:versionName="1.0" >

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

<application android:persistent="true">

<receiver android:name=".AutoRegReceiver" >

<intent-filter>

<action android:name="android.intent.action.BOOT_COMPLETED" />

</intent-filter>

</receiver>

</application>

</manifest>

(2)在代码中实现一个广播

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.util.Log;

public class AutoRegReceiver extends BroadcastReceiver {

private static final String TAG = AutoRegReceiver.class.getSimpleName();

@Override

public void onReceive(Context context, Intent intent) {

String receivedAction = intent.getAction();

if (receivedAction.equals(Intent.ACTION_BOOT_COMPLETED)) {

if (DBG) {

Log.d(TAG, "Action boot completed received..");

}

}

}

}

备注:个别手机(如华为)需要去手机设置面板开启 应用自启动权限

2、自启动失败的原因
接收不到BOOT_COMPLETED广播可能的原因
(1)、BOOT_COMPLETED对应的action和uses-permission没有一起添加
(2)、应用安装到了sd卡内,安装在sd卡内的应用是收不到BOOT_COMPLETED广播的
(3)、系统开启了Fast Boot模式,这种模式下系统启动并不会发送BOOT_COMPLETED广播
(4)、应用程序安装后重来没有启动过,这种情况下应用程序接收不到任何广播,包括BOOT_COMPLETED、ACTION_PACKAGE_ADDED、CONNECTIVITY_ACTION等等。
Android3.1之后,系统为了加强了安全性控制,应用程序安装后或是(设置)应用管理中被强制关闭后处于stopped状态,在这种状态下接收不到任何广播。直到被启动过(用户打开或是其他应用调用)才会脱离这种状态,所以Android3.1之后
(1)、应用程序无法在安装后自己启动
(2)、没有ui的程序必须通过其他应用激活才能启动,如它的Activity、Service、Content Provider被其他应用调用。
存在一种例外,就是应用程序被adb push you.apk /system/app/下是会自动启动的,不处于stopped状态。

使用adb shell 发送广播

terminal :
adb shell am broadcast -aandroid.intent.action.BOOT_COMPLETED
执行结果:
Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED }
Broadcast completed: result=0

命令发送COMPLETED广播,而不用重启测试机或模拟器来测试BOOT_COMPLETED广播,这条命令可以更精确的发送到某个package,如下:
adb shell am broadcast -aandroid.intent.action.BOOT_COMPLETED-candroid.intent.category.com.qualcomm.qti.autoregistration

执行的结果:
Broadcasting: Intent { act=android.intent.action.BOOT_COMPLETED-candroid.intent.category.com.qualcomm.qti.autoregistration }
Broadcast completed: result=0


网址:receiver开机自启动失败原因 https://www.yuejiaxmz.com/news/view/433702

上一篇:函数
下一篇:C的进制问题

相关内容

华为激光打印机通过智慧生活App配网失败
掉以轻心自高自大=失败作文900字
华为智能门锁系列通过智慧生活App与手机绑定失败
MYSQL启动失败解决方法
homeassistant主动推送信息
轻运动:简单到不可能失败的健身指南
PowerBuilder连接SQLServer失败 SQL State:‘28000’
罐藏食品腐败变质的原因及对策
考研失败却过上更好的生活
VBA中在过程中调用另一个过程失败的一种原因

随便看看