如何获得assets目录下文件的uri

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何获得assets目录下文件的uri相关的知识,希望对你有一定的参考价值。

[mw_shl_code=java,true]Intent intent=new Intent(Intent.ACTION_SEND); intent.setType("image/png"); File file = new File("android_assets/"+ path+"/" +fileName[arg2]); System.out.println("file--->"+"android_assets/"+ path+"/" +fileName[arg2]); Uri uri = Uri.fromFile(file); System.out.println("Uri--->"+uri); intent.putExtra(Intent.EXTRA_STREAM,uri); intent.putExtra(Intent.EXTRA_SUBJECT, getString(R.string.app_name));[/mw_shl_code]不知道哪儿错了,始终无法分享图片。如果从sdcard里面就没问题,这段代码在另外一个项目中也是这么用。但是现在图片放在assets目录下的,获取的uri打印出来是 Uri--->file:///android_assets/face/02.png

你获取的uri没有问题。但assets目录下的图片不能使用这种方法读取。你得把它先复制到sdcard中,然后从sdcard中传递这个图片至于原因嘛:assets目录里面的资源文件还在应用程序的apk文件中,一个压缩文件中。所以不能这样读 参考技术A android_assets/face/02.png 参考技术B 顶,不错的帖子,支持楼主

Androidproject文件下assets目录与res目录的差别

1. assets : 不会在R.java文件下生成对应的标记,assets目录能够自己创建目录,必须使用AssetsManager类进行訪问,存放到这里的资源在执行打包的时候都会打入程序安装包中,

**2. res:会在R.java文件下生成标记,这里的资源会在执行打包操作的时候推断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。
res/raw和assets目录来存放不须要系统编译成二进制的文件,比如字体文件等
**

**在res目录下还能够定义一下目录:
res/anim : 这里存放的是动画资源。
res/xml : 能够在Activity中使用getResource().getXML()读取这里的资源文件
res/raw : 该目录下的文件能够直接拷贝到设备上,不能有子目录。编译软件时。这里的数据不须要编译。直接增加到程序安装包中。用法是getResource().OpenRawResources(ID),当中參数ID的形式是R.raw.XXX.
**





以上是关于如何获得assets目录下文件的uri的主要内容,如果未能解决你的问题,请参考以下文章

如何获得具有 Uri 的文件的 mime 类型?

Android读取assets目录下的视屏资源

res/raw与assets目录的区别

Android问题之res/raw和assets的区别及文件大小限制

如何获取Assets的路径

怎样获得android上的字体列表