【问题标题】:What is the default android:sharedUserId set if android:sharedUserId was not set如果未设置 android:sharedUserId,则默认设置的 android:sharedUserId 是什么
【发布时间】:2017-04-28 20:49:30
【问题描述】:
来自documentation:
将与其他应用程序共享的 Linux 用户 ID 的名称。 默认情况下,Android 会为每个应用程序分配其自己的唯一用户 ID。
假设我有一个应用程序没有在 AndroidManifest.xml 文件中指定 android:sharedUserId。
Android 生成的默认 sharedUserId(参见上面的文档)是在构建中设置的(对于所有设备上的此应用都相同),还是在安装该应用的每台设备上生成不同的 sharedUserId?
【问题讨论】:
标签:
android
android-manifest
【解决方案1】:
Android 会为您在设备上安装的每个应用程序生成随机唯一 ID。
您可以通过以下方式获取此值:
adb shell dumpsys package com.example.myapp | grep userId=
或在代码中:
int uId = getPackageManager().getApplicationInfo("com.example.myapp",PackageManager.GET_META_DATA).uid;
但是,如果您为两个或多个应用程序设置了相同的 android:sharedUserId 值,那么它们将共享相同的 ID — 只要它们的证书集相同。
具有相同用户 ID 的应用可以访问彼此的数据,并且如果需要,可以在同一进程中运行。