我尝试为这个交互式地图制作一个简单的webview应用程序:http://gta5online.com/map/interactive>地图下方还有一个全屏链接。
现在,我创建了一个资产文件夹,并包含了"交互式"文件夹,其中包含所有文件、图标、地图块和html文档
我想将html文档从那里加载到一个活动中,作为一个webview。所以它是一个本地文件。我希望应用程序能处理它,而不是默认的浏览器。
以下是我现在所做的:
我创建了一个新项目,并将这些代码添加到activityhome.xml文件中:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
WebView myWebView = (WebView) findViewById(R.id.webview);
myWebView.loadUrl("file:///android_asset/interactive/map.html");
/>
然后我添加了这段代码,以允许在manifest中访问互联网,即使它是我想要加载的本地html文档(供以后使用):
<uses-permission android:name="android.permission.INTERNET"/>
正如您所看到的,我还在第一个代码块中启用了javascript。
我应该也在home.java文件中放入一些代码吗?
在YT教程中,我看到他在java文件中使用了这样的东西:
#in mainactivity.java
setContentView(R.layout.activity_main);
String url ="file:///android_asset/interactive/map.html";
WebView view=(WebView) this.findViewById(R.id.webView);
view.getSettings() .setJavaScriptEnabled(true);
view.loadUrl(url);
有人能通过解释我做错了什么以及如何完成这个应用程序的简单步骤来帮助noob实现这一点吗?。我相信这对你们来说很简单,即使对我来说很难。
在Android中要非常小心,永远不能将Java代码放入XML代码中。
此代码:
WebView myWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = myWebView.getSettings();
myWebView.loadUrl("file:///android_asset/interactive/map.html");
webSettings.setJavaScriptEnabled(true);
在您的activity_home.xml文件中必须只有以下内容:
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
这是由于违反同源策略,您需要使用loaddatawithurl
读取
- http://developer.android.com/reference/android/webkit/WebView.html
和
- https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy