Android使用webview调用系统浏览器以及项目内显示并支持图片和输入

Intent intent= new Intent();
intent.setAction("android.intent.action.VIEW");
Uri url = Uri.parse("http://www.baidu.com");
intent.setData(url);
startActivity(intent);

启动系统浏览器,需要自己选择;

Intent intent= new Intent();
intent.setAction("android.intent.action.VIEW");
Uri content_url = Uri.parse("http://www.cnblogs.com");
intent.setData(content_url);
intent.setClassName("com.android.browser","com.android.browser.BrowserActivity");
startActivity(intent);

只要修改intent.setClassName("XXXXX","XXXXXXXXX");中相应的packagename 和 主启动activity即可调用其他浏览器

uc浏览器 ":" com.uc.browser ", " com.uc.browser.ActivityUpdate“  
opera  "com.opera.mini.android" "com.opera.mini.android.Browser"  
qq浏览器: "com.tencent.mtt" "com.tencent.mtt.MainActivity"   

但是有时候我们的webview不只是支持这么单纯的功能,需要支持上传图片以及文本编辑,有的手机文本编辑输入框是会有冲突。
public class MeViewAction extends Activity {
@InjectView(id = R.id.load_pro)
private ProgressBar load_pro;

@InjectView(id = R.id.webview_vip)
private WebView webview;
private ImageView imageview;
private ValueCallback<Uri> mUploadMessage;
private final static int FILECHOOSER_RESULTCODE = 1;


@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.web_vip);
imageview = (ImageView) findViewById(R.id.imageview_vip);
webview.setVisibility(View.VISIBLE);
imageview.setVisibility(View.GONE);
 WebSettings setting = webview.getSettings();
setting.setDefaultTextEncodingName("utf-8");
setting.setJavaScriptEnabled(true);
setting.setAllowFileAccess(true);// 设置允许访问文件数据
setting.setSupportZoom(true);// 支持放大网页功能
setting.setBuiltInZoomControls(true);// 支持缩小网页功能
setting.setCacheMode(WebSettings.LOAD_NO_CACHE);
webview.clearCache(true);
setting.setLoadWithOverviewMode(true);
setting.setUseWideViewPort(true);
webview.requestFocusFromTouch();
//设置处理JavaScript的引擎
WebChromeClient webChromeClient = new WebChromeClient() {
@Override
public boolean onJsAlert(WebView view, String url, String message, JsResult result) {
return super.onJsAlert(view, url, message, result);
}
public void openFileChooser(ValueCallback<Uri> uploadMsg,
String acceptType, String capture) {
if (mUploadMessage != null)
return;
mUploadMessage = uploadMsg;
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
startActivityForResult(
Intent.createChooser(intent, "完成操作需要使用"), FILECHOOSER_RESULTCODE);
}
};
webview.setWebChromeClient(webChromeClient);
/***打开本地缓存提供JS调用**/
setting.setDomStorageEnabled(true);
setting.setAppCacheMaxSize(1024 * 1024 * 8);
String appCachePath = getApplicationContext().getCacheDir().getAbsolutePath();
setting.setAppCachePath(appCachePath);
setting.setAllowFileAccess(true);
setting.setAppCacheEnabled(true);
// setting.setJavaScriptEnabled(true);
webview.loadUrl(url);
setting.setBlockNetworkImage(false);
// initComponent();

final String finalUrl = url;
webview.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
webview.loadUrl(finalUrl);
return true;
}

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
webview.loadUrl(url);
return true;
}

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);

handler.sendEmptyMessage(0);
}
});
webview.loadUrl(url);
}
boolean b = true;
    boolean back_info = false;

        @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { //按下的如果是BACK,同时没有重复
            //是否能返回
            b = webview.canGoBack();
            Log.e("TAG_B","B"+b);
            if (b){
                webview.goBack();
            }else {
                if (back_info){
                    getApplicationContext().unregisterReceiver(mReceiver);
                }
                finish();
            }
            return true;
        }
    return super.onKeyDown(keyCode, event);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值