Android中获取网页表单中的数据

简介: MainActivity如下: package cn.testjavascript;import java.util.StringTokenizer;import android.

MainActivity如下:

package cn.testjavascript;
import java.util.StringTokenizer;
import android.os.Bundle;
import android.webkit.WebView;
import android.app.Activity;
/**
 * Demo描述:
 * 在Android中获取网页里表单中的数据
 */
public class MainActivity extends Activity {
   private WebView mWebView;		
   private String date =null;
   private String email = null;
   private String username = null;
   private String sex = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		init();
	}
	private void init(){
		mWebView=(WebView) findViewById(R.id.webView);
		initWebViewSettings();
		mWebView.loadUrl("file:///android_asset/form.html");
		//注意addJavascriptInterface方法中第二参数
		//它表示我们的java对象javaClass的别名.
		//这样Javascript就可以通过该别名来调用Android中的方法
		//即Javascript代码中的:window.testform.send(date+"|"+email+"|"+name+"|"+sex);
		//send是方法名
		//testform是别名
		mWebView.addJavascriptInterface(new Object() {
			public void send(String userInfo) {
				StringTokenizer userInfoStringTokenizer = new StringTokenizer(userInfo, "|");
				date = userInfoStringTokenizer.nextToken();
				email = userInfoStringTokenizer.nextToken();
				username = userInfoStringTokenizer.nextToken();
				sex = userInfoStringTokenizer.nextToken();
				System.out.println("userInfoStringTokenizer="+userInfoStringTokenizer.toString());
				System.out.println("date=" + date);
				System.out.println("email=" + email);
				System.out.println("username=" + username);
				System.out.println("sex=" + sex);
				};
		}, "testform");

		
	}
	private void initWebViewSettings(){
		mWebView.setVerticalScrollBarEnabled(false);
		mWebView.setHorizontalScrollBarEnabled(false);
		mWebView.getSettings().setJavaScriptEnabled(true);
		mWebView.getSettings().setSupportZoom(true);
		mWebView.getSettings().setDomStorageEnabled(true);
		mWebView.getSettings().setPluginsEnabled(true);
		mWebView.requestFocus();
		mWebView.getSettings().setUseWideViewPort(true);
		mWebView.getSettings().setLoadWithOverviewMode(true);
		mWebView.getSettings().setSupportZoom(true);
		mWebView.getSettings().setBuiltInZoomControls(true);
	}
	
}

 

main.xml如下:

<RelativeLayout 
    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"
    >

    <WebView
        android:id="@+id/webView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_centerInParent="true"
     />

</RelativeLayout>


 

form.html如下:

<body>
		<form action="" method="post">
		时间:<br>
		<select id="shijian" name="date">
		    <option value="2011">2011</option>
		    <option value="2012">2012</option>
		    <option value="2013">2013</option>
		    <option value="2014">2014</option>
		    <option value="2015">2015</option>
		</select><br>
			邮箱:
			<input id="email" type="text" name="emailID" />
			<br>
			昵称:
			<input id="name" type="text" name="username" />
			<br>
			性别:<br>
			<input id="men" type="radio" name="sex" value="men"/>男
		    <input id="women" type="radio" name="sex" value="women"/>女
		    <br>
		    <input type="submit" value="注册" onclick="f()"/>
		    <input type="button" value="取消" />
		</form>
	</body>
	<script type="text/JavaScript" language="javascript">
	     function f(){
	        var email = document.getElementById('email').value;
	        var name = document.getElementById('name').value;
	        var date = document.getElementById('shijian').value;
	        if(document.getElementById('men').checked && !document.getElementById('women').checked){
	        var sex = document.getElementById('men').value;
	        }else if(!document.getElementById('men').checked && document.getElementById('women').checked){
	        var sex = document.getElementById('women').value;
	        }
	        window.testform.send(date+"|"+email+"|"+name+"|"+sex);	       
         }     
		</script>


 

相关文章
|
1月前
|
开发工具 Android开发 开发者
Android平台如何不推RTMP|不发布RTSP流|不实时录像|不回传GB28181数据时实时快照?
本文介绍了一种在Android平台上实现实时截图快照的方法,尤其适用于无需依赖系统接口的情况,如在RTMP推送、RTSP服务或GB28181设备接入等场景下进行截图。通过底层模块(libSmartPublisher.so)实现了截图功能,封装了`SnapShotImpl.java`类来管理截图流程。此外,提供了关键代码片段展示初始化SDK实例、执行截图、以及在Activity销毁时释放资源的过程。此方案还考虑到了快照数据的灵活处理需求,符合GB/T28181-2022的技术规范。对于寻求更灵活快照机制的开发者来说,这是一个值得参考的设计思路。
|
1月前
|
JSON Java Android开发
Android 开发者必备秘籍:轻松攻克 JSON 格式数据解析难题,让你的应用更出色!
【8月更文挑战第18天】在Android开发中,解析JSON数据至关重要。JSON以其简洁和易读成为首选的数据交换格式。开发者可通过多种途径解析JSON,如使用内置的`JSONObject`和`JSONArray`类直接操作数据,或借助Google提供的Gson库将JSON自动映射为Java对象。无论哪种方法,正确解析JSON都是实现高效应用的关键,能帮助开发者处理网络请求返回的数据,并将其展示给用户,从而提升应用的功能性和用户体验。
42 1
|
1月前
|
缓存 API Android开发
Android经典实战之Kotlin Flow中的3个数据相关的操作符:debounce、buffer和conflate
本文介绍了Kotlin中`Flow`的`debounce`、`buffer`及`conflate`三个操作符。`debounce`过滤快速连续数据,仅保留指定时间内的最后一个;`buffer`引入缓存减轻背压;`conflate`仅保留最新数据。通过示例展示了如何在搜索输入和数据流处理中应用这些操作符以提高程序效率和用户体验。
35 6
|
1月前
|
编解码 网络协议 前端开发
如何实现Android平台GB28181设备接入模块按需打开摄像头并回传数据
后台采集摄像头,如果想再进一步扩展,可以把android平台gb28181的camera2 demo,都移植过来,实现功能更强大的国标设备侧,这里主要是展示,收到国标平台侧的回传请求后,才打开摄像头,才开始编码打包,最大限度的减少资源的占用
|
1月前
|
编解码 网络协议 Android开发
Android平台GB28181设备接入模块实现后台service按需回传摄像头数据到国标平台侧
我们在做Android平台GB28181设备对接模块的时候,遇到这样的技术需求,开发者希望能以后台服务的形式运行程序,国标平台侧没有视频回传请求的时候,仅保持信令链接,有发起视频回传请求或语音广播时,打开摄像头,并实时回传音视频数据或接收处理国标平台侧发过来的语音广播数据。
|
1月前
|
算法 数据处理 开发工具
Android平台RTSP|RTMP播放器如何回调YUV或RGB数据
在开发Android平台上的RTSP或RTMP播放器时,开发者不仅追求低延迟播放,还希望获取解码后的视频数据(如YUV或RGB格式),以便进行视觉算法分析。使用大牛直播SDK中的SmartPlayer,可在确保播放流畅的同时,通过设置外部渲染器(`SmartPlayerSetExternalRender`)来高效地回调原始视频数据。例如,对于RGBA数据,需实现`NTExternalRender`接口,并重写相关方法以处理数据和尺寸变化。同样地,对于I420(YUV)数据,也需要相应地实现接口以满足需求。这种方式使得开发者能在不影响常规播放功能的情况下,进行定制化的视频处理任务。
|
1月前
|
存储 缓存 Java
Android项目架构设计问题之优化业务接口数据的加载效率如何解决
Android项目架构设计问题之优化业务接口数据的加载效率如何解决
31 0
|
Android开发 UED
Android -- 真正的 高仿微信 打开网页的进度条效果
(本博客为原创,http://www.cnblogs.com/linguanh/)   目录:   一,为什么说是真正的高仿?   二,为什么要搞缓慢效果?   三,我的实现思路   四,代码,内含注释   五,使用方法与截图   六,完整项目   一,为什么说是真正的高仿? ...
928 0
|
6天前
|
Android开发 开发者 Kotlin
探索安卓开发中的新特性
【9月更文挑战第14天】本文将引导你深入理解安卓开发领域的一些最新特性,并为你提供实用的代码示例。无论你是初学者还是经验丰富的开发者,这篇文章都会给你带来新的启示和灵感。让我们一起探索吧!
|
1天前
|
Android开发 开发者
安卓开发中的自定义视图:从入门到精通
【9月更文挑战第19天】在安卓开发的广阔天地中,自定义视图是一块充满魔力的土地。它不仅仅是代码的堆砌,更是艺术与科技的完美结合。通过掌握自定义视图,开发者能够打破常规,创造出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战应用,一步步展示如何用代码绘出心中的蓝图。无论你是初学者还是有经验的开发者,这篇文章都将为你打开一扇通往创意和效率的大门。让我们一起探索自定义视图的秘密,将你的应用打造成一件艺术品吧!
18 10