6

由于某些技术原因,我无法使用Android File Picker将文件及其内容获取到我的应用程序中。这就是为什么我想出了一个在我自己的 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 File Picker的个人帐户中的应用程序。

所以问题是,我怎样才能获得相同的行为?如何从个人资料中查询意图活动?

4

1 回答 1

0

我对Android for Work不太了解,但在开发人员指南中提到

Android 系统可防止意图跨越配置文件,IT 管理员可以启用或禁用系统应用程序。

所以我的猜测是您无法从安装在工作Activity配置文件中的应用程序访问/启动个人配置文件,反之亦然。

但正如StackOverflow 帖子中提到的,如果您的应用程序是设备策略控制器,那么您可以实现DevicePolicyManager#clearCrossProfileIntentFilters(ComponentName admin)并允许意图跨配置文件。

另一个考虑因素是在配置文件之间共享文件,并且文档指出开发人员应该使用Content URIs而不是File URIs在配置文件之间共享路径时使用。您可以在此处阅读更多相关信息。

于 2018-02-20T04:08:13.720 回答