【发布时间】:2016-01-20 13:51:14
【问题描述】:
我正在尝试在 Web 视图中加载网页,我可以这样做,但是有一个按钮可以让您上传文件。当我在 android 上的 Chrome 应用程序中加载页面并打开文件浏览器时,此按钮可以正常工作,但是在 web 视图中没有任何反应。是否可以将 chrome 用于 web 视图,或者如何让这个按钮从 web 视图中触发文件选择器?
我已尝试更改 web 视图选项以启用 javascript 等,以下是 webactivity 的代码:
public class WebActivity extends Activity {
Button b1;
WebView wv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web);
b1=(Button)findViewById(R.id.button);
wv=(WebView)findViewById(R.id.webView);
//wv1.setWebViewClient(new MyBrowser());
wv.setWebChromeClient(new WebChromeClient());
b1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
WebSettings webSettings = wv.getSettings();
webSettings.setJavaScriptEnabled(true);
webSettings.setAppCacheEnabled(true);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setAllowFileAccess(true);
wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
wv.loadUrl("MY WEBSITE URL");
wv.setWebChromeClient(new WebChromeClient());
wv.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// TODO Auto-generated method stub
if (url.startsWith("tel:") || url.startsWith("mailto:")) {
Intent intent = new Intent(Intent.ACTION_VIEW,
Uri.parse(url));
startActivity(intent);
}else if(url.startsWith("http:") || url.startsWith("https:")) {
view.loadUrl(url);
}
return true;
}
});
}
});
}
}
【问题讨论】:
-
浏览器拥有执行所有这些功能的所有 API。如果您想要所有这些功能而不为 webview 编写额外的代码,那么我建议您嵌入人行横道作为 webview 的替代品。 -- crosswalk-project.org -- crosswalk-project.org/documentation/apis/embedding_api.html -- 会给应用程序增加大约 19megs 但浏览器真的很好
-
有一个简单的 android Studio 教程,所以你可以测试看看你是否喜欢使用它 -- diego.org/2015/01/07/embedding-crosswalk-in-android-studio -- 但是改变(编译 'org.xwalk:xwalk_core_library:10.39.235.15 ') 到最新的版本号,可以在这里找到crosswalk-project.org/documentation/downloads.html,目前是 (16.45.421.19) --
标签: android webview filechooser