Android平板电脑支持Android 4.2及更高版本,支持多个用户。这意味着每个用户都可以拥有自己独立的应用程序集,这些应用程序将与其他用户分开。此外,如果用户A安装了应用程序,则在用户B登录时将无法使用该应用程序。
所以我的问题是,如果有一种方法可以确定在安装应用程序时使用PackageManager
,我可以知道哪个用户实际安装了它吗?
答案 0 :(得分:0)
不幸的是,没有一种简单直接的方法可以“识别”哪个用户安装了您的应用。唯一的选择是将用户与documentation中所述的唯一ID相关联:
通过首次启动应用时创建新的UUID,无论用户在单个设备上安装了多少用户,您都可以获得用于跟踪每个用户的唯一ID。
因此,虽然您可能无法通过某种凭证直接检索用户,但您可以使用(code here)模拟自己的用户:
public class Installation {
private static String sID = null;
private static final String INSTALLATION = "INSTALLATION";
public synchronized static String id(Context context) {
if (sID == null) {
File installation = new File(context.getFilesDir(), INSTALLATION);
try {
if (!installation.exists())
writeInstallationFile(installation);
sID = readInstallationFile(installation);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
return sID;
}
private static String readInstallationFile(File installation) throws IOException {
RandomAccessFile f = new RandomAccessFile(installation, "r");
byte[] bytes = new byte[(int) f.length()];
f.readFully(bytes);
f.close();
return new String(bytes);
}
private static void writeInstallationFile(File installation) throws IOException {
FileOutputStream out = new FileOutputStream(installation);
String id = UUID.randomUUID().toString();
out.write(id.getBytes());
out.close();
}
}
答案 1 :(得分:0)
我找到了解决方案。获取用户信息的最佳方式是使用UserManager
API。虽然某些API要求应用程序是系统应用程序,但我们可以获取有关当前用户名,用户ID等的所有信息。