❶ android 在WebView中通过javascript获取网页源码,并在TextView或者在EditText中显示问题
webview js之间的交互,项目中马上用到。
JS调用java代码效果图
index.html代码:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd";><html><head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <script type="text/javascript" language="javascript"> var share = JSON.stringify({"title": "sinodata",
"desc": "ios",
"shareUrl": "http://www.sinodata.com.cn"
});
function sendInfoToJava(){
window.AndroidWebView.showInfoFromJs(share);
}
<!--在android代码中调用此方法-->
function showInfoFromJava(msg){
alert("showInfoFromJava:"+msg);
} </script></head><body la><div id='b'> <input onclick="sendInfoToJava()" type="button" value="sendInfoToJava"/></div></body></html>
布局代码:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context="com.example.chenjifang.webview.MainActivity"> <Button android:id="@+id/test_btn" android:text="代码中调用web js代码传递参数" android:layout_width="match_parent" android:layout_height="wrap_content" /> <EditText android:id="@+id/test_edt" android:layout_width="match_parent" android:layout_height="wrap_content" /><WebView android:id="@+id/test_webview" android:layout_width="match_parent" android:layout_height="400dp"></WebView></LinearLayout>
java代码:
public class MainActivity extends AppCompatActivity {private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = (WebView) findViewById(R.id.test_webview); //设置WebView支持JavaScript mWebView.getSettings().setJavaScriptEnabled(true); mWebView.loadUrl("file:///android_asset/index.html"); mWebView.addJavascriptInterface(new JsInterface(this), "AndroidWebView"); //添加客户端支持 mWebView.setWebChromeClient(new WebChromeClient()); findViewById(R.id.test_btn).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
sendInfoToJs(); }
}); } private class JsInterface { private Context mContext; public JsInterface(Context context) { this.mContext = context; } //在js中调用window.AndroidWebView.showInfoFromJs(name),便会触发此方法。 @JavascriptInterface public void showInfoFromJs(String share) {
Toast.makeText(mContext, share, Toast.LENGTH_SHORT).show(); }
} //在java中调用js代码 public void sendInfoToJs() {
String msg = ((EditText)findViewById(R.id.test_edt)).getText().toString(); //调用js中的函数:showInfoFromJava(msg) mWebView.loadUrl("javascript:showInfoFromJava('" + msg + "')"); }
总结下,java代码中要设置webview对javascript的支持,addJavascriptInterface(new JsInterface(this), "AndroidWebView");//这句代码中的第二个参数是在js访问方法的地址。
window.AndroidWebView.showInfoFromJs(share);
❷ android 怎样封装webview代码重用
使用场景:
1.)添加权限
<uses-permission android:name="android.permission.INTERNET" />
2.)布局文件
<WebView
android:id="@+id/webView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
3.)数据加载
加载本地资源
webView.loadUrl("file:///android_asset/example.html");
加载网络资源
webView.loadUrl("www.xxx.com/index.html");
添加请求头信息
❸ 安卓如何使用WebView组件加载HTML代码
1)修改新建项目的resIayout目录下的布局文件main.xml,将默认添加的TextView组件删除,然后添加一个WebView组件
2)在MainActivity的onCreate()方法中,首先获取布局管理器中添加的Web View组件,然后创建一个字符串构建器,将要显示的HTML代码放置在该构建器中,最后应用IoadDataWithBaseURLO方法加载构建器中的HTML代码
android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。
可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。
不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。
即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:
1,页面head添加
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
2,设置字体也按480基准缩放。
下面是代码:
Java代码
privatevoidsetZoom(WebSettingswebSettings){intscreenDensity=getResources().getDisplayMetrics().densityDpi;Stringzd="FAR";switch(screenDensity){caseDisplayMetrics.DENSITY_LOW:zd="CLOSE";break;caseDisplayMetrics.DENSITY_MEDIUM:zd="MEDIUM";break;}Class<?>zoomDensityClass=null;Enum<?>zoomDensity=null;try{if(zoomDensityClass==null){zoomDensityClass=Class.forName("android.webkit.WebSettings$ZoomDensity");}if(zoomDensity==null){zoomDensity=(Enum<?>)Enum.valueOf((Class)zoomDensityClass,zd);}Methodmethod=WebSettings.class.getDeclaredMethod("setDefaultZoom",newClass<?>[]{zoomDensityClass});if(method!=null){method.invoke(webSettings,zoomDensity);}method=WebSettings.class.getDeclaredMethod("setTextZoom",newClass<?>[]{int.class});if(method!=null){method.invoke(webSettings,100*getWindowManager().getDefaultDisplay().getWidth()/480);}}catch(Exceptione){Log.e(TAG,e.getMessage());return;}}
Android的webview加载本地html、本apk内html和远程URL
Android的webview加载本地html、本apk内html和远程URL
android客户端常会调用到html页面,给webview页面适配android凌乱的设备带来很大的困难。
可以找到的方法是通过ZoomDensity.setDefaultZoom根据分辨率480宽度为基准缩放。
不过ZoomDensity.setDefaultZoom在2.0以下的平台是无法调用的,需要自己反射调用。
即使是ZoomDensity.setDefaultZoom设置了缩放,但还是会在很多设备无效。经过摸索还需做一些修改:
1,页面head添加
<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
2,设置字体也按480基准缩放。
下面是代码:
Java代码
privatevoidsetZoom(WebSettingswebSettings){intscreenDensity=getResources().getDisplayMetrics().densityDpi;Stringzd="FAR";switch(screenDensity){caseDisplayMetrics.DENSITY_LOW:zd="CLOSE";break;caseDisplayMetrics.DENSITY_MEDIUM:zd="MEDIUM";break;}Class<?>zoomDensityClass=null;Enum<?>zoomDensity=null;try{if(zoomDensityClass==null){zoomDensityClass=Class.forName("android.webkit.WebSettings$ZoomDensity");}if(zoomDensity==null){zoomDensity=(Enum<?>)Enum.valueOf((Class)zoomDensityClass,zd);}Methodmethod=WebSettings.class.getDeclaredMethod("setDefaultZoom",newClass<?>[]{zoomDensityClass});if(method!=null){method.invoke(webSettings,zoomDensity);}method=WebSettings.class.getDeclaredMethod("setTextZoom",newClass<?>[]{int.class});if(method!=null){method.invoke(webSettings,100*getWindowManager().getDefaultDisplay().getWidth()/480);}}catch(Exceptione){Log.e(TAG,e.getMessage());return;}}
❹ 安卓webview怎么webview的代码打印出来
1.android中利用webview调用网页上的js代码。
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true,,然后通过loadUrl就可以直接进行调用,如下所示:
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.loadUrl("javascript:test()");
2. 网页上调用android中java代码的方法
在网页中调用java代码,需要在webview控件中添加javascriptInterface。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid() {
mHandler.post(new Runnable() {
public void run() {
Toast.makeText(Test.this, "测试调用java", Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
在网页中,只需要像调用js方法一样,进行调用就可以
<div id='b'><a onclick="window.demo.clickOnAndroid()">b.c</a></div>
3. Java代码调用js并传参
首先需要带参数的js函数,如function test(str),然后只需在调用js时传入参数即可,如下所示:
mWebView.loadUrl("javascript:test('aa')");
4.Js中调用java函数并传参
首先一样需要带参数的函数形式,但需注意此处的参数需要final类型,即得到以后不可修改,如果需要修改其中的值,可以先设置中间变量,然后进行修改。如下所示:
mWebView.addJavascriptInterface(new Object() {
public void clickOnAndroid(final int i) {
mHandler.post(new Runnable() {
public void run() {
int j = i;
j++;
Toast.makeText(Test.this, "测试调用java" + String.valueOf(j), Toast.LENGTH_LONG).show();
}
});
}
}, "demo");
然后在html页面中,利用如下代码<div id='b'><a onclick="window.demo.clickOnAndroid(2)">b.c</a></div>,
即可实现调用
❺ 安卓中代码创建webview
1. a.html建议放置在assets文件夹下,加载url的写法是:file://android_assets/a.html
2. 可以尝试新建asstes文件夹,Android Studio手动创建asstes路径:src/main/asstes,Eclipse手动创建项目目录下
❻ android系统源码中webview控件中如何设置内容选中图标与webview下边距离
在服务器端的网页设置,修改网页。webview不支持这种设置
❼ android webview怎么加载html源代码
1.String customHtml = "<html><body><font color='red'>hello !</font></body></html>";
首先写了一个html代码段,用来显示一段红色的字体;
2.webview.loadData(customHtml, "text/html", "UTF-8"); 加载定义的代码,并设定编码格式和字符集;
3.运行效果;如图:
❽ android webview加载某个网页,之后通过这个网页调到了另一个页面,怎么获取这个页面的网址和源码
mWebView.setWebViewClient(new WebViewClient(){
// 这个方法在用户试图点开页面上的某个链接时被调用
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url!=null) {
// 如果想继续加载目标页面则调用下面的语句
// view.loadUrl(url);
// 如果不想那url就是目标网址,如果想获取目标网页的内容那你可以用HTTP的API把网页扒下来。
}
// 返回true表示停留在本WebView(不跳转到系统的浏览器)
return true;
}
});
❾ 安卓开发webview运用的例子代码谁有可否传一份,网上的大都有错误,不要复制那些谢谢
你要实现什么功能?
❿ 寻求一个Android app项目代码 采用webview嵌入h5的方式实现 最好代码能够包括与后台交互的实现
我这里有一个代码demo