将扫描的QR url加载到android webview中
**请参见下面问题的解决方法** 好的,除了加载url之外,其他都可以工作,当它尝试将url加载到webview时,会在超链接前面添加url:。例如:url:和webview当然不会加载这个。我尝试了.replace(“url:,”)和.replaceAll(“url:,”)但没有成功。使用zbar条形码库生成扫描结果 主要活动将扫描的QR url加载到android webview中,android,webview,Android,Webview,**请参见下面问题的解决方法** 好的,除了加载url之外,其他都可以工作,当它尝试将url加载到webview时,会在超链接前面添加url:。例如:url:和webview当然不会加载这个。我尝试了.replace(“url:,”)和.replaceAll(“url:,”)但没有成功。使用zbar条形码库生成扫描结果 主要活动 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch (requestCode) {
case ZBAR_SCANNER_REQUEST:
case ZBAR_QR_SCANNER_REQUEST:
if (resultCode == RESULT_OK) {
String value = data.getStringExtra(ZBarConstants.SCAN_RESULT);
String newValue = value.replaceAll("url:", "");
Intent intent = new Intent(getApplicationContext(), WebViewActivity.class);
intent.putExtra("mUrl",newValue);
startActivity(intent);
//Toast.makeText(this, "Scan Result = " + data.getStringExtra(ZBarConstants.SCAN_RESULT), Toast.LENGTH_LONG).show();
} else if(resultCode == RESULT_CANCELED && data != null) {
String error = data.getStringExtra(ZBarConstants.ERROR_INFO);
if(!TextUtils.isEmpty(error)) {
Toast.makeText(this, error, Toast.LENGTH_SHORT).show();
}
}
break;
}
}
网络视图活动
public class WebViewActivity extends Activity {
private WebView mWebView;
@SuppressLint("SetJavaScriptEnabled")
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String mUrl = getIntent().getStringExtra("mUrl");
//String newMUrl = mUrl.replaceAll("url:", "");
mWebView = (WebView) findViewById(R.id.activity_main_webview);
WebSettings webSettings = mWebView.getSettings();
webSettings.setJavaScriptEnabled(true);
mWebView.loadUrl(mUrl);
mWebView.setWebViewClient(new WebViewClient());
mWebView.setWebViewClient(new MyAppWebViewClient());
}
网络视图客户端
public class MyAppWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
}
}
main活动(固定)
我想您不必将以下代码放入shouldOverrideUrlLoading,因为返回true告诉WebView URL将由以下代码处理。i、 e.WebView根本不会加载URL
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
因此,如果您希望在Web视图中打开URL,只需在shouldOverrideUrlLoading中调用return false,除非您想启动另一个应用程序(如Android stock Browser)来打开URL。谢谢您的修复,因为我也需要解决这个问题,这为我解决了这个问题。我在原版上发布了一条评论,显示了我现在需要解决的初始问题。我修复了这个问题,因为url:在我调试后实际上是区分大小写的。在设备上,它显示为小写url:但在实际代码中,它是大写url:我希望这能帮助其他有同样问题的人。
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;