Android · 2016年8月22日 0

android webView网页表单自动登录(单点登录)

今天帮助网友解决了一个在应用中登录后进应用的网页自动登录。

在这里分享给大家,希望能帮助更多的人。直接上代码:

/**
 * 网页自动登录
 * http://haohailai.taobao.com/
 * @author xiehaibo
 *
 */
public class MainActivity extends Activity {
	private WebView webView1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		webView1 = (WebView) findViewById(R.id.webView1);
		// 设置支持JavaScript脚本
		WebSettings webSettings = webView1.getSettings();
		webSettings.setJavaScriptEnabled(true);
		// 设置可以访问文件
		webSettings.setAllowFileAccess(true);
		// 设置支持缩放
		webSettings.setBuiltInZoomControls(true);
		// 设置WebViewClient
		webView1.setWebViewClient(new WebViewClient() {
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}

			@Override
			public void onPageFinished(WebView view, String url) {
				Log.d("admin", "网页加载完了");
				String uname = "帐号";
				String password = "密码";
				// 加载完了再调用js登录代码
				view.loadUrl("javascript: {"
						+ "document.getElementById('username').value = '"
						+ uname + "';"
						+ "document.getElementById('password').value = '"
						+ password + "';"
						+ "var frms = document.getElementsByName('tableForm');"
						+ "frms[0].submit(); };");

				// 登录成功后加载框取消
				super.onPageFinished(view, url);
			}

			@Override
			public void onPageStarted(WebView view, String url, Bitmap favicon) {
				Log.d("admin", "网页开始加载");
				// 在这里可以创建一个加载框。。。
				super.onPageStarted(view, url, favicon);
			}
		});
		webView1.loadUrl("网页地址,包含登录表单");
	}

}

注意的是:

view.loadUrl("javascript: {"
						+ "document.getElementById('username').value = '"
						+ uname + "';"
						+ "document.getElementById('password').value = '"
						+ password + "';"
						+ "var frms = document.getElementsByName('tableForm');"
						+ "frms[0].submit(); };");

username、password、tableForm要该为你自己网页的表单里的id值。

Share this: