关于Android自启动管理的相关知识点
来源:互联网 发布:网络交流软件 编辑:程序博客网 时间:2024/04/29 21:50
1.自启动的实现
1.添加权限。<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
2.在xml文件里,静态注册广播接收器。
3.实现具体自启动广播接收器类代码。
2.接收不到BOOT_COMPLETED广播的情况1.应用处于stoped状态:安装完后没有启动(安装在/system/app/除外),或者被强制停止(看到很多帖子都说是强制关闭,有误解:认为直接kill进程会进入停止状态,其实是设置应用管理里面的“强制停止”)。是接收不到系统广播的(有的说是从3.1开始)。
2.应用安装在SD卡上,系统启动,发送BOOT_COMPLETED广播后,才会加载SD卡
3.其它广播来代替BOOT_COMPLETED
1.SD卡挂载广播:
<intent-filter > <action android:name="android.intent.action.MEDIA_MOUNTED" /> <action android:name="android.intent.action.MEDIA_UNMOUNTED" /> <data android:scheme="file" > </data> </intent-filter>
2.网络状态
4.自启动管理
1.pm disable-user/enable yourPackName/appName
但是呢这个有个问题,程序被完全禁止了。
2.通过setComponentEnabledSetting 去进行控制。
360等管理软件自启管理动应该是通过setComponentEnabledSetting 去实现的,但不明白如何拥有权限去控制的?望有知道的人可以告知下。为什么说360等控制自启动软件是通过setComponentEnabledSetting 实现的呢?我是这么测试的:
先安装个自启动的测试app(里面写了用setComponentEnabledSetting 把自己的广播接收Receiver激活的功能代码), 测试自启动成功后。
再用360把自启动给关掉。手机重启测试app已经无法自启动。
这时手动打开测试APP,运行激活广播接收器的代码(setComponentEnabledSetting )。
重启手机,自启动成功。
激活代码:
/* 激活receiver * @param * context 上下文 * name 要激活的receiver的名字--要带包名例:com.test.TimeReceiver*/ public void decide(Context context,String name) { pm=context.getPackageManager();mComponentName=new ComponentName(context,name);if(pm.getComponentEnabledSetting(mComponentName)!=1){pm.setComponentEnabledSetting(mComponentName,PackageManager.COMPONENT_ENABLED_STATE_ENABLED,PackageManager.DONT_KILL_APP); } }
测试方法如果有问题忘指正,所以最后的结果是虽然不知道如何去控制别人的自启动,但还是可以保证自己的自启动接收器在激活状态。
5.不能静态注册的广播
1.android.intent.action.SCREEN_ON
2.android.intent.action.SCREEN_OFF
3.android.intent.action.BATTERY_CHANGED
4.android.intent.action.CONFIGURATION_CHANGED
5.android.intent.action.TIME_TICK
- 关于Android自启动管理的相关知识点
- 管理android应用的自启动应用---自启动管理
- Android自启动管理
- 自启动的管理
- Android知识点三:开机自启动
- 关于电池容量的相关知识点
- 关于计时的相关知识点
- 关于数据的相关知识点
- linxu 自启动的管理
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- 关于项目管理的知识点
- iperf 测试带宽
- mysqldump报错'The user specified as a definer ('root'@'%') does not exist when using LOCK TABLES'
- sql 修改表结构
- LeetCode_String_Easy
- windows手动添加软件自启动项
- 关于Android自启动管理的相关知识点
- 自定义分页方法 1.1版
- ubuntu 下安装jad反编译器,显示源代码
- 连续英文、数字换行
- C#中的线程(三)使用多线程
- java mysql 批量处理
- Thinkphp的URL规则,伪静态,路由,重写,伪静态,生成及其调试
- vc6.0 调用ocx控件
- 火云开发课堂 - 《Shader从入门到精通》系列 第二十节:在Shader中对3D模型进行多纹理混合