package com.shi.androidstudio.webviewandjs;
import android.app.AlertDialog;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.webkit.JavascriptInterface;
import android.webkit.JsPromptResult;
import android.webkit.JsResult;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.EditText;
import android.widget.Toast;
public class JSActivity extends AppCompatActivity {
//assets下的文件的test.html所在的绝对路径
private static final String DEFAULT_URL = "file:///android_asset/JsTest.html";
private EditText et_url;
private WebView webView;
private ProgressDialog progressDialog;//加载界面的菊花
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_js);
initView();
initWebView();
}
/**
* 初始化控件
*/
private void initView() {
webView = (WebView) findViewById(R.id.webView);
et_url = (EditText) findViewById(R.id.et_url);
}
/**
* 初始化webview
*/
private void initWebView() {
//首先设置Webview支持JS代码
webView.getSettings().setJavaScriptEnabled(true);
//Webview自己处理超链接(Webview的监听器非常多,封装一个特殊的监听类来处理)
webView.setWebViewClient(new WebViewClient() {
/**
* 当打开超链接的时候,回调的方法
* WebView:自己本身webView
* url:即将打开的url
*/
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//自己处理新的url
webView.loadUrl(url);
//true就是自己处理
return true;
}
//重写页面打开和结束的监听。添加友好,弹出菊花
/**
* 界面打开的回调
*/
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
//弹出菊花
progressDialog = new ProgressDialog(JSActivity.this);
progressDialog.setTitle("提示");
progressDialog.setMessage("软软正在拼命加载……");
progressDialog.show();
}
/**
* 界面打开完毕的回调
*/
@Override
public void onPageFinished(WebView view, String url) {
//隐藏菊花:不为空,正在显示。才隐藏
if (progressDialog != null && progressDialog.isShowing()) {
progressDialog.dismiss();
}
}
});
//设置进度条
//WebChromeClient与webViewClient的区别
//webViewClient处理偏界面的操作:打开新界面,界面打开,界面打开结束
//WebChromeClient处理偏js的操作
webView.setWebChromeClient(new WebChromeClient() {
/**
* 进度改变的回调
* WebView:就是本身
* newProgress:即将要显示的进度
*/
@Override
public void onProgressChanged(WebView view, int newProgress) {
if (progressDialog != null && progressDialog.isShowing())
progressDialog.setMessage("软软正在拼命加载……" + newProgress + "%");
}
/**
* 重写alert、confirm和prompt的回调
*/
/**
* Webview加载html中有alert()执行的时候,回调
* url:当前Webview显示的url
* message:alert的参数值
* JsResult:java将结果回传到js中
*/
@Override
public boolean onJsAlert(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder builder = new AlertDialog.Builder(JSActivity.this);
builder.setTitle("提示");
builder.setMessage(message);//这个message就是alert传递过来的值
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//处理确定按钮了,且通过jsresult传递,告诉js点击的是确定按钮
result.confirm();
}
});
builder.show();
//自己处理
return true;
}
@Override
public boolean onJsConfirm(WebView view, String url, String message, final JsResult result) {
AlertDialog.Builder builder = new AlertDialog.Builder(JSActivity.this);
builder.setTitle("提示");
builder.setMessage(message);//这个message就是alert传递过来的值
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//处理确定按钮了,且通过jsresult传递,告诉js点击的是确定按钮
result.confirm();
}
});
builder.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//处理取消按钮,且通过jsresult传递,告诉js点击的是取消按钮
result.cancel();
}
});
builder.show();
//自己处理
return true;
}
/**
* defaultValue就是prompt的第二个参数值,输入框的默认值
* JsPromptResult:向js回传数据
*/
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue,
final JsPromptResult result) {
AlertDialog.Builder builder = new AlertDialog.Builder(JSActivity.this);
builder.setTitle("提示");
builder.setMessage(message);//这个message就是alert传递过来的值
//添加一个EditText
final EditText editText = new EditText(JSActivity.this);
editText.setText(defaultValue);//这个就是prompt 输入框的默认值
//添加到对话框
builder.setView(editText);
builder.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//获取edittext的新输入的值
String newValue = editText.getText().toString().trim();
//处理确定按钮了,且过jsresult传递,告诉js点击的是确定按钮(参数就是输入框新输入的值,我们需要回传到js中)
result.confirm(newValue);
}
});
没有合适的资源?快使用搜索试试~ 我知道了~
获取webview内容并解析
共182个文件
xml:24个
sample:9个
png:5个
4星 · 超过85%的资源 需积分: 50 237 下载量 107 浏览量
2016-10-12
14:44:06
上传
评论 2
收藏 2.95MB ZIP 举报
温馨提示
获取webView当前当前加载的网页源码内容,并动态解析html,查找特定元素并修改其部分属性。博客地址:http://blog.csdn.net/abc6368765/article/details/52797111
资源推荐
资源详情
资源评论
收起资源包目录
获取webview内容并解析 (182个子文件)
00d87a9e23d1ced99c9efd2d7ae1c3ec1dc094 3KB
0337b9b2435cbe78738547a041f18a68179be5 54B
0447c4c145c3c3de6bb4ef6f3d0ed5b9bba9cc 693B
06714ec2455b0a6b4b5d9977c532c61608ad17 92B
08177b05fa0ab6e58d02aa6d43f482ad938289 92B
0b282aa6885fb573c106b3551f7275c5f17e8e 1005B
0d5c2b4283739394f5bae6878e1bcf7a30b03a 231B
0f4913772232bab7581f1396bc23d1d09fa14a 46B
11859f0e13865fb27cd53c205197b9f07e7fad 60B
16b5d3bc2d5664048e8c55e657656f045e9f83 398KB
189ffaa593340b307f512cd0fee69653fa1cd0 145B
1e878d6ae0ac28842631ce503b87447aba4dbe 17KB
24b954936cd0bb85a749ef88db6da7345e424c 387B
2a0dca2e800b3ccf474321fc5e63551f507d29 165B
2d2f3dd8e26a5f98fc3b69e90e5cad8b286a68 54B
2e244e5a9845cfd6049156d19f878e653dc2fd 95B
2f24c18857d17575240270212b7c678fbbead5 249B
300077b5f8e8cb80252b99f3fc55b94ce0bed9 56B
31b381580c386d2af1dce5247da7a5260653f6 60B
33a0cbd379f5af6dbf1a899a0293ca5eccfad0 2KB
3591c8a4c9c29578c36c87f80c05a6aea3ee3f 494B
35c440aa463c7308cded7546349cca293f8e07 194B
372aef5e24af05341d49695ee84e5f9b594659 47KB
3d60bd99e8782fdbea87de986d1ba748b5e5e8 45B
442fed5794381601999642a7e001450d8ddfad 239B
46893eefbab2bff9fee7d165804747dfdae24c 55B
47f789fa94a5183d60f481e68b749e10eeebe4 46B
48f0dcb772dadc6cd9b29741d20412b1aa3f84 45B
4931a27b08f11ea9eff7959cc448a257e5446e 54B
4e72cdd7480cb983fa1bcc7ce686e51ef87fe7 8KB
52242da929a936b1b5e2e785cb626692fe6cfd 60B
52ff1c12a1c4194bb589ad1fe2615063f460d4 55B
56ca9867713a23b92afac5c4e719fdaf05c841 88B
5972bef9e9d43aab652ff634fcee0df4e11bc5 100B
5a8b00ef8000c18517e47414305fcc9ebdc6b7 3KB
5ac5f12db9ed05d99b7565ecd14f78301a4793 195B
626ba45445dc9f3afa66e6a149914dc39e3df6 137B
68460d8b38ac04e3a3224d7c79ef719b1991a9 245B
6b96d1c402326528b4ba3c12ee9d92d0e212e9 22B
6c0727bf4398295acfd99d46d6ccb62d6952a2 145B
6f0a1021479757f22cb426cf8c078a855a85f7 8KB
6f156342c75c93523fbdf152ae84fe9fb61527 45B
6f8dcaa89908ceac7a8639abcd74ba2b54524b 94B
7426e03fd3a36f917cf586c97801eca984b2a4 208B
76fd0207c09ab41ce291628a7403d6cd253173 2KB
777b04aa18b8c8c05368fbe6fc05f0586aab0c 131B
78c4c70798073727da8bd0c2faf4b3a7d82c1f 600B
78c84ec5ab6a16c606ba950c5dc1f0bbcad96a 383B
7a8dbc4ba540c990df68be20b4289cca45008d 231B
806bfdf525ba1c9f5108b346b5b9000f904696 46B
82f78915133e1c35a6ea51252590fb38efac2f 2KB
851ea27643929eee01c4ea4882ae467c6e114d 225B
85930df6d10edf3d6df40d6556297d11f953da 199B
8b3d9b88975ad73f3804e134a7ed1f98c6335f 274B
8d5d14c5e85984404826f9643eac92d4b98096 45B
8f129d655baa39601f2bc5b0d3e73685077f9f 293B
8fbd72bcb6cdbd296b26ed5221ee57b07dfd28 717B
93c2673203020e3726e397a6870107f9e38aa9 65B
964cd0e920509a7471065436a6d9961693f271 65B
a1c904136db49bacab20059342674e1b31cc96 45B
a25f7f4cb416c083d265558da75d457237d671 155B
a3650ae79294b94a3dd6ba351ff3612fed018f 716B
a42f0e7b91d006d22352c9ff2f134e504e3c1d 5KB
a8c1bad2ad09c59ea13a1a1466f1ae1eaa6f0c 54B
a94099238fb06d90d7e5801dc4bc58343033db 300B
ad79a6dde1408f9522f798d52ea745bbc90bff 55B
b011306f478da9d15d7792078ccc5408193186 35B
b277ad224c8bfae339dbbf16010a862e08cce5 2KB
b3e9cbce07f7cdc941fc8ba424c05e83ed80f0 141B
b4def49cb53d9aa04228dd3edb14c9e635e003 31B
b4e486c5ed6302265757510d5e861cbc9d942b 109B
b7944d3c6cf5b431d3852e00db61ecfe9b20f6 288B
b94ddeec492d4fc719a4a2c6c62aa7ae8b97c9 249B
gradlew.bat 2KB
be8e5964729d18e633cfad8ba06ed2dd1f441e 390B
bedf3377d40335424fd605124d4761390218bb 83B
fileSnapshots.bin 4.64MB
fileHashes.bin 280KB
taskArtifacts.bin 116KB
outputFileStates.bin 22KB
c4d9e671efb982faf01a1da629f36876d4d9fe 59B
c7722a341df03e37f16ea3688aeb0ddd7278d6 153B
c82246738c4d056e8030d3a259206f42e8e15d 144B
c9a3dc9737654f5bcfc6fe590c140f5af31a94 93B
ca4aa6c39ec250b4da5a71314a24a72f0d0010 47B
cadf7ecebe894b4721c32c4633625bf00ca159 192B
cbe562a42726ab875d51cb513723b234787300 97B
cc43efa6a0885098044e976cd780bb42c68a70 296B
cc6c022faec8f2d8cca8d831b3a7c057deec25 314B
COMMIT_EDITMSG 23B
config 317B
dd72ccea510a0fbdb4016be7669bc1a7e258bd 1.08MB
deb02bf02d323abeff3837efae439726acea68 160B
description 73B
e00109ccdc573858c460ce0b78f458ed9e8232 59B
e0784d07d8ce00b63fabbdd2457a62a5537877 54B
e29e99b04897d370eb70e60861965f663fed44 152B
e2e452e5e2a893b4c2ae865a913d5ae16181db 359B
e44e138434630332d88b1680f33c4b24c70ab3 10KB
e4ad3ffc68943105c5d196de3ca5c350fe9ba3 71B
共 182 条
- 1
- 2
AFinalStone
- 粉丝: 2427
- 资源: 40
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 阿里云OSS Java版SDK.zip
- 阿里云api网关请求签名示例(java实现).zip
- 通过示例学习 Android 的 RxJava.zip
- 通过多线程编程在 Java 中发现并发模式和特性 线程、锁、原子等等 .zip
- 通过在终端中进行探索来学习 JavaScript .zip
- 通过不仅针对初学者而且针对 JavaScript 爱好者(无论他们的专业水平如何)设计的编码挑战,自然而自信地拥抱 JavaScript .zip
- 适用于 Kotlin 和 Java 的现代 JSON 库 .zip
- yolo5实战-yolo资源
- english-chinese-dictionary-数据结构课程设计
- mp-mysql-injector-spring-boot-starter-sql注入
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页