是否有为所有用户卸载应用程序的意图?
Is there an intent for uninstallation of an app for ALL users?
背景
要求卸载应用程序的正常方法是使用 "ACTION_DELETE" 意图:
startActivity(new Intent(Intent.ACTION_DELETE, Uri.parse("package:" +packageName)));
问题
从某些 Android 版本(不记得是哪个版本)开始,可以为同一设备上的多个用户安装应用程序。
这意味着有一种卸载应用程序的新方法,可以为所有用户卸载它(图片来自 Lollipop - Android 5.0):
问题
我在文档中进行了搜索,但找不到这些问题的答案:
有什么方法可以通过意图来执行这个操作吗?也许可以添加到我上面写的意图中?
ADB 是否有为所有用户删除应用程序的新命令?
有没有办法检查是否为多个用户安装了一个应用程序?
Is there any way to perform this operation via an intent? Maybe
something to add to the intent I've written above ?
是的,但要小心。可以传入Intent.EXTRA_UNINSTALL_ALL_USERS
。
但是,它被隐藏了,因为它:
should not be part of normal application flow
如果您觉得有必要并且不同意 Google 的观点,您也可以传入常量。举个例子,下面是 false
和 true
之间的区别,常量
final Uri packageURI = Uri.parse("package:" + "some.package.name");
final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
uninstallIntent.putExtra("android.intent.extra.UNINSTALL_ALL_USERS", false or true);
startActivity(uninstallIntent);
结果
Does ADB have a new command to remove an app for all users?
不,命令保持不变。
`adb uninstall 'some.package.name'`
这将为所有用户删除该应用程序。我不知道指定特定用户的方法。
Is there a way to check if an app is installed for multiple users?
不,据我所知没有。事实上,当设置应用程序决定在选项菜单中放置 "Uninstall for all users" 选项时,它基本上是根据是否有多个用户周期来决定的,而不是当前用户和另一个用户都安装了应用程序.
更不用说,大部分方法在UserManager
that you'd need to even tell if there are multiple users on the device, like UserManager.getUserCount
, require the MANAGE_USERS
权限里面是系统API隐藏的。所以,我什至不确定为什么这是 public 方法。
此外,您可以像我一样通过在您的设备上创建一个虚拟用户来轻松测试您的所有问题。您甚至不需要登录 Google 帐户。
背景
要求卸载应用程序的正常方法是使用 "ACTION_DELETE" 意图:
startActivity(new Intent(Intent.ACTION_DELETE, Uri.parse("package:" +packageName)));
问题
从某些 Android 版本(不记得是哪个版本)开始,可以为同一设备上的多个用户安装应用程序。
这意味着有一种卸载应用程序的新方法,可以为所有用户卸载它(图片来自 Lollipop - Android 5.0):
问题
我在文档中进行了搜索,但找不到这些问题的答案:
有什么方法可以通过意图来执行这个操作吗?也许可以添加到我上面写的意图中?
ADB 是否有为所有用户删除应用程序的新命令?
有没有办法检查是否为多个用户安装了一个应用程序?
Is there any way to perform this operation via an intent? Maybe something to add to the intent I've written above ?
是的,但要小心。可以传入Intent.EXTRA_UNINSTALL_ALL_USERS
。
但是,它被隐藏了,因为它:
should not be part of normal application flow
如果您觉得有必要并且不同意 Google 的观点,您也可以传入常量。举个例子,下面是 false
和 true
之间的区别,常量
final Uri packageURI = Uri.parse("package:" + "some.package.name");
final Intent uninstallIntent = new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageURI);
uninstallIntent.putExtra("android.intent.extra.UNINSTALL_ALL_USERS", false or true);
startActivity(uninstallIntent);
结果
Does ADB have a new command to remove an app for all users?
不,命令保持不变。
`adb uninstall 'some.package.name'`
这将为所有用户删除该应用程序。我不知道指定特定用户的方法。
Is there a way to check if an app is installed for multiple users?
不,据我所知没有。事实上,当设置应用程序决定在选项菜单中放置 "Uninstall for all users" 选项时,它基本上是根据是否有多个用户周期来决定的,而不是当前用户和另一个用户都安装了应用程序.
更不用说,大部分方法在UserManager
that you'd need to even tell if there are multiple users on the device, like UserManager.getUserCount
, require the MANAGE_USERS
权限里面是系统API隐藏的。所以,我什至不确定为什么这是 public 方法。
此外,您可以像我一样通过在您的设备上创建一个虚拟用户来轻松测试您的所有问题。您甚至不需要登录 Google 帐户。