Android 与其他应用共享uri
如何将我的应用程序中的Android 与其他应用共享uri,android,uri,android-contentprovider,Android,Uri,Android Contentprovider,如何将我的应用程序中的Uri与其他应用程序共享?它可能指向dropbox文件、google驱动器文件、本地文件或本地文档文件 我的应用程序有权读取Uri,现在我想与另一个应用程序共享,并将权限交给他人。我该怎么做 我真的需要自己编写内容提供商吗 我真的需要自己编写内容提供商吗 您无法强制第三方提供商(如Dropbos、Google Drive)授予对单独第三方应用程序的访问权限。这就好比我能够允许其他人访问你的银行账户,仅仅因为你允许我访问你的银行账户 整体共享机制是为您管理的内容或简单内容(如
Uri
与其他应用程序共享?它可能指向dropbox文件、google驱动器文件、本地文件
或本地文档文件
我的应用程序有权读取Uri
,现在我想与另一个应用程序共享,并将权限交给他人。我该怎么做
我真的需要自己编写内容提供商吗
我真的需要自己编写内容提供商吗
您无法强制第三方提供商(如Dropbos、Google Drive)授予对单独第三方应用程序的访问权限。这就好比我能够允许其他人访问你的银行账户,仅仅因为你允许我访问你的银行账户
整体共享机制是为您管理的内容或简单内容(如纯文本)而设计的
你的选择是:
ContentProvider
ContentProvider
,该代理读取内容并通过管道直接提供,而不是从包含内容副本的本地文件提供。对于ACTION\u SEND
,这可能会起作用,但请记住,管道备份流是不可查找的,因此某些类型的应用程序(如媒体播放器)不喜欢管道备份流ContentProvider
ContentProvider
,该代理读取内容并通过管道直接提供,而不是从包含内容副本的本地文件提供。对于ACTION\u SEND
,这可能会起作用,但请记住,管道备份流是不可查找的,因此某些类型的应用程序(如媒体播放器)不喜欢管道备份流我编写了一个gallery应用程序,我希望用户能够通过
android.intent.action.PICK
和android.intent.action.GET_CONTENT
在我的应用程序中选择任何图像或视频。这也适用于视频播放器,因此您建议制作数据的本地副本,并通过内容提供商访问本地数据?即使数据可能已经在sd卡的某个地方存在?@prom85:我建议您将应用程序限制在外部存储,或者将这些功能限制在外部存储。我不认为用户体验对您尝试处理其他来源的内容有很大帮助。如果我将此限制为仅外部存储,您建议如何共享uri?直接提交uri似乎不起作用…@prom85:我会尝试使用FileProvider
通过content
uri
提供文件,在setResult()使用的Intent
上添加FLAG\u GRANT\u READ\u uri\u PERMISSION
(或者FLAG\u GRANT\u WRITE\u uri\u PERMISSION
)
。我还没有尝试过实现ACTION\u PICK
或ACTION\u GET\u CONTENT
活动,所以这种方法可能是错误的,但这正是我要开始的地方。所以我必须使用自己的提供者,因为我不能直接重用媒体存储uri,因为我不能提供读取uri的权限?我会尝试…我写了一个画廊应用程序,我希望用户能够通过android.intent.action.PICK
和android.intent.action.GET_CONTENT
在我的应用程序中选择任何图像或视频。这也适用于视频播放器,因此您建议制作数据的本地副本,并通过内容提供商访问本地数据?即使数据可能已经在sd卡的某个地方存在?@prom85:我建议您将应用程序限制在外部存储,或者将这些功能限制在外部存储。我不认为用户体验对您尝试处理其他来源的内容有很大帮助。如果我将此限制为仅外部存储,您建议如何共享uri?直接提交uri似乎不起作用…@prom85:我会尝试使用FileProvider
通过content
uri
提供文件,在setResult()使用的Intent
上添加FLAG\u GRANT\u READ\u uri\u PERMISSION
(或者FLAG\u GRANT\u WRITE\u uri\u PERMISSION
)
。我还没有尝试过实现ACTION\u PICK
或ACTION\u GET\u CONTENT
活动,所以这种方法可能是错误的,但这正是我要开始的地方。所以我必须使用自己的提供者,因为我不能直接重用媒体存储uri,因为我不能提供读取uri的权限?我会试试。。。