android开机自启动

2016-08-20  本文已影响973人  vancent

很多时候为了用户使用方便,我们需要在移动设备开机时设置一些随机自启动服务,如定期发送自己关心的讯息、新收邮件的自动推送以及语音唤醒及识别等等,这些服务在日常生活中还是很有意义的。

对于注册并开启自动启动的代码也是比较简单的,百度可以在很多网站上找到实例,现把我自己在项目中使用到的代码贴在下面:

public class OnBootReceiver extends BroadcastReceiver {
    
    private static final String TAG = "SmartService";
    
    @Override
    public void onReceive(Context context, Intent intent) {
        
        if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
            
            // 开启应用
            Intent sintent = context.getPackageManager().getLaunchIntentForPackage( "app应用包名" );
            context.startActivity( sintent );
            
            // 开启服务代码
            //context.startService( new Intent(context, ServerService.class) );
            Log.e(TAG, "Brodcast received!!!");
        }
    }
}

相应地,我们需要在AndroidManifest.xml文件中加入权限设置和启动注册,如下:

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

// 注册广播接收器,设置过滤器
<receiver android:name="app应用包名.OnBootReceiver">
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</receiver>

将上述代码加入项目中即可以实现开机自动启动?如果是的话,你就真的太幸运了。笔者在小米手机上试过很多次,这样做是基本实现不了手机开机自动启动应用的,还必须在手机上作如下设置才行。

先从正在测试的app中退出,打开应用管理允许“开启WIFI”,再在自启动管理中允许需要开机启动的app,然后再打开app注册服务即可实现下次设备启动时自动启动,顺序最好严格按照这个过程来操作,因为笔者做过很多尝试都不一定能成功做到自动启动。

2016.09.06 补充:发现在注册Service之前先需要先使用Activityextends Activity进行注册,之后再改为extends Service 或者是直接命令 adb shell am startservice <Your package>/<Your Servce>启动Service

上一篇下一篇

猜你喜欢

热点阅读