Android 程序 开机自启动问题

Android 程序 开机自启动问题

在Android程序中,我们有很多功能或需求需要手机开机后就自动启动,通常我们采用的方法是监听**开机启动的广播**或者开机声音的广播等等只有开机时才会发出的操作。
我们利用开机广播来实现程序开机自启动需要如下几个操作:

1.在清单配置文件 manifest下添加(表示将程序安装在手机存储中而非SD卡中)
 android:installLocation="internalOnly"
2.注册一个开机广播
 </receiver>-->
        <receiver
            android:name="com.example.bdmobile.BootBroadcastReceiver"
            android:enabled="true"
            android:exported="true"
            **android:permission="android.permission.RECEIVE_BOOT_COMPLETED**"
            >
            <intent-filter>
                **<action android:name="android.intent.action.BOOT_COMPLETED" />
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.HOME"/>**
            </intent-filter>
        </receiver>

3.开机接收开机广播的权限

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

4.新建一个广播接收器,接收到广播后的操作

public class BootBroadcastReceiver extends BroadcastReceiver {
    Context mContext;
    @Override
    public void onReceive(Context context, Intent intent) {
        mContext=context;
        //if (intent.getAction().equals(action_boot) || intent.getAction().equals(action_packageadd)|| intent.getAction().equals(action_packageremove) || intent.getAction().equals(action_packagereplace))
        if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED")) {
            Log.i("123456","android.intent.action.BOOT_COMPLETED");
            Intent ootStartIntent=new Intent(context,MainActivity.class);
          /*  ootStartIntent.setAction("android.intent.action.MAIN");
            ootStartIntent.addCategory("android.intent.category.LAUNCHER");*/
            **ootStartIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);**  
            context.startActivity(ootStartIntent);
        }
    }
}

经过这四步操作,程序就能实现开机自启动,在高版本的Android程序中,有些手机需要在手机管家会把自启动禁掉,需要重新设置。

注意程序自启动前第一次需要自己手动开启程序一次。不能手动开启的,需要使用ADB来实现推送启动。

Android 中让程序开机自动启动,通常有两种方式: 1. 使用广播接收器 在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 然后创建一个 BroadcastReceiver,在接收到 `android.intent.action.BOOT_COMPLETED` 广播时启动你的程序。 示例代码: ```java public class BootReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) { Intent bootIntent = new Intent(context, YourActivity.class); bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(bootIntent); } } } ``` 在 AndroidManifest.xml 中添加以下代码: ```xml <receiver android:name=".BootReceiver"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> ``` 2. 使用系统服务 在 AndroidManifest.xml 文件中添加以下代码: ``` <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> ``` 然后创建一个 Service,在 `onCreate()` 方法中启动你的程序。 示例代码: ```java public class BootService extends Service { @Override public void onCreate() { super.onCreate(); Intent bootIntent = new Intent(this, YourActivity.class); bootIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(bootIntent); } @Override public IBinder onBind(Intent intent) { return null; } } ``` 在 AndroidManifest.xml 中添加以下代码: ```xml <service android:name=".BootService"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </service> ``` 注意:使用第二种方式需要在 Android 5.0 以上版本上进行测试,因为 Android 5.0 以下版本不支持在 Service 中启动 Activity。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值