Android 台灣中文網

標題: Android WebView加載HTML表單並通過javascript提交(一) [打印本頁]

作者: 暗桌之光    時間: 2011-7-24 15:23
標題: Android WebView加載HTML表單並通過javascript提交(一)
使用android的WebView控件加載HTML表單,通過javascript調用java對像提交表單,在java對像中獲取表單的值:
  1. import android.app.Activity;
  2. import android.app.AlertDialog;
  3. import android.content.DialogInterface;
  4. import android.os.Bundle;
  5. import android.os.Handler;
  6. import android.view.View;
  7. import android.webkit.JsResult;
  8. import android.webkit.WebChromeClient;
  9. import android.webkit.WebSettings;
  10. import android.webkit.WebView;
  11. import android.widget.Button;
  12. import android.widget.TextView;

  13. public class WebViewTest extends Activity {
  14. private WebView mWebView = null;
  15. private TextView txtView = null;
  16. private Handler mHandler = new Handler();
  17. /** Called when the activity is first created. */

  18. @Override
  19. public void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22. mWebView = (WebView) findViewById(R.id.webView);
  23. txtView = (TextView) findViewById(R.id.webViewResult);
  24. WebSettings webSettings = mWebView.getSettings();
  25. //不保存密碼
  26. webSettings.setSavePassword(false);
  27. //不保存表單數據
  28. webSettings.setSaveFormData(false);
  29. webSettings.setJavaScriptEnabled(true);
  30. //不支持頁面放大功能
  31. webSettings.setSupportZoom(false);
  32. mWebView.addJavascriptInterface(new LoginJavaScriptImpl(), "loginImpl"); mWebView.setWebChromeClient(new MyAndroidWebClient());

  33. ((Button)findViewById(R.id.btnLoadhtml)).setOnClickListener(new View.OnClickListener() {
  34. public void onClick(View arg0) {
  35. mWebView.loadData(createWebForm(), "text/html", "UTF-8");
  36. // mWebView.loadDataWithBaseURL("", createWebForm(), "text/html", "UTF-8", "");
  37. }
  38. });
  39. }

  40. private String returnValue;
  41. protected final class LoginJavaScriptImpl {
  42. public void login(String username, String password){
  43. returnValue = username + ": " + password; mHandler.post(new Runnable() {
  44. public void run() { txtView.setText(returnValue);
  45. }
  46. });
  47. }
  48. }

  49. private final class MyAndroidWebClient extends WebChromeClient {

  50. @Override
  51. public boolean onJsAlert(WebView view,String url, String message, JsResult result) {
複製代碼





歡迎光臨 Android 台灣中文網 (https://apk.tw/) Powered by Discuz! X3.1