HTMLを操作するために使用するJavascriptの特定のフォルダにすべてのファイルをリストしたいとします。 私は表示するすべてのファイルを一覧表示するためにJavaメソッドを使用しています。Cordova/Android: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;
}
}
}
は、その後、私はその後、私はこの機能を使用して、私のJSでそれにアクセスしようとした私の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);
}
これを追加しました。
var getTestNames = function(){
return window.jsInterface.getFileNames("www/js/tests");
}
明らかに、動作しません。
EDIT:メソッドを呼び出すことができたことに気付きました。getFileNamesメソッドのログがログに記録されます。しかし、何らかの理由で、変数に正しく渡すことができませんでした。