Google Play 应用被拒-数据安全表单无效(设备上的应用)

大家看了这两张图后,第一反应大概率是去数据安全模块下面把安装的应用给勾上进行重新送审,当然这也没啥问题。

今天聊聊我的一些看法。

这个问题的在于很多开发者对于自己所收集的数据或者接入SDK所收集的数据 没有比较清晰的了解。

我们其实要解决以下几个问题:

  1. 怎么判断是否收集了设备上的应用
  2. 如何规避更多因数据安全表单被拒

下面说下我的一个解决思路

怎么判断是否收集了设备上的应用

有几个排查思路。

1.检查自己代码

代码中包含以下特征的都算,比如

getInstalledApplications 用于获取设备上安装的应用列表

scala 复制代码
public class MainActivity extends AppCompatActivity {

    private static final String TAG = "InstalledApps";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取 PackageManager 实例
        PackageManager packageManager = getPackageManager();
        // 调用 getInstalledApplications 获取已安装的应用列表
        List<ApplicationInfo> installedApps = packageManager.getInstalledApplications(PackageManager.GET_META_DATA);

        // 遍历应用列表并打印包名和应用名称
        for (ApplicationInfo app : installedApps) {
            String packageName = app.packageName; // 获取包名
            String appName = packageManager.getApplicationLabel(app).toString(); // 获取应用名称
            Log.d(TAG, "App Name: " + appName + ", Package: " + packageName);
        }
    }
}

getInstalledPackages 用于获取设备上安装的应用列表

scala 复制代码
public class MainActivity extends AppCompatActivity {
    private static final String TAG = "InstalledPackages";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取 PackageManager 实例
        PackageManager packageManager = getPackageManager();

        // 调用 getInstalledPackages 获取已安装的包列表
        List<PackageInfo> installedPackages = packageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);

        // 遍历包列表并打印包名、应用名称和版本号
        for (PackageInfo pkg : installedPackages) {
            String packageName = pkg.packageName; // 获取包名
            String appName = packageManager.getApplicationLabel(pkg.applicationInfo).toString(); // 获取应用名称
            String versionName = pkg.versionName; // 获取版本号
            Log.d(TAG, "App Name: " + appName + ", Package: " + packageName + ", Version: " + versionName);
        }
    }
}

QUERY_ALL_PACKAGES 清单文件获取应用列表权限

ini 复制代码
<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES"/>

queries package 清单文件指定某个包的应用信息

xml 复制代码
<manifest ...>
    <queries>
        <package android:name="com.facebook.katana" />
    </queries>
    <application ...>
        ...
    </application>
</manifest>

以上都是自己的代码能够检查的,如果有这些代码特征那就需要在Google Play 数据安全表单勾上 设备上的应用。

2.检查SDK

代码中引用了一些三方SDK,注意这里所说的主要指代 Google Play SDK Index 上的。 Google Play SDK Index

每个在 Google Play Index 上的SDK都会提供数据安全参考填写说明。 直接去检查对应SDK的数据安全填写指南里面找有没有手机应用列表即可。

如何规避更多因数据安全表单被拒

这里主要也指使用Google Play SDK Index 上的SDK。

比如数据归因平台-Adjust SDK

点进去就能看到数据安全填写指南 Google Play 数据安全 | Adjust Help Center

再比如另一个数据归因平台-Branch

同样点进去也能看到对应的数据安全填写指南

最后完全按照对应SDK所提供的数据安全表单指南填写即可。

相关推荐
alexhilton7 小时前
Room Fts4:全文搜索替代 SQL LIKE
android·kotlin·android jetpack
hai_android12 小时前
把 Android App 打包成系统应用(System App)
android·kotlin·android jetpack
JMchen13 小时前
【Jetpack 内核实战 01】开篇:Jetpack 组件全家桶核心逻辑与专栏完整规划
android·kotlin·android jetpack
骑着蜗牛撵大象32715 小时前
Linux 进程间通信之管道:从 pipe() 的内核语义到 FIFO 落地排错
android·java·linux·系统编程·fifo·管道·进程间通信
hunterandroid15 小时前
Retrofit 网络请求的异常处理与重试策略实战
android
sejinan16 小时前
极致轻量与秒级起播:NativeWasmTv 开源硬核技术解析与升级版体验
android·开源·webview·tv
小羊没烦恼!16 小时前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
mmsx16 小时前
Android 静默失败实录:五个没有日志的线上事故
android·kotlin
hai_android17 小时前
从零实现一个支持跨进程(IPC)的自定义 Toast
android·kotlin·android jetpack
龙腾-虎跃17 小时前
基于 SIP 协议的自研电话终端:FreeSWITCH 语音与视频通信实战
android·音视频·freeswitch·sip协议终端·wertc