导航:首页 > 源码编译 > 安卓webview源码

安卓webview源码

发布时间:2022-01-23 17:39:37

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

阅读全文

与安卓webview源码相关的资料

热点内容
服务器一直崩应该用什么指令 浏览:916
cm202贴片机编程 浏览:723
php构造函数带参数 浏览:174
解压电波歌曲大全 浏览:336
为啥文件夹移到桌面成word了 浏览:858
命令符的安全模式是哪个键 浏览:758
编程中学 浏览:956
单片机求助 浏览:993
ug加工侧面排铣毛坯怎么编程 浏览:271
程序员有关的介绍 浏览:736
支付宝使用的什么服务器 浏览:210
安卓看本地书用什么软件好 浏览:921
经传软件滚动净利润指标源码 浏览:522
萤石云视频已加密怎么解除 浏览:574
一命令四要求五建议 浏览:30
qq文件夹迁移不了 浏览:19
液体粘滞系数测定不确定度算法 浏览:332
轻栈源码 浏览:426
把图片压缩到500k 浏览:35
命令你自己 浏览:369