2016-07-27 5 views
0

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メソッドのログがログに記録されます。しかし、何らかの理由で、変数に正しく渡すことができませんでした。

答えて

1

多分単純なプラグインを書くだけです。私は自分でいくつか書いたが、彼らは働いていることを認めている。公式のコードバ文書のヒントを使用してください:https://cordova.apache.org/docs/en/latest/guide/platforms/android/plugin.html 私はそれが異なるアプローチだが、少なくともそれは働いていることを知っています。

関連する問題