Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在另一个配置文件中查询ContentProvider?_Android_Android Intent_Android For Work - Fatal编程技术网

Android 如何在另一个配置文件中查询ContentProvider?

Android 如何在另一个配置文件中查询ContentProvider?,android,android-intent,android-for-work,Android,Android Intent,Android For Work,我正在尝试确定如何访问另一个配置文件中存在的ContentProvider 我在托管配置文件中有一个应用程序/服务,它实现了一个内容提供商。 我在主配置文件中有第二个应用程序/服务,我希望它能够访问托管应用程序的内容提供商。i、 e.横向轮廓 现在,我正在使用android testdpc的一个修改版本来原型化实现。我已将ContentProvider添加到testdpc源代码中。我希望能够从主配置文件中运行的另一个应用程序访问托管配置文件中的此ContentProvider 我知道,使用Dev

我正在尝试确定如何访问另一个配置文件中存在的ContentProvider

我在托管配置文件中有一个应用程序/服务,它实现了一个内容提供商。 我在主配置文件中有第二个应用程序/服务,我希望它能够访问托管应用程序的内容提供商。i、 e.横向轮廓

现在,我正在使用android testdpc的一个修改版本来原型化实现。我已将ContentProvider添加到testdpc源代码中。我希望能够从主配置文件中运行的另一个应用程序访问托管配置文件中的此ContentProvider

我知道,使用
DevicePolicyManager.AddCrossProfileIntentFilter()
我可以允许在托管配置文件中发送的意图也在父级中解析,反之亦然。文档说明仅支持活动意图。使用
AddCrossProfileIntentFilter()
我已经成功地通过使用intent和
startActivity()
在两个应用程序之间传递数据。 但是,我不想使用活动,因为在Q和更高版本中,我无法从后台应用程序/服务启动活动


如果两个应用程序存在于同一个配置文件中,我访问ContentProvider没有问题,但我无法确定如何跨配置文件执行此操作。

我最终实现了此操作

为此,我需要使用内容提供商中的活动来授予另一个应用程序权限。非内容提供商应用程序必须使用startActivityForResult()向内容提供商应用程序中的活动发送意图,请求访问内容提供商的权限

此活动返回一个intent,使用intent.setData()设置内容提供程序URI,使用intent.setFlags()设置权限。在我的例子中,我包括Intent.FLAG\u GRANT\u PERSISTABLE\u URI\u权限,以使权限持久化。 非内容提供程序应用程序在onActivityResult()中获取结果意图,从结果中获取URI,然后调用ContentResolver.takePersistableUriPermission()

为了在跨配置文件中实现这一点,我使用DevicePolicyManager.addCrossProfileIntentFilter()允许权限请求意图跨配置文件。当跨越配置文件时,我注意到结果意图中返回的内容提供者URI包括用户id。即。“content://10@使用此URI进行查询将跨配置文件


这有助于

我有一个类似的问题。不幸的是,你的答案没有帮助。请你详细描述一下你是如何解决的。发布一些代码(清单中的内容提供商,如何配置跨配置文件意图过滤器,如何获取内容uri的用户id等)。这将非常有帮助。