我正在开发一个扫描qr代码并显示存储在其中的数据的应用程序。但是,只要URL存储在qr代码中,我就想打开浏览器。如何确定它是qr代码中存储的普通文本还是URL ..我尝试使用正则表达式还是有其他方法吗?我使用zxing库扫描qr代码。请帮帮我
答案 0 :(得分:1)
首先你的设备应该有一个QR阅读器,正如你所说的那样你使用zxing阅读器,这个代码将打开应用程序进行扫描,或者如果用户没有应用程序给它一个URL,用于在catch中下载它: / p>
try {
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.putExtra("SCAN_MODE", "QR_CODE_MODE"); // "PRODUCT_MODE for bar codes
startActivityForResult(intent, 0);
} catch (Exception e) {
Uri marketUri = Uri.parse("market://details?id=com.google.zxing.client.android");
Intent marketIntent = new Intent(Intent.ACTION_VIEW,marketUri);
startActivity(marketIntent);
}
并在扫描后获取活动结果并以这种方式检查扫描输出:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
if (resultCode == RESULT_OK) {
String contents = data.getStringExtra("SCAN_RESULT");
}
if(resultCode == RESULT_CANCELED){
//handle cancel
}
}
}
如果您的输出是一个URL,此代码将在设备浏览器中打开它:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);
不要错过您网址中的'http://'
,这会导致您的应用崩溃
快乐的编码......
答案 1 :(得分:0)
使用嵌入式QR码阅读器,如此应用程序[EasyTrack](https://play.google.com/store/apps/details?id=com.shipmatrix.easytrack)我们对此应用程序所做的是嵌入式QR码阅读器,然后嵌入式应用程序利用它自己的阅读系统/对QR码采取行动。
答案 2 :(得分:0)
简单。每当您从QR码获取数据时,请尝试如下。对于有效的URL,它将返回true,否则为false。
try {
HttpURLConnection con =
(HttpURLConnection) url.openConnection();
con.setRequestMethod("HEAD");
return (con.getResponseCode() == HttpURLConnection.HTTP_OK);
}
catch (Exception e) {
e.printStackTrace();
return false;
}
另请参阅链接HttpURLConnection
答案 3 :(得分:0)
当我扫描我的QR码时,我无法打开多个网站,但是使用以下代码,我只能打开Google网站:
Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(browserIntent);