使用WebView播视频,整了个优酷的开发页面,但装上android,没反应。不过,在使用webView时,倒是对webView与html中的javascript的调用方式学习了一下,还是使用的网上的经典案例。
为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的assets目录中找内容。如上面的"file:///android_asset/demo.html"
Java代码:
public class WebViewDemo extends Activity {
private WebView mWebView;
private Handler mHandler = new Handler();
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.webviewdemo);
mWebView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
mWebView.loadUrl("javascript:wave()");
}
});
}
}, "demo");
mWebView.loadUrl("file:///android_asset/demo.html");
}
}
addJavascriptInterface(Object obj,String interfaceName)方法,该方法将一个java对象绑定到一个javas
HTML(javascript)的代码:
<html>
<script language="javascript">
function wave() {
document.getElementById("droid").src="android_waving.png";
}
</script>
<body>
<a onClick="window.demo.clickOnAndroid()">
<img id="droid" src="android_normal.png"/><br>
Click me!
</a>
</body>
</html>
这样在javascript中就可以调用java对象的clickOnAndroid()方法了,wave()方法是java中调用javascript的例子。
对于webview加载网页有三种方式:
//打开本包内asset目录下的index.html文件
wv.loadUrl(" file:///android_asset/testvideo.html");
//打开本地sd卡内的index.html文件
wv.loadUrl("content://com.android.htmlfileprovider/sdcard/testvideo.html");
//打开指定URL的html文件
wv.loadUrl("http://v.youku.com/v_show/id_XMzM3NTg0ODA4.html");
为了让WebView从apk文件中加载assets,Android SDK提供了一个schema,前缀为"file:///android_asset/"。WebView遇到这样的schema,就去当前包中的assets目录中找内容。如上面的"file:///android_asset/demo.html"
addJavascriptInterface方法中要绑定的Java对象及方法要运行另外的线程中,不能运行在构造他的线程中,这也是使用Handler的目的
如果要用HTML5来开发应用,统一Android与 Iphone的应用,那必须要在关键环节让原生代码与HTML5交互,与flex一样,都是依靠javascript。