Android实现开机自启动无效问题

本文深入解析Android应用程序如何实现开机自启动功能,包括使用系统广播`android.intent.action.BOOT_COMPLETED`来触发服务启动的过程。同时,文章还详细列举了开机自启动失效的常见原因及解决方案,如未正确注册广播接收器、权限不足等问题,并提供了解决步骤。通过实例代码演示,旨在帮助开发者有效解决Android应用的开机自启动问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android应用程序可以实现开机时启动相关应用(如service等),Android系统在开机启动时会发出一个系统广播"android.intent.action.BOOT_COMPLETED",在接收到这个广播就可以实现开机自启动功能。

下面就是一个简单的开机启动的广播receiver

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

import com.feng.service.AndroidTestService;
import com.feng.service.SecondService;

/** 
 * @ClassName:	BootReceiver 
 * @Description:广播监听程序
 * @author:	Android_Robot
 * @date:	2011-11-26 08:44:33  
 */
public class BootReceiver extends BroadcastReceiver {

	/**
	 * Method name: onReceive <BR>
	 * Description: please write your description <BR>
	 * Remark: <BR>
	 * @param context
	 * @param intent  <BR>
	*/
	@Override
	public void onReceive(Context context, Intent intent) {
		
		if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {

			Log.i("MyBootReceiver", "****** system boot completed ******");
			
			// ****** 启动一个Service ******
			Intent i= new Intent(); 
			i.setClass(context, AndroidTestService.class); 
			i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
			context.startService(i); 

		}
	}
}

下面简单说下开机自启动失效问题

  1. 系统中没有注册receiver
    尽管这个问题几乎是不可能出现的,还是列出来吧,^_^
    在AndroidManifest.xml中注册receiver
    <receiver android:name=".receiver.BootReceiver"
    	android:label="@string/app_name">
    	<intent-filter>
    
    		<action android:name="android.intent.action.BOOT_COMPLETED"/>
    		
    	</intent-filter>
    </receiver>
  2. 没有Boot权限
    和上面一样,这个问题也是几乎不可能出现的
    添加权限
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
  3. 修改之后直接关闭模拟器,然后Run as ...
    Run as 是相当于先启动模拟器,然后再安装应用程序,虽然这种情况有时也会成功,但失败的情况也不少
    在测试这种开机启动的应用的时候不应该直接Run as...,应该在AVD中启动模拟器,如图
  4. 如下图所示

    这个问题烦了我很久,有这种Android实现开机自启动无效的问题,不妨参考下这种方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值