Tit*_*tus 114 android uri assets filepath
我一直在尝试获取资产文件的URI路径.
uri = Uri.fromFile(new File("//assets/mydemo.txt"));
Run Code Online (Sandbox Code Playgroud)
当我检查文件是否存在时,我看到该文件不存在
File f = new File(filepath);
if (f.exists() == true) {
Log.e(TAG, "Valid :" + filepath);
} else {
Log.e(TAG, "InValid :" + filepath);
}
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我如何提及资产文件夹中存在的文件的绝对路径
Com*_*are 152
没有"资产文件夹中存在的文件的绝对路径".项目assets/
文件夹的内容打包在APK文件中.使用AssetManager
对象获取InputStream
资产.
编辑
要修复下面的一条评论,资产的URL语法是WebView
(注意:三个斜杠).
Rus*_*uss 70
正确的网址是:
file:///android_asset/RELATIVEPATH
Run Code Online (Sandbox Code Playgroud)
其中RELATIVEPATH是资源相对于assets文件夹的路径.
注意方案中的3 /.如果没有3,Web视图将不会加载我的任何资产.我尝试过2,因为(之前)CommonsWare评论它不会工作.然后我在github上查看了CommonsWare的源代码并发现了额外的正斜杠.
虽然这个测试只在1.6 Android模拟器上完成,但我怀疑它在真实设备或更高版本上有所不同.
编辑:CommonsWare更新了他的答案,以反映这一微小的变化.所以我编辑了这个,所以它目前的答案仍然有意义.
Shy*_*dda 16
最后,我找到了一种方法来从Kotlin 的这个答案中获取资产中存在的文件的路径。在这里,我们将资产文件复制到缓存并从该缓存文件中获取文件路径。
@Throws(IOException::class)
fun getFileFromAssets(context: Context, fileName: String): File = File(context.cacheDir, fileName)
.also {
if (!it.exists()) {
it.outputStream().use { cache ->
context.assets.open(fileName).use { inputStream ->
inputStream.copyTo(cache)
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
获取文件的路径,如:
val filePath = getFileFromAssets(context, "fileName.extension").absolutePath
Run Code Online (Sandbox Code Playgroud)
请确保您的资产文件夹放在正确的位置.
小智 8
请尝试此代码正常工作
Uri imageUri = Uri.fromFile(new File("//android_asset/luc.jpeg"));
/* 2) Create a new Intent */
Intent imageEditorIntent = new AdobeImageIntent.Builder(this)
.setData(imageUri)
.build();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
209036 次 |
最近记录: |