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

9.打开MIUI中的悬浮窗权限编辑界面分析过程_第1张图片

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

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

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

9.打开MIUI中的悬浮窗权限编辑界面分析过程_第2张图片
9.打开MIUI中的悬浮窗权限编辑界面分析过程_第3张图片
       通过上图可以知道,悬浮窗的编辑界面所在的包名为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。并且值为包名,如下图
9.打开MIUI中的悬浮窗权限编辑界面分析过程_第4张图片

第三步:编写测试代码。
/**
	 * 打开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();
		}
	}

运行发现成功了
9.打开MIUI中的悬浮窗权限编辑界面分析过程_第5张图片

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


你可能感兴趣的:(9.打开MIUI中的悬浮窗权限编辑界面分析过程)