Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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 如何正确地将本地文件中的Uri放入意图_Android_Android Intent_Uri_Drawable - Fatal编程技术网

Android 如何正确地将本地文件中的Uri放入意图

Android 如何正确地将本地文件中的Uri放入意图,android,android-intent,uri,drawable,Android,Android Intent,Uri,Drawable,我希望将本地图像文件(位于res/drawable)转换为Uri,以便将其放入启动活动的意图中 这是我到目前为止得到的: Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setType("image/*"); Uri uri = Uri.fromFile(new File("/res/drawable/photo.jpg"));

我希望将本地图像文件(位于res/drawable)转换为Uri,以便将其放入启动活动的意图中

这是我到目前为止得到的:

    Intent sendIntent = new Intent();
    sendIntent.setAction(Intent.ACTION_SEND);
    sendIntent.setType("image/*");

    Uri uri = Uri.fromFile(new File("/res/drawable/photo.jpg"));
    sendIntent.putExtra(Intent.EXTRA_STREAM, uri);

    startActivity(Intent.createChooser(sendIntent, getResources().getText(R.string.share)));
然后,接收此意图的活动在ImageView中显示图像。大概是这样的:

    Uri imageUri = (Uri) getIntent().getParcelableExtra(Intent.EXTRA_STREAM);
    Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
    ImageView myImage = (ImageView) findViewById(R.id.imageView_receive);
    myImage.setImageBitmap(bitmap); 
但是它没有显示图像,而是抛出一个java.io.FileNotFoundException

java.io.FileNotFoundException: No resource found for: android.resource://com.my.package/drawable/photo.jpg
我搜索并尝试了其他方法通过我的文件获取Uri:

    Uri uri = Uri.parse("file:///res/drawable/photo.jpg");
    Uri uri = Uri.parse("android.resource://com.my.package/drawable/photo.jpg"); 
但是他们都为我返回了相同的错误


为什么无法识别我的图像?

您应该为应用程序创建ContentProvider,这样可以共享资源

试试这个lib,它的效果很棒。

您应该为应用程序创建ContentProvider,这将允许您共享资源

试试这个lib,它的效果很棒。

我希望将本地图像文件(位于res/drawable)转换为Uri,以便将其放入启动活动的意图中

资源是开发人员计算机上的文件。它们不是设备上的文件

这就是我现在所得到的

这是行不通的,因为在文件系统根目录下没有带
/res
目录的Android设备,而且您的可绘制资源也不会在那里

为什么我的形象不被认可

您的第三个(
android.resource
scheme)是最接近的。去掉
.jpg
扩展名

然而,许多第三方应用程序不会承认这一方案。而且,如果您正在执行用于处理此请求的活动,我不知道您为什么要使用
ACTION\u SEND
。如果您的目标是仅在自己的应用程序中工作,请跳过
Uri
,将可绘制资源ID(
R.drawable.photo
)打包为
int
额外,并让您的其他活动更自然地使用该资源ID(例如
ImageView
上的
setImageResource()

我希望将本地图像文件(位于res/drawable)转换为Uri,以便将其放入启动活动的意图中

资源是开发人员计算机上的文件。它们不是设备上的文件

这就是我现在所得到的

这是行不通的,因为在文件系统根目录下没有带
/res
目录的Android设备,而且您的可绘制资源也不会在那里

为什么我的形象不被认可

您的第三个(
android.resource
scheme)是最接近的。去掉
.jpg
扩展名


然而,许多第三方应用程序不会承认这一方案。而且,如果您正在执行用于处理此请求的活动,我不知道您为什么要使用
ACTION\u SEND
。如果您的目标是仅在自己的应用程序中工作,请跳过
Uri
,将可绘制资源ID(
R.drawable.photo
)打包为
int
额外,并让您的其他活动更自然地使用该资源ID(例如
ImageView
上的
setImageResource()
).

也许你可以试试这里的东西检查这个答案:也许你可以试试这里的东西检查这个答案:谢谢你的提示。我去掉了扩展名.jpg,它找到了我的图像!我实施了处理它的活动,只是为了实践我现在正在学习的概念。不管怎样,这真的很有帮助。谢谢你的提示。我去掉了扩展名.jpg,它找到了我的图像!我实施了处理它的活动,只是为了实践我现在正在学习的概念。不管怎样,这真的很有帮助。