查询不同配置文件的意图活动:Android for Work

osa*_*gan 5 android android-intent android-package-managers android-for-work

由于某些技术原因,我无法使用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);
Run Code Online (Sandbox Code Playgroud)

这很好,并列出了可以处理我的请求的应用程序.

但我工作的Android for Work,当我执行上面的代码,我只得到可用的应用程序列表中的工作资料,预计.

但是从上面的代码返回的结果之一是"切换到个人",其中列出了安装在Android文件选择器中的个人帐户中的应用程序.

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

riy*_*ali 0

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

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

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

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

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