Android的webview加载本地html、本apk内html和远程URL
转自:http://blog.csdn.net/windone0109/article/details/5380843
首先在layout文件夹下的xml中 加入Java代码
[java] view plain copy- <WebView
- android:id="@+id/wv1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
Java代码
[java] view plain copy- publicclassjsWebDemoextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- WebViewwView=(WebView)findViewById(R.id.wv1);
- ProxyBridgepBridge=newProxyBridge();
- wView.addJavascriptInterface(pBridge,"AliansBridge");
- WebSettingswSet=wView.getSettings();
- wSet.setJavaScriptEnabled(true);
- wView.loadUrl("file:///android_asset/index.html");
- }
- publicclassProxyBridge{
- publicintone(){
- return1;
- }
- }
- }
- publicclassjsWebDemoextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- WebViewwView=(WebView)findViewById(R.id.wv1);
- ProxyBridgepBridge=newProxyBridge();
- wView.addJavascriptInterface(pBridge,"AliansBridge");
- WebSettingswSet=wView.getSettings();
- wSet.setJavaScriptEnabled(true);
- wView.loadUrl("file:///android_asset/index.html");
- }
- publicclassProxyBridge{
- publicintone(){
- return1;
- }
- }
- }
wView.addJavascriptInterface(pBridge, "AliansBridge");
上句代码是实例化一个方法为的是在html中的js中调用,第二个参数则是 实例化方法的别名,如果要使用这个pBridge,则在js中使用的名字就是AliansBridge。
WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
上面两句就是允许使用js的意思
wView.loadUrl(file:///android_asset/index.html);
就是在asset下放入一个index.html文件,这个文件包含js的代码,注意路径是“///”,这个android_asset不是文件夹的名字是系统自动生成的,其实就是asset文件夹的系统路径。
index.html 内容如下
Java代码
[xhtml] view plain copy- <html><body>
- <divid="output">Testpage.</div>
- <inputtype="submit"value="changeto1"onclick="document.getElementById('output').innerHTML=AliansBridge.one()"/>
- </body></html>
- <html><body>
- <divid="output">Testpage.</div>
- <inputtype="submit"value="changeto1"onclick="document.getElementById('output').innerHTML=AliansBridge.one()"/>
- </body></html>
这里要注意 如果你只有一个方法需要被js调用
ProxyBridge pBridge = new ProxyBridge();
wView.addJavascriptInterface(pBridge, "AliansBridge");
如果你需要调用好多个方法呢 这里只要
wView.addJavascriptInterface(this, "AliansBridge");
把整个android程序所在的类 本身实例化传递就可以了
这里呢可以参看附件中的实例riademo
你如果想继续扩展可以参看
http://www.ophonesdn.com/article/show/115
2.上面是javascript调用android的方法,那么android也可以调用js的方法
Java代码
[java] view plain copy- publicclasswebJsDemoextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- privateWebViewmWebView;
- privateHandlermHandler=newHandler();
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mWebView=(WebView)findViewById(R.id.wv1);
- WebSettingswebSettings=mWebView.getSettings();
- webSettings.setSavePassword(false);
- webSettings.setSaveFormData(false);
- webSettings.setJavaScriptEnabled(true);
- webSettings.setSupportZoom(false);
- mWebView.setWebChromeClient(newMyWebChromeClient());
- mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
- mWebView.loadUrl("file:///android_asset/demo.html");
- }
- finalclassDemoJavaScriptInterface{
- DemoJavaScriptInterface(){
- }
- /**
- *ThisisnotcalledontheUIthread.Postarunnabletoinvoke
- *loadUrlontheUIthread.
- */
- publicvoidclickOnAndroid(){
- mHandler.post(newRunnable(){
- publicvoidrun(){
- mWebView.loadUrl("javascript:wave()");
- }
- });
- }
- }
- /**
- *Providesahookforcalling"alert"fromjavascript.Usefulfor
- *debuggingyourjavascript.
- */
- finalclassMyWebChromeClientextendsWebChromeClient{
- @Override
- publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,
- JsResultresult){
- //TODOAuto-generatedmethodstub
- Log.d("aa",message);
- Log.d("url",url);
- Log.d("result",""+result);
- result.confirm();
- returnsuper.onJsAlert(view,url,message,result);
- }
- }
- publicclasswebJsDemoextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- privateWebViewmWebView;
- privateHandlermHandler=newHandler();
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- mWebView=(WebView)findViewById(R.id.wv1);
- WebSettingswebSettings=mWebView.getSettings();
- webSettings.setSavePassword(false);
- webSettings.setSaveFormData(false);
- webSettings.setJavaScriptEnabled(true);
- webSettings.setSupportZoom(false);
- mWebView.setWebChromeClient(newMyWebChromeClient());
- mWebView.addJavascriptInterface(newDemoJavaScriptInterface(),"demo");
- mWebView.loadUrl("file:///android_asset/demo.html");
- }
- finalclassDemoJavaScriptInterface{
- DemoJavaScriptInterface(){
- }
- /**
- *ThisisnotcalledontheUIthread.Postarunnabletoinvoke
- *loadUrlontheUIthread.
- */
- publicvoidclickOnAndroid(){
- mHandler.post(newRunnable(){
- publicvoidrun(){
- mWebView.loadUrl("javascript:wave()");
- }
- });
- }
- }
- /**
- *Providesahookforcalling"alert"fromjavascript.Usefulfor
- *debuggingyourjavascript.
- */
- finalclassMyWebChromeClientextendsWebChromeClient{
- @Override
- publicbooleanonJsAlert(WebViewview,Stringurl,Stringmessage,
- JsResultresult){
- //TODOAuto-generatedmethodstub
- Log.d("aa",message);
- Log.d("url",url);
- Log.d("result",""+result);
- result.confirm();
- returnsuper.onJsAlert(view,url,message,result);
- }
- }
其中上面的代码 也提到了怎么在android中调试js mWebView.setWebChromeClient(new MyWebChromeClient());
上面的代码来源于别人的实例。
最后还要注意在这个实例中demo.html和两个image应该在同一个文件夹asset下
转自:http://blog.csdn.net/windone0109/article/details/5380941
首先在layout文件夹下的xml中 加入WebView控件
[xhtml] view plain copy- <WebView
- android:id="@+id/wv1"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- />
再在主文件中输入如下代码
[java] view plain copy
- publicclassTestDemoextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- WebViewwView=(WebView)findViewById(R.id.wv1);
- WebSettingswSet=wView.getSettings();
- wSet.setJavaScriptEnabled(true);
- //wView.loadUrl("file:///android_asset/index.html");
- //wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");
- wView.loadUrl("http://wap.baidu.com");
- }
- }
//wView.loadUrl("file:///android_asset/index.html");
-----打开本包内asset目录下的index.html文件
//wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");
-----打开本地sd卡内的index.html文件
//wView.loadUrl("http://wap.baidu.com");
-----打开指定URL的html文件
转自:http://blog.csdn.net/windone0109/article/details/5381170
加载asset中的文件字体以及使用
- AssetManagermanager=this.getAssets();
- try
- {
- manager.open("tahoma.ttf");
- TextViewtv=(TextView)this.findViewById(R.id.testMe);
- tv.setTypeface(Typeface.createFromAsset(manager,"tahoma.ttf"));
- tv.setTextSize(50f);
- tv.setText(ArabicUtilities.reshape("adsdadsالحمدللهasdad"));
- }catch(Exceptionex){
- //TODO
- }
更多相关文章
- android如何调用Web Service手机归属地练习
- Android(安卓)Intent列表
- Android代码混淆官方实现方法
- Android(安卓)Socket网络通信
- Android(安卓)转场动画
- android跳转到卸载页面
- Android使用SAX解析XML(4)
- Android(安卓)sqlite 数据库在java代码中的增删改查
- android访问mysql增删改查_Android(安卓)Studio连接数据库实现增