关于Android webView的用法



如果你加载的网页需要Flash 插件支持,则可以先检测是否安装了Flash插件,如果没有安装该插件则下载该插件

private boolean checkFlash() { 
  PackageManager pm = getPackageManager(); 
  List<PackageInfo> infoList = pm 
    .getInstalledPackages(PackageManager.GET_SERVICES); 
  for (PackageInfo info : infoList) { 
   if ("com.adobe.flashplayer".equals(info.packageName)) { 
    return true; 
   } 
  }
  AlertDialog.Builder builder = new Builder(this);
//  builder.setIcon(R.drawable.ic_launcher);
  builder.setTitle(getString(R.string.flash_is_need_to_display_the_map));
//  builder.setMessage(result.getUpdateDate());
  builder.setCancelable(false);
  builder.setNegativeButton(getString(R.string.download), new DialogInterface.OnClickListener() {
   @Override
   public void onClick(DialogInterface dialog, int which) {
    installFlashApk();
   }

   private void installFlashApk() {
    Intent installIntent = new Intent( 
      "android.intent.action.VIEW"); 
    installIntent.setData(Uri 
      .parse("market://details?id=com.adobe.flashplayer")); 
    startActivity(installIntent);
    finish();
   }
  });
  builder.setPositiveButton(R.string.btn_cancle, new OnClickListener() {
   
   @Override
   public void onClick(DialogInterface dialog, int which) {
    finish();
   }
  });
  builder.show();
  
  return false; 
 } 

//webview的一些设置。


mWebView=(WebView) findViewById(R.id.view1);
  mWebView.getSettings().setDefaultTextEncodingName("gbk") ;
  mWebView.getSettings().setJavaScriptEnabled(true);// 设置支持javascript
  mWebView.requestFocus();// 获取触摸焦点
  mWebView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);// 取消滚动条
  mWebView.getSettings().setBuiltInZoomControls(true); // 构建缩放控制
  mWebView.getSettings().setSupportZoom(true); // 设置支持缩放
  mWebView.getSettings().setBlockNetworkImage(false);
  mWebView.getSettings().setBlockNetworkLoads(false);
  mWebView.getSettings().setDomStorageEnabled(true);
  mWebView.setWebViewClient(new WebViewClient()
  {
   @Override
   public boolean shouldOverrideUrlLoading(WebView view, String url)
   {  
    view.loadUrl(url); // 在当前的webview中跳转到新的url
    if (url.startsWith("mailto:") || url.startsWith("geo:") ||url.startsWith("tel:")) {
     Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
     startActivity(intent);
    }
    rememberNextUrl(url);
    return true;
   }

   private void rememberNextUrl(String url) {
    if(!url.startsWith("tel:")){
     nextUrl=url;
    }
    LogUtil.i("url=="+url);
   }

   @Override
   public void onPageStarted(WebView view, String url, Bitmap favicon) {
    // TODO Auto-generated method stub
    super.onPageStarted(view, url, favicon);
    //progressBar1.setVisibility(View.VISIBLE);
   }

   @Override
   public void onPageFinished(WebView view, String url) {
    rememberNextUrl(url);
    // TODO Auto-generated method stub
    try {
     new Handler().postDelayed(new Runnable() {

      public void run() {
       imageView.setVisibility(View.GONE);
       progressBar1.setVisibility(View.GONE);
      }
     }, 1000);
    } catch (Exception ex) {
     ex.printStackTrace();
    }
    super.onPageFinished(view, url);
    rememberNextUrl(url);
   }

   @Override
   public void onReceivedError(WebView view, int errorCode,
     String description, String failingUrl) {
    if(failingUrl.startsWith("tel:")){
     view.loadUrl(nextUrl);
     //     showShortToastMessage("拨打电话");
     Intent intent = new Intent();
     //           intent.setAction(Intent.ACTION_CALL);
     intent.setAction(Intent.ACTION_DIAL);
     intent.setData(Uri.parse(failingUrl));
     startActivity(intent);
    }else{
     view.loadUrl(nextUrl);
     showShortToastMessage("亲,您的手机可能不支持该功能哦");
     //     super.onReceivedError(view, errorCode, description, failingUrl);
    }
   }
   public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error){  
    //handler.cancel(); 默认的处理方式,WebView变成空白页  
    handler.proceed();//接受证书  
    //handleMessage(Message msg); 其他处理  
   }

   @Override
   public WebResourceResponse shouldInterceptRequest(WebView view,
     String url) {
    return super.shouldInterceptRequest(view, url);
   }

  });
  //第一个参数为调用的java对象  第二个参数 js里的 java对象名,js可以通过该对象名调用java对象的方法
  mWebView.addJavascriptInterface(this, "javaObj");

  mWebView.setWebChromeClient(new MyWebChromeClient());
  mWebView.loadUrl(url);



/***
  * 自定义WebChromeClient,做选择图片处理
  * @author spring sky
  * 创建时间:Aug 19, 20133:40:46 PM
  */ 
 private class MyWebChromeClient extends WebChromeClient { 
  
  // For Android 3.0+ 
  public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType) {   
   if (mUploadMessage != null) return; 
   mUploadMessage = uploadMsg;    
   //selectImage(); 
   createFileIntent();
  } 
  // For Android < 3.0 
   // The undocumented magic method override
        // Eclipse will swear at you if you try to put @Override here
        public void openFileChooser(ValueCallback<Uri> uploadMsg) {
            mUploadMessage = uploadMsg;
           createFileIntent();
        }
  // For Android  > 4.1.1 
//  public void openFileChooser(ValueCallback<Uri> uploadMsg, String acceptType, String capture) { 
//   openFileChooser(uploadMsg, acceptType); 
//  }
//        @Override
  public void openFileChooser(ValueCallback<Uri> uploadMsg, 
    String acceptType, String capture) { 
   mUploadMessage = uploadMsg;
   
//   createFileIntent(acceptType,capture); 
   createFileIntent(); 
//           createDefaultOpenableIntent();
//   createChooserIntent();
  }
  private void createFileIntent() {
   Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
   intent.addCategory(Intent.CATEGORY_OPENABLE); 
   intent.setType("image/*"); 
   startActivityForResult( 
     Intent.createChooser(intent, "完成操作需要使用"), 
     FILECHOOSER_RESULTCODE);
  } 
  private void createFileIntent(String acceptType, String capture) {
   Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
   intent.addCategory(Intent.CATEGORY_OPENABLE); 
   intent.setType(acceptType); 
   startActivityForResult( 
     Intent.createChooser(intent,capture), 
     FILECHOOSER_RESULTCODE);
  } 
  private Intent createDefaultOpenableIntent() {
   // Create and return a chooser with the default OPENABLE
   // actions including the camera, camcorder and sound
   // recorder where available.
   Intent i = new Intent(Intent.ACTION_GET_CONTENT);
   i.addCategory(Intent.CATEGORY_OPENABLE);
   i.setType("*/*");

   Intent chooser = createChooserIntent(createCameraIntent(), createCamcorderIntent(),
     createSoundRecorderIntent());
   chooser.putExtra(Intent.EXTRA_INTENT, i);
   
   startActivityForResult( 
     Intent.createChooser(i, "完成操作需要使用"), 
     FILECHOOSER_RESULTCODE);
   return chooser;
  }

  private Intent createChooserIntent(Intent... intents) {
   Intent chooser = new Intent(Intent.ACTION_CHOOSER);
   chooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, intents);
   chooser.putExtra(Intent.EXTRA_TITLE, "File Chooser");
   startActivityForResult( 
     Intent.createChooser(chooser, "完成操作需要使用"), 
     FILECHOOSER_RESULTCODE);
   return chooser;
  }

  private Intent createCameraIntent() {
   Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
   File externalDataDir = Environment.getExternalStoragePublicDirectory(
     Environment.DIRECTORY_DCIM);
   File cameraDataDir = new File(externalDataDir.getAbsolutePath() +
     File.separator + "browser-photos");
   cameraDataDir.mkdirs();
   mCameraFilePath = cameraDataDir.getAbsolutePath() + File.separator +
     System.currentTimeMillis() + ".jpg";
   cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(mCameraFilePath)));
   return cameraIntent;
  }

  private Intent createCamcorderIntent() {
   return new Intent(MediaStore.ACTION_VIDEO_CAPTURE);
  }

  private Intent createSoundRecorderIntent() {
   return new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION);
  }
 } 
 
 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        if (requestCode == FILECHOOSER_RESULTCODE) {
            if (null == mUploadMessage)
                return;
            Uri result = intent == null || resultCode != RESULT_OK ? null : intent.getData();
            mUploadMessage.onReceiveValue(result);
            if(result!=null){
             LogUtil.i("图片地址=="+result.getPath());
            }
            mUploadMessage = null;
        }
    }





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值