我希望找到用户允许安装其他应用程序的应用程序。我知道,如果我查找"android.permission.INSTALL_PACKAGES“,我将主要找到可以安装应用程序的系统包,但我希望找到用户允许安装应用程序的应用程序(如浏览器或电子邮件)。
我正在尝试下面的代码循环所有的应用程序,这显然是错误的,因为我找不到Chrome,我允许安装应用程序。有什么建议如何做到这一点吗?
final PackageManager pm = getPackageManager();
for (final PackageInfo pi : pm.getInstalledPackages(GET_PERMISSIONS)) {
try {
Context pcontext = createPackageContext(pi.packageName, 0);
if (ContextCompat.checkSelfPermission(pcontext, Manifest.permission.INSTALL_PACKAGES) == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Application able to install other apps: " + pi.packageName);
}
}catch (SecurityException|PackageManager.NameNotFoundException ex){
Log.d(TAG, "Exception " + ex);
}
}
发布于 2022-05-08 14:00:45
如果我正确理解你的问题,答案是“这是不允许的。”
第三方应用程序实际上无法安装应用程序(参见https://developer.android.com/reference/android/Manifest.permission#INSTALL_PACKAGES)。像Chrome这样的应用程序调用系统安装程序,它们本身不会获得安装权限,所以这就是为什么你看不到它们的原因。
也没有办法检查哪些其他应用程序已经启动了安装程序进程。这将是一个安全/隐私问题,因为这意味着任何应用程序都可以检索到用户在其设备上安装的其他应用的列表!每个进程都分配了自己的linux id,不能直接访问任何其他应用程序的数据(例如,它是沙箱化的),使用完全相同的机制,这实际上阻止了一个用户在标准linux系统上查询另一个用户的数据。
https://stackoverflow.com/questions/72162925
复制相似问题