我想在我用来操作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方法中的日志显示在我的日志中。但是,由于某些原因,我无法在变量中正确传递它。
答案 0 :(得分:1)
也许只是写一个简单的插件。我自己写了一些我可以批准他们正在工作。使用官方cordova文档中的提示:https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html 我知道这是不同的方法,但至少它是一个有效的方法。