LocalBrowser.java
上传用户:xmjingguan
上传日期:2009-07-06
资源大小:2054k
文件大小:3k
源码类别:

android开发

开发平台:

Java

  1. /***
  2.  * Excerpted from "Hello, Android!",
  3.  * published by The Pragmatic Bookshelf.
  4.  * Copyrights apply to this code. It may not be used to create training material, 
  5.  * courses, books, articles, and the like. Contact us if you are in doubt.
  6.  * We make no guarantees that this code is fit for any purpose. 
  7.  * Visit http://www.pragmaticprogrammer.com/titles/eband for more book information.
  8. ***/
  9. package org.example.localbrowser;
  10. import android.app.Activity;
  11. import android.os.Bundle;
  12. import android.os.Handler;
  13. import android.util.Log;
  14. import android.view.View;
  15. import android.view.View.OnClickListener;
  16. import android.webkit.JsResult;
  17. import android.webkit.WebChromeClient;
  18. import android.webkit.WebView;
  19. import android.widget.Button;
  20. import android.widget.TextView;
  21. import android.widget.Toast;
  22. public class LocalBrowser extends Activity {
  23.    private static final String TAG = "LocalBrowser";
  24.    private final Handler handler = new Handler(); 
  25.    private WebView webView;
  26.    private TextView textView;
  27.    private Button button;
  28.    
  29.    
  30.    /** Object exposed to JavaScript */
  31.    private class AndroidBridge {
  32.       public void callAndroid(final String arg) { // must be final
  33.          handler.post(new Runnable() {
  34.             public void run() {
  35.                Log.d(TAG, "callAndroid(" + arg + ")");
  36.                textView.setText(arg);
  37.             }
  38.          });
  39.       }
  40.    }
  41.    
  42.    
  43.    @Override
  44.    public void onCreate(Bundle savedInstanceState) {
  45.       super.onCreate(savedInstanceState);
  46.       setContentView(R.layout.main);
  47.       // Find the Android controls on the screen
  48.       webView = (WebView) findViewById(R.id.web_view);
  49.       textView = (TextView) findViewById(R.id.text_view);
  50.       button = (Button) findViewById(R.id.button);
  51.       // Rest of onCreate follows...
  52.       
  53.       
  54.       // Turn on JavaScript in the embedded browser
  55.       webView.getSettings().setJavaScriptEnabled(true);
  56.       // Expose a Java object to JavaScript in the browser
  57.       webView.addJavascriptInterface(new AndroidBridge(),
  58.             "android");
  59.       
  60.       
  61.       // Set up a function to be called when JavaScript tries
  62.       // to open an alert window
  63.       webView.setWebChromeClient(new WebChromeClient() {
  64.          @Override
  65.          public boolean onJsAlert(final WebView view,
  66.                final String url, final String message,
  67.                JsResult result) {
  68.             Log.d(TAG, "onJsAlert(" + view + ", " + url + ", "
  69.                   + message + ", " + result + ")");
  70.             Toast.makeText(LocalBrowser.this, message, 3000).show();
  71.             result.confirm();
  72.             return true; // I handled it
  73.          }
  74.       });
  75.       
  76.       
  77.       // Load the web page from a local asset
  78.       webView.loadUrl("file:///android_asset/index.html");
  79.       
  80.       
  81.       // This function will be called when the user presses the
  82.       // button on the Android side
  83.       button.setOnClickListener(new OnClickListener() {
  84.          public void onClick(View view) {
  85.             Log.d(TAG, "onClick(" + view + ")");
  86.             webView.loadUrl("javascript:callJS('Hello from Android')");
  87.          }
  88.       });
  89.       
  90.       
  91.    }
  92. }