美文网首页
android开机自启动

android开机自启动

作者: vancent | 来源:发表于2016-08-20 18:39 被阅读973次

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

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

    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

    相关文章

      网友评论

          本文标题:android开机自启动

          本文链接:https://www.haomeiwen.com/subject/ncyisttx.html