systemui 快捷设置三方apk设置项数据
https://blog.csdn.net/a396604593/article/details/120767052
之前文章中提到过,如果快捷设置栏横竖屏要显示不一致,会有数组越界的可能。
当时的处理是限制最小个数不让拖动小于横竖屏个数最大值。
最近又发现一种可能引起crash的路径—三方apk的快捷设置
当我们移除快捷设置到无法拖动时,剩下的存在三方apk的快捷设置,然后卸载掉apk,系统会自动删掉对应的快捷设置项。
从而导致快捷设置不满一行,就和上篇中的横竖屏数组越界crash一样。
为什么三方apk可以显示在systemui中的快捷设置里:
vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/qs/customize/TileQueryHelper.java的addPackageTiles中
//addPackageTiles()
//查询支持的设置项
List<ResolveInfo> services = pm.queryIntentServicesAsUser(
new Intent(TileService.ACTION_QS_TILE), 0, ActivityManager.getCurrentUser());
只要三方apk的service注册了TileService.ACTION_QS_TILE,就可以被系统检测到。
< action android:name=“android.service.quicksettings.action.QS_TILE” />
简单记录一下复现路径~