Cordova / Android:在Javascript中使用java方法列出资源中的文件

时间:2016-07-27 05:54:43

标签: javascript android cordova

我想在我用来操作HTML的Javascript中列出特定文件夹中的所有文件。 我正在使用java方法列出我要显示的所有文件。

这是班级。

public class JavaScriptInterface {

private Context context;

public JavaScriptInterface(Context current){
    this.context = current;
}

@JavascriptInterface
public List<String> getFileNames(String path){
    String [] files;

    try {
        files = context.getAssets().list(path);
        ArrayList<String> testName = new ArrayList<String>();
        for (String  file: files) {
            Log.d("File name: ", file);
            file = file.replace(".js", "");
            String[] fileName = file.split("_");
            testName.add(fileName[1]);
        }
        return testName;
    } catch (IOException e) {
        e.printStackTrace();
        return null;
    }
}

} 

然后我在mainActivity中添加了这个

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    super.init();

    setToUnstrictMode();
    WebView wV = (WebView)appView.getEngine().getView();
    wV.addJavascriptInterface(new JavaScriptInterface(this), "jsInterface");

    // Set by <content src="index.html" /> in config.xml
    wV.loadUrl(launchUrl);
}

然后我尝试使用此函数在我的JS中访问它。

var getTestNames = function(){
    return window.jsInterface.getFileNames("www/js/tests");
}

显然,它不起作用。

编辑:我注意到我能够调用该方法,getFileNames方法中的日志显示在我的日志中。但是,由于某些原因,我无法在变量中正确传递它。

1 个答案:

答案 0 :(得分:1)

也许只是写一个简单的插件。我自己写了一些我可以批准他们正在工作。使用官方cordova文档中的提示:https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html 我知道这是不同的方法,但至少它是一个有效的方法。