查看原文
其他

QUERY_ALL_PACKAGES权限不给了!!!我们如何获取用户应用安装列表?

互金出海百晓通 趣浪出海
2024-10-21

先抛问题

在小贷行业,近期有很多友商反馈因为通过获取QUERY_ALL_PACKAGES权限收集用户的应用安装列表,也就是Applist而被Google移除了应用,错误如下:



但我们为了风控考虑,我们肯定不能直接去掉获取用户Applist的数据收集。在某些国家,例如印尼(明令禁止获取SMS),菲律宾(有很大风险获取SMS),所以Applist在这些国家在风控上的表现尤为重要。再言,即使我们的App获取了SMS和其他信息,Applist数据对于风控来说也是一个很好的补充。那么,我们必须要定位问题和想办法获取这部分数据了。

问题定位

以下链接需翻墙
‍‍

https://support.google.com/googleplay/android-developer/answer/10158779?sjid=14118332835384194975-AP

https://developer.android.com/training/package-visibility

简单给大家总结一下:Google明确禁止了个人贷款应用无法通过获取QUERY_ALL_PACKAGES权限来收集用户的Applist数据。

没有QUERY_ALL_PACKAGES权限,如何获取Applist?

我们先看google的解释,在 https://developer.android.com/training/package-visibility 官方博文中,google 提供了3种方式获取App信息:

1)查询特定软件包(手动罗列自己需要检测的app列表)

<manifest package="com.example.game">
<queries>
<package android:name="com.example.store" />
<package android:name="com.example.services" />
</queries>
...
</manifest>

2)给定 intent 过滤器的情况下查询应用(满足该启动条件的应用列表)

<manifest package="com.example.game">
<queries>
<intent>
<action android:name="android.intent.action.SEND" />
<data android:mimeType="image/jpeg" />
</intent>
</queries>
...
</manifest>

3)给定提供程序授权的情况下查询应用(有对应的provider的应用列表)

<manifest package="com.example.suite.enterprise">
<queries>
<provider android:authorities="com.example.settings.files" />
</queries>
...
</manifest>

第一种方式:我们需要自己列举所有需要监控的App,而且需要每时每刻维护监控的List,实现起来有点怪异,而且需要发版才能更新applist列表,肯定是不合适的。

第二种方式:思考一下,我们是否可以通过android.intent.action.MAIN来通过启动器入口来获取Applist,所有的app基本都是有这个的Action的,这种获取方式是最符合我们的数据收集场景的,事实证明也是如此。

<uses-permission
android:name="android.permission.QUERY_ALL_PACKAGES"
tools:node="remove" />
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
</queries>

为什么要声明QUERY_ALL_PACKAGES权限并remove呢,这样做是为了确保我们不会因为三方导入这个权限来影响我们的应用在线状态,不是很了解的同学可以查下remove的实际含义。

第三种我们就不做过多调研了。

这样做,我们既符合了Google Play对developer开发者的要求,又获取到了几乎所有的applist数据,满足了风控的需求,促进我们的小贷业务高效稳定快速发展下去。

出海共济 

出海之路,路远且艰。更多金融出海解决方案,欢迎大家关注公众号并留言给我们,大家一起探讨更多合规问题,稳健航行世界之海。

继续滑动看下一个
趣浪出海
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存