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所提供的数据安全表单指南填写即可。

相关推荐
HLC++12 小时前
Linux的进程间通信
android·linux·服务器
爱笑鱼16 小时前
Binder(二):AIDL 生成的 Proxy、Stub 和 Parcel 到底在做什么?
android
爱笑鱼16 小时前
Binder(一):一次方法调用,究竟怎样跨进程执行?
android
壮哥_icon17 小时前
【Android 系统开发】使用 BAT 脚本高效自动化管理 /system/priv-app/ 系统应用(安装与卸载)
android·运维·自动化
用户693717500138419 小时前
Claude Code终端日志Token占用实测:一个过滤器砍掉60%-90%
android·前端·后端
蝉蜕日记19 小时前
AccumuPDF高级版 v2.57 | 视图文转换PDF,合并分割压缩
android·智能手机·pdf·生活·软件需求
吐了啊取名字太难19 小时前
美颜系统AI修图本地跑并支持Mac、win、安卓、iOS不卡顿
android·人工智能·windows·数码相机·mac·ai编程
阿pin20 小时前
Android随笔-Retrofit
android·retrofit
想取一个与众不同的名字好难20 小时前
安卓自定义颜色选择器
android
我命由我1234521 小时前
Android 开发问题:java.lang.NoSuchMethodError:No virtual method readAllBytes()
android·java·java-ee·kotlin·android studio·android-studio·android runtime