getActivity / XXPermissions

Android 权限请求框架,已适配 Android 14
Apache License 2.0
5.44k stars 735 forks source link

[疑惑]:项目集成了XXPermissions:18.63版本权限请求,上架小米商店时,被检测出来授权前获取应用安装列表 #281

Open SLYOL opened 1 month ago

SLYOL commented 1 month ago

问题描述【必填】

项目集成了XXPermissions:18.63版本权限请求,上架小米商店时,被检测出来授权前获取应用安装列表,这个我应该怎么处理?能确定的是,在弹出来隐私政策框之前没有进行任何的权限申请

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

issue 列表中是否有人曾提过类似的问题【必答】

是否已经搜索过了 issue 列表但还未能解决的【必答】

getActivity commented 1 month ago

小伙子,XXPermissions 是权限申请框架,内部实现肯定没有获取应用列表这一说,你怎么确定这个问题就是框架导致的?

SLYOL commented 1 month ago

感谢大佬,我也不确定是,小米检测出来有个截图啊,所以来确定一下,这个和框架包名一样,另外调用栈如下: android.app.ApplicationPackageManager.queryIntentActivitiesAsUser(ApplicationPackageManager.java:1022)<---android.app.ApplicationPackageManager.queryIntentActivities(ApplicationPackageManager.java:995)<---com.hjq.permissions.PermissionUtils.areActivityIntent(PermissionUtils.java:429)<---com.hjq.permissions.PermissionIntentManager.getApplicationDetailsIntent(PermissionIntentManager.java:303)<---com.hjq.permissions.PermissionDelegateImplV14.getPermissionIntent(PermissionDelegateImplV14.java:41)<---com.hjq.permissions.PermissionDelegateImplV18.getPermissionIntent(PermissionDelegateImplV18.java:40)<---com.hjq.permissions.PermissionDelegateImplV19.getPermissionIntent(PermissionDelegateImplV19.java:88)<---com.hjq.permissions.PermissionDelegateImplV21.getPermissionIntent(PermissionDelegateImplV21.java:42)<---com.hjq.permissions.PermissionDelegateImplV23.getPermissionIntent(PermissionDelegateImplV23.java:225)<---com.hjq.permissions.PermissionDelegateImplV26.getPermissionIntent(PermissionDelegateImplV26.java:64)<---com.hjq.permissions.PermissionApi.getPermissionIntent(PermissionApi.java:75)<---com.hjq.permissions.PermissionUtils.getSmartPermissionIntent(PermissionUtils.java:446)<---com.hjq.permissions.PermissionPageFragment.onResume(PermissionPageFragment.java:117)<---android.app.Fragment.performResume(Fragment.java:2554)<---android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1322)<---android.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1557)<---android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1618)<---android.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2196)<---android.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2142)<---android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2043)<---android.app.FragmentManagerImpl$1.run(FragmentManager.java:719)<---android.os.Handler.handleCallback(Handler.java:790)<---android.os.Handler.dispatchMessage(Handler.java:99)<---android.os.Looper.loop(Looper.java:164)<---android.app.ActivityThread.main(ActivityThread.java:6843)<---java.lang.reflect.Method.invoke(Native Method)<---com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)<---com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 检测图如下: 企业微信截图_17133198185831

getActivity commented 1 month ago

小伙子,PermissionPageFragment 不会无缘无故创建,你看看是不是在隐私弹窗同意前调用了 XXPermissions 的某些函数?例如 startPermissionActivity?

SLYOL commented 1 month ago

经排查,没有呢,在启动类里面就没这个XXPermissions类名,所以说就奇怪了,经过上面的调用栈,能确定是咱这个框架申请的权限吗?

getActivity commented 1 month ago
image
getActivity commented 1 month ago

从堆栈分析,确实是框架的问题,但是这不能代表一定就是框架的问题,PermissionPageFragment 不会无缘无故创建,肯定外层手动调用了它,或者调用了 XXPermissions.startPermissionActivity 的 API,你需要提供更多的证据来证明这个是框架的问题。