在WebView中记录每次触摸,包括触摸JavaScript元素。安卓
所以,我想做的是制作一个半自动的页面监视器,当屏幕的某些部分发生变化时,它会提醒用户。我的应用程序最大的好处是,用户可以记录一些动作,因为一些登录或注册表单是通过点击JavaScript元素而不是仅仅刷新来改变的。到目前为止,我所做的是制作了可缩放的网络视图,并编程了一个按钮,用于启动和停止触摸运动录制。除了当用户按下JavaScript微调器时,一切都像一个符咒。当它出现时,我的应用程序停止记录触摸,并且android布局按钮隐藏。所以,我想做的是强制我的触摸记录系统响应每一个可能的元素,它是用JavaScript编写的事件。 这是我的密码:在WebView中记录每次触摸,包括触摸JavaScript元素。安卓,java,javascript,android,webview,touch,Java,Javascript,Android,Webview,Touch,所以,我想做的是制作一个半自动的页面监视器,当屏幕的某些部分发生变化时,它会提醒用户。我的应用程序最大的好处是,用户可以记录一些动作,因为一些登录或注册表单是通过点击JavaScript元素而不是仅仅刷新来改变的。到目前为止,我所做的是制作了可缩放的网络视图,并编程了一个按钮,用于启动和停止触摸运动录制。除了当用户按下JavaScript微调器时,一切都像一个符咒。当它出现时,我的应用程序停止记录触摸,并且android布局按钮隐藏。所以,我想做的是强制我的触摸记录系统响应每一个可能的元素,它是
package com.example.automatikaandroidui;
import java.util.ArrayList;
import android.support.v7.app.ActionBarActivity;
import android.graphics.Color;
import android.graphics.Point;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.View.OnTouchListener;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends ActionBarActivity implements OnClickListener, OnTouchListener {
WebView webView;
Button mygtukasSeka;
boolean isPressed = false;
boolean halfWay = false;
boolean eile = false;
ArrayList<PointF> masyvas = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
masyvas = new ArrayList<PointF>();
webView = (WebView)findViewById(R.id.webView1);
webView.loadUrl("https://www.eregitra.lt/viesa/interv/Index.php");
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webView.setOnTouchListener(this);
mygtukasSeka = (Button)findViewById(R.id.mygtukas_seka);
mygtukasSeka.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.mygtukas_seka: {
TextView notify = (TextView)findViewById(R.id.ispek_irasyma);
if(!isPressed){
notify.setTextColor(Color.RED);
notify.setText("Įrašoma...");
isPressed = true;
}
else {
notify.setText("");
isPressed = false;
}
}
}
}
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getActionMasked()){
case MotionEvent.ACTION_DOWN : {
if(!halfWay && isPressed)
halfWay = true;
}
case MotionEvent.ACTION_UP : {
if(halfWay && isPressed){
PointF taskas = new PointF(event.getX(),event.getY());
masyvas.add(taskas);
halfWay = false;
Toast.makeText(MainActivity.this, taskas.x+" "+taskas.y, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, masyvas.size()+"", Toast.LENGTH_SHORT).show();
}
}
}
if(isPressed){
if(eile)
eile = false;
else eile = true;
}
return eile;
}
}
package com.example.automatikaandroidui;
导入java.util.ArrayList;
导入android.support.v7.app.ActionBarActivity;
导入android.graphics.Color;
导入android.graphics.Point;
导入android.graphics.PointF;
导入android.os.Bundle;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnClickListener;
导入android.view.view.OnTouchListener;
导入android.webkit.WebChromeClient;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.widget.Button;
导入android.widget.TextView;
导入android.widget.Toast;
公共类MainActivity扩展ActionBarActivity实现OnClickListener、OnTouchListener{
网络视图;
按钮mygtukasSeka;
布尔值isPressed=false;
布尔值=假;
布尔值=假;
ArrayList masyvas=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
masyvas=newarraylist();
webView=(webView)findViewById(R.id.webView1);
webView.loadUrl(“https://www.eregitra.lt/viesa/interv/Index.php");
webView.getSettings().setBuilTinZoomControl(true);
webView.getSettings().setLoadWithOverview模式(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setJavaScriptEnabled(true);
setWebChromeClient(新的WebChromeClient());
setOnTouchListener(这个);
Mygtukaseka=(按钮)findViewById(R.id.mygtukas_seka);
mygtukasSeka.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
开关(v.getId()){
案例R.id.mygtukas_seka:{
TextView notify=(TextView)findViewById(R.id.ispek_irasyma);
如果(!isPressed){
notify.setTextColor(Color.RED);
notify.setText(“Įrašoma…”);
isPressed=true;
}
否则{
notify.setText(“”);
isPressed=false;
}
}
}
}
@凌驾
公共布尔onTouch(视图v,运动事件){
开关(event.getActionMasked()){
case MotionEvent.ACTION\u DOWN:{
如果(!已按下一半(&I)
一半=正确;
}
case MotionEvent.ACTION\u UP:{
如果(已按下一半(&I){
PointF taskas=新的PointF(event.getX(),event.getY());
masyvas.add(taskas);
一半=假;
Toast.makeText(MainActivity.this,taskas.x+“”+taskas.y,Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this,masyvas.size()+“”,Toast.LENGTH_SHORT.show();
}
}
}
如果(显示){
如果(eile)
艾尔=假;
否则eile=真;
}
返回eile;
}
}
下面是一些屏幕截图:
这是登记表。当您按下B键时,会出现微调器,当您更改不同的元素时,所有页面都会刷新。正如你所看到的,底部有三个按钮,中间一个叫做Seka records Touchs
这是我以前谈过的旋转器。忽略toast消息
提前感谢!:)