由于某些技术原因,我无法使用 Android File Picker 将文件及其内容放入我的应用程序中。这就是为什么我想出了一个解决方案来查询 Intent 并在我自己的 UI 上处理结果。
下面是我如何使用 Intent.ACTION_GET_CONTENT
获取应用程序列表
/* Create a new Intent to Read a File */
Intent documentIntent = new Intent(Intent.ACTION_GET_CONTENT);
documentIntent.setType((action == ACTION_SELECT_FILE) ? "*/*" : "image/*");
/* Query for Applications to see which are available */
List<ResolveInfo> appList = getActivity().getPackageManager().queryIntentActivities(documentIntent, PackageManager.MATCH_DEFAULT_ONLY);
这工作正常并列出了可以处理我的请求的应用程序。
但我正在使用 Android for Work,当我执行上面的代码时,我只获得了可用于 Work Profile 的应用程序列表,这是预期的。
但是从上面的代码返回的结果之一是“切换到个人”,它列出了安装在Android 文件选择器个人帐户中的应用程序.
所以问题是,我怎样才能获得相同的行为?如何从个人资料中查询意向 Activity ?
最佳答案
我不太了解Android for Work , 但它在 Developer Guide 中提到那个
The Android system prevents intents from crossing profiles and IT administrators can enable or disable system apps.
所以我的猜测是,您无法从安装在工作配置文件中的应用程序访问/启动个人配置文件中的 Activity
,反之亦然-反之亦然。
但如this StackOverflow post中所述,如果您的应用程序是 Device Policy Controller ,那么您可以实现DevicePolicyManager#clearCrossProfileIntentFilters(ComponentName admin)
并允许 Intent 跨配置文件。
另一个考虑因素是跨配置文件共享文件,文档指出开发人员在共享时应使用Content URIs
而不是File URIs
配置文件之间的路径。您可以阅读更多相关信息 here .
关于android - 不同配置文件的查询 Intent Activity : Android for Work,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48714882/