在
Android Studio 1.0.1,API 21上开发.以下是文件夹结构 –
它本质上是一个基于AngularJS的应用程序,我想包装在webview容器中并在Android上运行.
我的Android代码是 –
WebView myWebView = (WebView) findViewById(R.id.webview); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); myWebView.setWebChromeClient(new WebChromeClient()); String filePath = "file:///android_asset/www/index.html"; myWebView.loadUrl(filePath);
html中的引用都是相对的 –
<script src="lib/jquery.min.js"></script> <script src="lib/angular.min.js"></script> <script src="lib/angular-route.min.js"></script> <script src="lib/bootstrap.min.js"></script>
但有趣的是,我搜索了大多数地方,而且我不确定我哪里出错了.我的推荐根本不起作用!所以我无法访问我的lib文件,我的脚本,我的CSS.
此外,如果我在webview中运行外部角度网页,使用相同的Java代码,它运行完美!
任何帮助表示赞赏.
注意:请不要建议使用Cordova / PhoneGap.这是一个原生的项目要求(我坦率地不明白为什么,但我只是一个没有发言权的开发人员).
旁注:我在iOS webview上遇到了同样的问题.参考不起作用!
UPDATE
试过以下事情:
尝试loadDataWithBaseURL(),不起作用.
尝试了路径的所有可能方案.没有任何效果.
解决方法
我设法通过以下方式做了类似的事情:
WebView webView = (WebView) findViewById(R.id.webview); WebSettings webSettings = webView.getSettings(); webSettings.setJavaScriptEnabled(true); webSettings.setDomStorageEnabled(true); webView.setWebChromeClient(new WebChromeClient()); try { String html = readAssetFile("www/index.html"); webView.loadDataWithBaseURL("file:///android_asset/www/",html,"text/html","UTF-8",null); } catch (IOException e) { }
‘readAssetFile’在哪里:
private String readAssetFile(String fileName) throws IOException { StringBuilder buffer = new StringBuilder(); InputStream fileInputStream = getAssets().open(fileName); BufferedReader bufferReader = new BufferedReader(new InputStreamReader(fileInputStream,"UTF-8")); String str; while ((str=bufferReader.readLine()) != null) { buffer.append(str); } fileInputStream.close(); return buffer.toString(); }
此外,我的页面很简单 – 只是为了测试图像,angularjs lib和css样式表:
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="css/mystyle.css"> <script src="libs/angular.min.js"></script> </head> <body> <img src="images/IMG_7765.JPG" alt="De nada" width="200" height="300"> <div ng-app=""> <p>Input something in the input Box:</p> <p>Name: <input type="text" ng-model="name" value="John"></p> <p ng-bind="name"></p> </div> </body> </html>
另外,我的文件结构如下
希望能帮助到你 :)