`

android开机自启广播无效果的曲线解决方案

阅读更多
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="where.com.whereareyou">

    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-sdk
        android:minSdkVersion="7"
        android:sharedUserId="android.uid.system" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Holo.NoActionBar">
        <activity
            android:name="where.com.whereareyou.MainActivity"
            android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver android:name="where.com.whereareyou.BootBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.media.AUDIO_BECOMING_NOISY" />
            </intent-filter>
        </receiver>
        <service android:name=".MyService"/>
    </application>
</manifest>


MyService
package where.com.whereareyou;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

/**
 * Created by Administrator on 2015-10-4.
 */
public class MyService extends Service {
    public final static String TAG = "MyService";

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e(TAG,"onStartCommand");
        return START_NOT_STICKY;
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.e(TAG,"onDestroy");
    }

    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }
}


BootBroadcastReceiver
package where.com.whereareyou;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/**
 * Created by Administrator on 2015-10-4.
 */
public class BootBroadcastReceiver extends BroadcastReceiver {
    static final String TAG = "BootBroadcastReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        Log.e(TAG, "BootBroadcastReceiver onReceive");
        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED) ||  android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(intent.getAction())) {
            Log.e(TAG, "action=" + intent.getAction());
            Intent ootStartIntent = new Intent(context, MyService.class);
            context.startService(ootStartIntent);
        }
    }

}


如代码所示,Intent.ACTION_BOOT_COMPLETED表示boot启动完毕后,系统会发送一个广播过来,理论上确实可以接收到,大部分手机估计也都是可以的,但是就是有那么些手机rom被改得不可思议,非要加上个android.media.AudioManager.ACTION_AUDIO_BECOMING_NOISY才可以在开机的时候让系统执行Intent.ACTION_BOOT_COMPLETED广播的发送,根据LOG可以看出,以OPPO1107为例,系统是先发送了ACTION_AUDIO_BECOMING_NOISY后发送了ACTION_BOOT_COMPLETED,仅以此博,做个纪念
分享到:
评论

相关推荐

    android应用开机自启动

    当我们的应用接收到这个广播时,就可以执行相应的操作,如启动服务或者启动主Activity,达到开机自启动的效果。 二、创建广播接收器 1. 首先,我们需要创建一个继承自BroadcastReceiver的类,例如命名为`...

    Android应用开机自动启动

    在Android系统中,应用通常不会在开机时自动启动,除非开发者特别设置了这个功能。这个功能在某些场景下非常有用,比如天气更新应用、消息推送服务等。本篇将详细讲解如何实现Android应用的开机自动启动。 一、...

    delphi ex10 android 实现开机自启动

    标题中的"Delphi EX10 Android 实现开机自启动"是指使用Embarcadero Delphi XE10(也称为 RAD Studio XE10)开发的Android应用程序,目的是使其能够在设备启动时自动运行。这个过程涉及到Android系统的权限管理和...

    android 开机启动DEMO

    在Android系统中,实现开机启动服务或应用是一个常见的需求,特别是在开发系统级或者需要后台...记得在测试时,需要在模拟器或真机上开启开发者选项中的"允许模拟系统启动广播",否则无法在调试模式下触发开机广播。

    android开机自启动APP及使用adb命令测试方法

    这里说个题外话,手机软件除非特殊情况,不然最好不要做开机自启动,开机自启动一般适用于android系统的终端机上,开机即运行相应的项目,该机器上也只有这个项目,下面上代码。 新建一个类AutoSta

    解决全志A64 Android6.0第三方应用无法接收到开机广播补丁

    例如,开机广播是一种常见的系统广播,当设备启动时,系统会发出这个广播,让注册了相应广播接收器的应用程序能够执行相应的启动操作。然而,在某些定制版的Android系统中,特别是对于全志A64这种常见的嵌入式处理器...

    Delphi下 Android 开机启动代码

    在Delphi环境下开发Android应用程序时,有时我们需要实现一个功能,即让应用在Android设备开机时自动启动。这个功能通常用于后台服务、定时任务或者需要在系统启动时立即运行的特定功能。以下是对如何在Delphi中创建...

    android应用程序开机启动

    Android应用程序可以实现开机时启动相关应用 如service等 Android系统在开机启动时会发出一个系统广播&quot;android intent action BOOT COMPLETED&quot; 在接收到这个广播就可以实现开机自启动功能 下面就是一个...

    【Android】开机自启动2

    在Android系统中,"开机自启动"是指当设备完成启动过程后,某些应用程序或服务能够自动启动并开始运行。这通常涉及到系统级别的设置和权限管理,对于开发者来说,理解和掌握这个功能是创建后台服务和持续运行应用的...

    android开机自动启动service例子

    在实际应用中,你可能还需要处理一些额外的情况,比如在用户禁止应用开机自启时妥善处理,或者在服务运行过程中监听网络状态变化等。总的来说,理解并正确使用`Service`和`BroadcastReceiver`是Android开发中的重要...

    unity打包安卓开机自启

    unity打包安卓实现安卓应用开机自启。使用方法:把"安卓开机自动.arr"文件导入到unity项目中,手机重启后等待1-2分钟该应用即可自己打开。之前的在安卓10上没效果,修改了下。适用于安卓10版本。注意:需要在安卓10里...

    android开机自启测试程序

    在Android系统中,开机自启是一项重要的功能,它允许应用程序在设备启动时自动运行,以执行特定的任务,如同步数据、提供实时服务等。本文将详细介绍如何开发一个Android开机自启测试程序,以及相关的技术要点。 ...

    代码获取android开机启动时间,已经开机启动应用

    Android系统提供了`BroadcastReceiver`类,用于监听系统广播事件,包括开机启动广播。创建一个名为`BootUpReceiver`的`BroadcastReceiver`,并在其`onReceive()`方法中处理开机启动事件: ```java public class ...

    【Android】开机自启动

    在Android系统中,"开机自启动"是指当设备完成启动过程后,某些应用程序或服务能够自动启动,无需用户手动操作。这通常涉及到Android系统的广播接收器(BroadcastReceiver)和权限设置。下面将详细讲解Android开机自...

    android实现开机自启动以及后台运行

    在Android平台上,实现应用的开机自启动和后台运行是一项常见的需求,这通常涉及到服务(Service)、广播接收器(BroadcastReceiver)以及系统权限的管理。在本文中,我们将深入探讨如何在Android 2.1及以上版本中...

    android 开机启动自己的应用

    开发者可以通过创建一个BootReceiver(启动广播接收器)来监听系统启动完成的事件。当BroadcastReceiver接收到ACTION_BOOT_COMPLETED广播时,便可以启动自定义的应用或服务。 1. 创建BootReceiver: 在...

    android开机启动service

    在Android系统中,"开机启动service"是指一种机制,允许应用程序在设备启动完成后自动启动一个服务(Service)。这种功能常用于需要在后台持续运行的任务,例如闹钟、定时任务或者同步服务等。以下是对如何实现...

    Android中实现开机自动启动服务(service)实例

    还是做成一个 apk 吧,暂定只写一个 service 并开机自动启用,无 activity 的。 Java 中调用 native 程序我选择使用 JNI 方式,直接在 JNI_OnLoad 方法中调用 pthread_create 创建个线程跑原来的 main 就行啦。 ...

Global site tag (gtag.js) - Google Analytics