9.打开MIUI中的悬浮窗权限编辑界面分析过程

来源:互联网 发布:表情包走红网络论文 编辑:程序博客网 时间:2024/05/22 05:31


       在MIUI系统中悬浮窗的权限默认是被禁止的,如果开发APP的过程中需要用到悬浮窗的功能,如何引导用户打开悬浮窗权限?上图为EasyTouch在MIUI系统中引导用户打开悬浮窗权限的界面,是一个很好的示范例子。

       本文介绍一下,如何分析打开系统的设置界面。

第一步:打开你想调用的界面,通过adb shell dumpsys activity命令查看栈顶的Activity名称,从而确定目标Activity的路径。


       通过上图可以知道,悬浮窗的编辑界面所在的包名为com.miui.permcenter.permissions.AppPermissionsEditorActivity、目标界面处理的Action为miui.intent.action.APP_PERM_EDITOR、并且传入到该界面需要传Extras数据,那么问题来了,我要如何知道传入的Extras的key和value。且看第二步。

第二步:通过第一步中获取的包名com.miui.permcenter,大概猜测它在MIUI系统中的“安全中心”的app里面,于是到/system/app/目录下搜索,没有搜索到,再到/system/priv-app/目录下,发现了“安全中心”的app为SecurityCenter.apk,将其导出并反编译代码,找到com.miui.permcenter.permissions.AppPermissionsEditorActivity这个类,在onCreate方法中找到了我们想要的Extras的key。并且值为包名,如下图


第三步:编写测试代码。
/** * 打开MIUI权限编辑界面 */private void startMiuiPmActivity() {try {Intent intent = new Intent("miui.intent.action.APP_PERM_EDITOR");intent.setClassName("com.miui.securitycenter","com.miui.permcenter.permissions.AppPermissionsEditorActivity");intent.putExtra("extra_pkgname", getPackageName());startActivity(intent);} catch (Exception e) {e.printStackTrace();}}

运行发现成功了

最后:本次分析是在MIUI的v6版本上的分析结果,v5版本上的分析方法类似,请读者自己尝试分析。启动第三方可导出的Activity方法也类似。如果有更好的方法,可以告诉我。


0 0
原创粉丝点击