【问题标题】:Custom cordova plugin - Get path to file自定义cordova插件 - 获取文件路径
【发布时间】:2017-10-18 02:07:29
【问题描述】:

我创建了一个适用于 Android 的 Cordova 插件,并将文件放在 src 文件夹中:

插件.xml

<source-file src="myfile.ext" target-dir="src/com/example"/>

我还可以看到(在 Android Studio 中)该文件已成功添加到 src 文件夹中:

android
 |-- /src
      |-- com
           |-- example
                |-- myfile.ext
                |-- MyPlugin.java

现在我需要能够在 MyPlugin.java 中获取此文件的路径,但我不知道如何执行此操作。有人可以帮我吗?谢谢!

【问题讨论】:

    标签: android cordova path cordova-plugins filepath


    【解决方案1】:

    在您更新问题之前,这是正确的 - 您应该将资产文件复制到“assets”而不是“src”:

    <source-file src="myfile.ext" target-dir="assets"/>
    

    然后你可以通过AssetManager引用它:

    AssetManager assetManager = this.cordova.getActivity().getAssets();
    InputStream inputStream = assetManager.open("myfile.ext");
    

    就文件的“路径”而言,资产在 APK 中的存储方式与您的 Android 项目的构建方式不同,因此文件的“路径”将是 file:///android_asset/myfile.ext,但您实际上很可能不会从MyPlugin.java 引用它。

    【讨论】:

    • 感谢您的回复@DaveAlden,我真的需要获取“路径”,因为我需要它作为 API 调用的输入。无论如何,不​​幸的是它不起作用..当我尝试new File("file:///android_asset/myfile.ext").exists()时,它返回false。同样执行new File("file:///android_asset/").exists() 会返回false。知道为什么吗? (我将文件添加回assets文件夹下)
    • File file = new File("//android_asset/myfile.ext"); Uri uri = Uri.fromFile(file);
    • 仍然没有运气,urifile:///android_asset/myfile.ext 完全相同,并且在尝试执行new File(uri.toString).exists() 时将返回false。我创建new File() 并检查它是否存在的原因是因为 API 也会这样做。其他建议?我编辑原始帖子的原因可能是将文件放在与 java 文件相同的文件夹 (src) 中,这样可能更容易获取路径。如果这可能/更容易,路径会是什么?
    • 您需要检查您使用的 API 期望文件的位置以及输入路径的语法。在我的插件中,我使用AssetManager 来访问所有资产文件。资产未从 APK 解压,因此无法通过 File API 获得。
    • 就是这个 API,github.com/rmtheis/tess-two/blob/master/tess-two/src/com/…,当尝试调用 init 方法(第 299 行)时,它返回 "Data path does not exist!"。我不认为它需要一个特定的位置,只要它存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多