Android-在没有写入外部存储权限的情况下将文件转换为内容URI?

Android-在没有写入外部存储权限的情况下将文件转换为内容URI?,android,android-contentresolver,Android,Android Contentresolver,我目前使用此方法有效地将图像文件转换为内容uri protected static Uri convertFileToContentUri(Context context, File file) throws Exception { ContentResolver cr = context.getContentResolver(); String imagePath = file.getAbsolutePath(); String imageName = null;

我目前使用此方法有效地将图像文件转换为内容uri

protected static Uri convertFileToContentUri(Context context, File file) throws Exception {

    ContentResolver cr = context.getContentResolver();
    String imagePath = file.getAbsolutePath();
    String imageName = null;
    String imageDescription = null;
    String uriString = MediaStore.Images.Media.insertImage(cr, imagePath, imageName, imageDescription);
    return Uri.parse(uriString); }
…但问题是它需要android.permission.WRITE\u EXTERNAL\u STORAGE权限

是否有任何方法可以在不需要该权限的情况下执行相同的转换?

不“将图像文件转换为内容uri”。它在
MediaStore
ContentProvider
中插入了一个条目,恰好返回了一个
Uri
。然而,现在任何东西都可以获得该内容。这类似于将你的个人联系信息发布在Pastebin上,因为你觉得你需要一个URL,然后想知道为什么你突然接到一大堆非常奇怪的电话。URL是发布个人联系信息的副作用;
Uri
是发布图像的副作用


如果您想通过
ContentProvider
提供文件,请将
ContentProvider
添加到您的应用程序中。根据文件所在的位置,您可能可以使用Android支持包(
Support-v4
Support-v13
)提供的支持。或者,通过覆盖
openFile()

谢谢你,你可以使用你自己的流媒体
ContentProvider
,但是你没有看到我有效地使用了
这个词吗?
@ban geoengineering:实际上,我用过。这不会改变您的方法中问题的特征,也不会改变将
内容:
Uri
解析为应用程序内部存储中某个内容所需的解决方案。根据定义,唯一可以访问应用程序内部存储的是应用程序,根据定义,唯一可以处理
内容:
Uri
的是
ContentProvider
,因此您需要在应用程序中实现
ContentProvider
。好的,谢谢。我同意ContentProvider是理想的解决方案。我已经实现了一个,它可以保存和检索图像数据以显示在UI上,但是当我使用它通过google plus共享图像时,会出现一些问题(这就是我创建此问题的原因)。如果你能帮助解决这个基本问题,我的问题(关于赏金)如下: