Vivo跳转无障碍辅助功能页面

系统分析

Posted by JovenHe on July 9, 2021

有功能需要用户打开辅助功能,需要vivo机型上的适配,判断辅助功能未开启时跳转该页面

adb 查看无障碍辅助功能是哪个页面

mCurrentFocus=Window{2609cb0 u0 com.android.settings/com.vivo.settings.VivoSubSettings}

但好多页面查看后都是这个,所以页面有多个fragment,需要反编译查看如何展示

导出Settings.apk,jadx打开apk

先打开AndroidManifest.xml,找到VivoSubSettings页面

manifest中vivosubsettings.jpg

没看到特殊的权限,说明可以直接跳转,而且很容易注意到有一个不一样的action,直接查看代码

vivoSubSettings.jpg

能看到有个很多fragment的name集合,并且getintent中也有做处理,直接找关键代码

vivosubsettings_getExtraFragment.jpg

很容易反推出需要传的值,key是”extra”,value是刚刚很多fragment的name集合中的某个值就可以,很容易找到辅助功能的类名是com.android.settings.accessibility.AccessibilitySettings

val intent = Intent("android.settings.SETTINGS.SUB_SETTINGS")
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
intent.component = ComponentName("com.android.settings", "com.vivo.settings.VivoSubSettings")
intent.putExtra("extra","fragment:com.android.settings.accessibility.AccessibilitySettings")
mContext.startActivity(intent)

再加上辅助功能是否打开就可以了

vivo辅助功能是否开启.jpg