Android获取h5代码
来源:互联网 发布:淘宝男士服装店铺推荐 编辑:程序博客网 时间:2024/06/05 04:50
本文只是提取了一些派派自动答题工具的部分代码进行说明。原理只是原生和js的交换而已,下面就说说我的思路吧。刚开始玩派派的时候,是一个朋友分享了一个二维码给我,通过访问二维码进入答题界面,进去随便答题一下都有几分钱,后来无意中发现这个链接只要刷新就可以重新开始,每次都这样,每次都有几分钱,后来登录上app看,钱是存在的,然后才有了这个自动点击工具。不过后来玩了三天,发现虽然提示有几分钱,但是app上面的余额并没有增长了,可能人家发现了这个漏洞进行修复了,也可能是人家的套路,让你玩多几次先,之后把你耍了,哈哈。
我先是自定义了一个webView
import android.content.Context;import android.net.http.SslError;import android.text.TextUtils;import android.util.AttributeSet;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.webkit.JavascriptInterface;import android.webkit.SslErrorHandler;import android.webkit.WebChromeClient;import android.webkit.WebResourceRequest;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.LinearLayout;import android.widget.ProgressBar;import com.kawa.videoplay.R;/**** * <pre> * Project_Name: * Copyright: * Created: Kawa on 2017/10/27 15:50. * E-mail: * Desc: * </pre> ****/public class MyWebView extends LinearLayout { private Context mContext; private WebView webView; private ProgressBar progressBar; private JsObject jsObject; public MyWebView(Context context) { this(context, null, 0); } public MyWebView(Context context, AttributeSet attrs) { this(context, attrs, 0); } public MyWebView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); init(context); } private void init(Context context) { mContext = context; LayoutInflater.from(mContext).inflate(R.layout.wg_web_view, this); webView = (WebView) findViewById(R.id.wg_web_view); progressBar = (ProgressBar) findViewById(R.id.wg_web_view_progressBar); webView.getSettings().setBuiltInZoomControls(false); webView.getSettings().setUseWideViewPort(false); webView.getSettings().setJavaScriptEnabled(false); webView.getSettings().setUseWideViewPort(true); webView.getSettings().setLoadWithOverviewMode(true); jsObject = new JsObject(); webView.addJavascriptInterface(jsObject, "local_obj"); webView.loadData("", "text/html", null); initWebViewClient(); } /** * 初始化WebView事件监听 */ private void initWebViewClient() { webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); if (listener!=null){ listener.onInitWebView(view); } } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { return handlerUrl(url); } @Override public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) { //super.onReceivedSslError(view, handler, error); handler.proceed(); } }); webView.getSettings().setJavaScriptEnabled(true); //设置进度调 webView.setWebChromeClient(new WebChromeClient() { @Override public void onProgressChanged(WebView view, int newProgress) { super.onProgressChanged(view, newProgress); if (newProgress == 100) { progressBar.setVisibility(View.GONE); } else { progressBar.setVisibility(View.VISIBLE); progressBar.setProgress(newProgress); } } }); } /** * 设置网页片段 * * @param data */ public void setUrl(String data) { if (TextUtils.isEmpty(data)) { return; } webView.loadUrl(data); } class JsObject { private OnWebViewListener listener1; @JavascriptInterface public void showSource(String html) { if (listener1 !=null){ listener1.onWebViewListener(html); } } @JavascriptInterface public void showHtml(String html) { if (listener1 !=null){ listener1.onWebViewHtml(html); } } @JavascriptInterface public String toString() { return "local_obj"; } public void setOnWebViewListener(OnWebViewListener l){ listener1 = l; } } private boolean handlerUrl(String url) { Log.e("1212", url); return false; } private OnWebViewListener listener; public void setOnWebViewListener(OnWebViewListener l){ listener = l; jsObject.setOnWebViewListener(listener); } public interface OnWebViewListener{ void onWebViewListener(String content); void onInitWebView(WebView view); void onWebViewHtml(String content); }}
jsObject = new JsObject(); webView.addJavascriptInterface(jsObject, "local_obj");
这个JsObject类的代码
class JsObject { private OnWebViewListener listener1; @JavascriptInterface public void showSource(String html) { if (listener1 !=null){ listener1.onWebViewListener(html); } } @JavascriptInterface public void showHtml(String html) { if (listener1 !=null){ listener1.onWebViewHtml(html); } } @JavascriptInterface public String toString() { return "local_obj"; } public void setOnWebViewListener(OnWebViewListener l){ listener1 = l; } }
调用JsObject的方法:
webView.loadUrl("javascript:window.local_obj.showSource(document.getElementById(\"roundTime\").innerHTML);");
上面的调用是获取h5上面id为roundTime的html元素
调用的时候记得local_obj,这个是引用名,一定要跟核心代码1设置的名字一样,之后才接方法名,showSource这个是JsObject的方法,传入值那个,就是一般的js的操作就行了
阅读全文
0 0
- Android获取h5代码
- iOS WebView获取H5界面代码
- Android H5交互(之一),获取H5方法返回值
- android webView加载h5 h5的js代码不执行
- Android 获取 H5中的按钮,点击
- H5 调用android原生相机代码分析
- Appium 获取h5页面元素需要加调试代码
- Android与H5混合开发中获取H5存储在localStorage中的数据信息
- Android用webView加载h5的页面,h5获取本地的图库中的图片
- Hybrid:Android 中如何获取和写入 H5 localStorage 数据
- Android H5
- android SHA1获取(代码获取)
- android 代码获取版本号
- android获取运营商代码
- android 获取图片代码
- android 获取网页代码
- android 反编译获取代码
- android获取屏幕分辨率代码
- Python 练习实例15
- 使用maven profile实现多环境配置
- HTTPS与HTTP的区别
- Android系统标栏显示和隐藏
- logstash输出日志到elasticsearch,index和type如何动态赋值?
- Android获取h5代码
- python学习--安装以及第一个程序
- python使用lxml操作XML文件
- 将faster rcnn测试结果图片保存下来
- java 集合类结构图
- Python高级
- sqlserver查询数据库所有存储过程、触发器、索引信息
- ora-01033错误恢复
- js控制 radio 选中状态