import java.io.File;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.view.KeyEvent;
import android.webkit.ValueCallback;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Toast;

@SuppressLint("SetJavaScriptEnabled")
public class MainActivity extends Activity {
    private String url = "http://101.200.142.201";
    private WebView my_web;
    private ProgressDialog proDlg;
    private Uri imageUri;
    public ValueCallback<Uri> mUploadMessage;
    public final static int REQ_CHOOSER = 1;
    private final static int REQ_CAMERA = 2;

@SuppressLint("JavascriptInterface")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        my_web = (WebView) findViewById(R.id.wv);

// 支持脚本
        my_web.getSettings().setJavaScriptEnabled(true);
        //加载服务器的路径
        my_web.loadUrl(url);
        //创建对话框
        proDlg = new ProgressDialog(MainActivity.this);
        my_web.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                // my_web.loadUrl(url);
                return super.shouldOverrideUrlLoading(view, url);
            }

@Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                proDlg.setMessage("正在加载,请稍候...");
                // 显示加载进度对话框
                proDlg.show();
            }

/**
             * 页面加载完成时,回调此方法
             */
            @Override
            public void onPageFinished(WebView view, String url) {
                // 隐藏加载进度对话框
                proDlg.dismiss();
            }
        });

my_web.setWebChromeClient(new WebChromeClient() {
            @Override
            public void onProgressChanged(WebView view, int newProgress) {
                proDlg.setMessage("loading" + newProgress + "%......");
            }

// For Android 3.0+
            public void openFileChooser(ValueCallback<Uri> uploadMsg) {
                openFileChooser(uploadMsg, "");
            }

// For Android 3.0+
            public void openFileChooser(ValueCallback uploadMsg,
                    String acceptType) {
                openFileChooser(uploadMsg, acceptType);
            }

// For Android 4.1
            public void openFileChooser(ValueCallback<Uri> uploadMsg,
                    String acceptType, String capture) {
                mUploadMessage = uploadMsg;
                selectImage();
            }

});
    }

protected final void selectImage() {
        AlertDialog.Builder builder = new Builder(MainActivity.this);
        // builder.setTitle("插入照片");
        final String[] items = { "照相机", "相册" };
        builder.setItems(items, new DialogInterface.OnClickListener() {
            @SuppressLint("SdCardPath")
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(getApplicationContext(), items[which],
                        Toast.LENGTH_SHORT).show();
                Intent intent = null;
                switch (which) {
                // 调用照相机
                case 0:
                    intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    // 必须确保文件夹路径存在,否则拍照后无法完成回调
                    File vFile = new File(Environment
                            .getExternalStorageDirectory().getPath()
                            + "/DCIM/Camera/"
                            + (System.currentTimeMillis() + ".jpg"));
                    if (!vFile.exists()) {
                        File vDirPath = vFile.getParentFile();
                        vDirPath.mkdirs();
                    } else {
                        if (vFile.exists()) {
                            vFile.delete();
                        }
                    }
                    imageUri = Uri.fromFile(vFile);
                    intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
                    MainActivity.this
                            .startActivityForResult(intent, REQ_CAMERA);
                    break;
                case 1:
                    intent = new Intent(Intent.ACTION_PICK, null);
                    intent.setDataAndType(
                            MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
                            "image/*");
                    MainActivity.this.startActivityForResult(
                            Intent.createChooser(intent, "选择图片"), REQ_CHOOSER);
                    break;
                }
            }
        });
        builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                
                dialog.cancel();
                
                if(mUploadMessage!=null){
                    mUploadMessage.onReceiveValue(null);
                    selectImage();
                }
                
                
            }
        });
        builder.create().show();
    }

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        switch (requestCode) {
        case REQ_CHOOSER:
            if (null == mUploadMessage)
                return;
            Uri result = data == null || resultCode != RESULT_OK ? null : data
                    .getData();
            mUploadMessage.onReceiveValue(result);
            mUploadMessage = null;
            break;
        case REQ_CAMERA:
            if (resultCode == Activity.RESULT_OK) {
                mUploadMessage.onReceiveValue(imageUri);
                mUploadMessage = null;
            }
            break;
        }
    }

// 此按键监听的是返回键,能够返回到上一个网页(通过网页的hostlistery)
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && my_web.canGoBack()) {
            my_web.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}

最新文章

  1. npm link 安装本地模块,将本地模块cli化
  2. Oracle查询所有序列
  3. html 等页面防止中文出现乱码的终极解决方案
  4. JS小数点加减乘除运算后位数增加的解决方案
  5. 20145218 《Java程序设计》第05次实验报告
  6. 转:115个Java面试题和答案——终极列表(上)
  7. Java动手实验及课后程序
  8. How to: Read Object Data from an XML File
  9. Js 数组——filter()、map()、some()、every()、forEach()、lastIndexOf()、indexOf()
  10. win7/win8 64位系统注册TeeChart8.ocx 控件---以及dllregisterserver调用失败问题解决办法
  11. eclipse luna 无法安装veloeclipse问题
  12. Redis安装与基本配置(转)
  13. ESFramework 4.0 性能测试
  14. Head First设计模式之命令模式
  15. linux命令 xxd
  16. VNPY 文件目录结构
  17. CF979E
  18. Thinkphp框架网站 nginx环境 访问页面access denied
  19. 接上篇,php生成静态页面,加上页面时间缓存
  20. 初识waindows窗体程序错题整理

热门文章

  1. Linux 下没有 my.cnf 文件的解决方式,完全是我自己整的,好多教程都是瞎扯的 (zhuan)
  2. phalcon: 表单
  3. noip赛前小结1
  4. C#对象的深拷贝与浅拷贝
  5. [BI基础] 一些不得不了解的概念
  6. css -- 题目汇总
  7. MATLAB随机森林回归模型
  8. mysql 添加字段、删除字段、调整字段顺序 转
  9. matalab(绘图)
  10. 《算法导论》笔记---附录 B.5 树