public class UserInfoActivity extends AppCompatActivity implements WebView.OnClickListener{    private WebView webView;    private ValueCallback mUploadMessage;// 表单的数据信息    private ValueCallback mUploadCallbackAboveL;    private final static int FILECHOOSER_RESULTCODE = 1;// 表单的结果回调    private Uri imageUri;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_user_info);        webView = (WebView)findViewById(R.id.wv);        WebSettings settings = webView.getSettings();        settings.setJavaScriptEnabled(true);        webView.setWebChromeClient(new UserInfoActivity.MyWebChromeClient());        webView.addJavascriptInterface(this, "android");        Map extraHeaders = new HashMap<>();        extraHeaders.put("Authorization", GlobalValue.Authorization);        webView.loadUrl("http://47.92.170.10/puth/usermsg/userinfoedit",extraHeaders);        CacheActivity.addActivity(this);        if(Build.VERSION.SDK_INT >= 21) {            getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE                    |View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);            getWindow().setStatusBarColor(Color.TRANSPARENT);        }    }    @Override    public void onClick(View view) {    }    //下面的两个方法是让网页来调的    //这个注解必须加 因为 兼容问题    @JavascriptInterface    public void setClose() {//        Toast.makeText(this, "关闭页面", Toast.LENGTH_SHORT).show();        Intent intent = new Intent();        intent.setClass(this,MainActivity.class);        startActivity(intent);        UserInfoActivity.this.finish();    }    @JavascriptInterface    public void reLogin() {        SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);        SharedPreferences.Editor editor = sharedPreferences.edit();        editor.putString("isLogin", "no");        editor.commit();        Intent intent = new Intent();        intent.setClass(this,LoginActivity.class);        startActivity(intent);        UserInfoActivity.this.finish();    }    @JavascriptInterface    public void setMessage(String info) {//        try {//            WebViewUserInfoEntity entity = new Gson().fromJson(info,WebViewUserInfoEntity.class);//            SharedPreferences sharedPreferences = getSharedPreferences("user", Context.MODE_PRIVATE);//            SharedPreferences.Editor editor = sharedPreferences.edit();//            editor.putInt("simulation_status", entity.simulation_status);//            editor.putInt("hospital_status",entity.hospital_status);//            editor.putBoolean("userInfo", entity.userinfo);//            editor.commit();//        }catch (Exception e){//            Toast.makeText(this, "format error", Toast.LENGTH_SHORT).show();//        }    }    @Override    public boolean onKeyDown(int keyCode, KeyEvent event) {        if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {            webView.goBack();            return true;        }        return super.onKeyDown(keyCode, event);    }    private class MyWebChromeClient extends WebChromeClient {        //这个重新的方法是为了让js支持alert。不需要的可以去掉        @Override        public boolean onJsAlert(WebView view, String url, String message,                                 JsResult result) {            return super.onJsAlert(view, url, message, result);        }        //设置网页加载的进度条        @Override        public void onProgressChanged(WebView view, int newProgress) {            super.onProgressChanged(view, newProgress);//            if (newProgress == 100) {//                mProgressBar.setVisibility(View.GONE);//            } else {//                mProgressBar.setVisibility(View.VISIBLE);//                mProgressBar.setProgress(newProgress);//            }        }        //android>5.0调用这个方法        @Override        public boolean onShowFileChooser(WebView webView,                                         ValueCallback filePathCallback,                                         FileChooserParams fileChooserParams) {            mUploadCallbackAboveL=filePathCallback;            take();            return true;        }        public void openFileChooser(ValueCallback uploadMsg) {            mUploadMessage=uploadMsg;            take();        }        public void openFileChooser(ValueCallback uploadMsg,String acceptType) {            mUploadMessage=uploadMsg;            take();        }        public void openFileChooser(ValueCallback uploadMsg,String acceptType, String capture) {            mUploadMessage=uploadMsg;            take();        }    }    @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        if(requestCode==FILECHOOSER_RESULTCODE)        {            if (null == mUploadMessage && null == mUploadCallbackAboveL) return;            Uri result = data == null || resultCode != RESULT_OK ? null : data.getData();            if (mUploadCallbackAboveL != null) {                onActivityResultAboveL(requestCode, resultCode, data);            }            else  if (mUploadMessage != null) {                Log.e("result",result+"");                if(result==null){//                   mUploadMessage.onReceiveValue(imageUri);                    mUploadMessage.onReceiveValue(imageUri);                    mUploadMessage = null;                    Log.e("imageUri",imageUri+"");                }else {                    mUploadMessage.onReceiveValue(result);                    mUploadMessage = null;                }            }        }    }    @SuppressWarnings("null")    @TargetApi(Build.VERSION_CODES.LOLLIPOP)    private void onActivityResultAboveL(int requestCode, int resultCode, Intent data) {        if (requestCode != FILECHOOSER_RESULTCODE                || mUploadCallbackAboveL == null) {            return;        }        Uri[] results = null;        if (resultCode == Activity.RESULT_OK) {            if (data == null) {                results = new Uri[]{imageUri};            } else {                String dataString = data.getDataString();                ClipData clipData = data.getClipData();                if (clipData != null) {                    results = new Uri[clipData.getItemCount()];                    for (int i = 0; i < clipData.getItemCount(); i++) {                        ClipData.Item item = clipData.getItemAt(i);                        results[i] = item.getUri();                    }                }                if (dataString != null)                    results = new Uri[]{Uri.parse(dataString)};            }        }        if(results!=null){            mUploadCallbackAboveL.onReceiveValue(results);            mUploadCallbackAboveL = null;        }else{            results = new Uri[]{imageUri};            mUploadCallbackAboveL.onReceiveValue(results);            mUploadCallbackAboveL = null;        }        return;    }    private void take(){        File imageStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "MyApp");        // Create the storage directory if it does not exist        if (! imageStorageDir.exists()){            imageStorageDir.mkdirs();        }        File file = new File(imageStorageDir + File.separator + "IMG_" + String.valueOf(System.currentTimeMillis()) + ".jpg");        imageUri = Uri.fromFile(file);        final List cameraIntents = new ArrayList();        final Intent captureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);        final PackageManager packageManager = getPackageManager();        final List listCam = packageManager.queryIntentActivities(captureIntent, 0);        for(ResolveInfo res : listCam) {            final String packageName = res.activityInfo.packageName;            final Intent i = new Intent(captureIntent);            i.setComponent(new ComponentName(res.activityInfo.packageName, res.activityInfo.name));            i.setPackage(packageName);            i.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);            cameraIntents.add(i);        }        Intent i = new Intent(Intent.ACTION_GET_CONTENT);        i.addCategory(Intent.CATEGORY_OPENABLE);        i.setType("image/*");        Intent chooserIntent = Intent.createChooser(i,"Image Chooser");        chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS, cameraIntents.toArray(new Parcelable[]{}));        UserInfoActivity.this.startActivityForResult(chooserIntent,  FILECHOOSER_RESULTCODE);    }}

 

更多相关文章

  1. InputFilter方法filter 解释
  2. Android工程方法数超过65535,解决办法
  3. Android中Java与JavaScript之间交互
  4. android 之 3G/gprs
  5. Android(安卓)使用Parcelable接口
  6. Android(安卓)之Http
  7. 交互式实例
  8. Android学习笔记(2)————Android四大组件之二(Service )
  9. Android学习笔记(1)————Android四大组件之一(Activity)

随机推荐

  1. 学习笔记-android imageSwitcher使用
  2. Android架构组件简介
  3. android中合理利用反射
  4. Android从零单排——前言
  5. Android 4.4.2插入exFAT格式U盘识别及加
  6. Android视频播放器---播放远程非流MP4
  7. AutoCompleteTextView和MultiAutoComplet
  8. Android 调用.Net WCF服务
  9. Qt on Android:应用截屏
  10. Android(安卓)源码阅读之建立3G网络流程