Android實現掃描二維碼
PS:有的朋友可能會掃描出現問題,如果報異常“SecurityException”同時讀者又確切的把相機許可權加上去了,這時候請檢查,你的裝置是不是6.0,或者6.0以後,這裡面牽扯到一個動態許可權的問題。需要增加一段程式碼。在文章裡我註釋掉了,開啟註釋即可。
這個是安卓6.0 以後的需要呼叫某些裝置的時候需要動態增加許可權,是安全問題提升的一個表現
開發工具:AS
作為伸手黨,首先感謝開源庫的作者GuoJinyu,有興趣的可以前去學習,
1.新增依賴
compile 'com.acker:simplezxing:1.2'
2.在需要的地方呼叫:(這裡需要注意,如果你的設別API很高,在6.0,可能需要動態申請許可權)
if (Build.VERSION.SDK_INT >= 23) {
int checkCallPhonePermission =
ContextCompat.checkSelfPermission(ZXingActivity.this,Manifest.permission.CAMERA);
if (checkCallPhonePermission != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(ZXingActivity.this, new String[]{Manifest.permission.CAMERA}, 222);
return;
} else {
startCamera();
}
} else {
startCamera();
}
startCamera() 方法如下:
private void startCamera() {
Intent intent = new Intent(this, CaptureActivity.class);
Bundle bundle = new Bundle();
bundle.putBoolean(CaptureActivity.KEY_NEED_BEEP, CaptureActivity.VALUE_BEEP);
bundle.putBoolean(CaptureActivity.KEY_NEED_VIBRATION, CaptureActivity.VALUE_VIBRATION);
bundle.putBoolean(CaptureActivity.KEY_NEED_EXPOSURE, CaptureActivity.VALUE_NO_EXPOSURE);
bundle.putByte(CaptureActivity.KEY_FLASHLIGHT_MODE, CaptureActivity.VALUE_FLASHLIGHT_OFF);
bundle.putByte(CaptureActivity.KEY_ORIENTATION_MODE, CaptureActivity.VALUE_ORIENTATION_AUTO);
intent.putExtra(CaptureActivity.EXTRA_SETTING_BUNDLE, bundle);
startActivityForResult(intent, CaptureActivity.REQ_CODE);
}
3.重寫onActivityResult:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
String scanInfo;
switch (requestCode) {
case CaptureActivity.REQ_CODE:
scanInfo = data.getStringExtra(CaptureActivity.EXTRA_SCAN_RESULT);
switch (resultCode) {
case RESULT_OK:
Log.d(TAG,scanInfo); //or do sth
mTextView.setText(scanInfo);
break;
case RESULT_CANCELED:
if (data != null) {
// for some reason camera is not working correctly
Log.d(TAG,data.getStringExtra(CaptureActivity.EXTRA_SCAN_RESULT));
}
break;
}
break;
}
}
對"第3步"onActivityResult 方法中 data 解釋:
data.getStringExtra(CaptureActivity.EXTRA_SCAN_RESULT); //這行用來接收二維碼資訊
startCaptureActivityForResult()方法的配置資訊在bundle引數描述的很詳細,可以參閱
最後別忘了許可權問題
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.CAMERA"/>
相關文章
- Android 二維碼掃描和生成二維碼Android
- React Native 實現二維碼掃描React Native
- Android二維碼生成與掃描Android
- iOS二維碼掃描iOS
- iOS中二維碼掃描iOS
- iOS 使用CIDetector掃描相簿二維碼、原生掃描iOSIDE
- Google zxing實現二維碼掃描完美解決方案Go
- 掃描二維碼登入思路
- 安卓自定義二維碼掃描安卓
- IOS 使用 ZbarSDK 二維碼掃描iOS
- iOS 掃描二維碼/條形碼iOS
- ubuntu安裝zbar二維碼掃描Ubuntu
- iOS開發之掃描二維碼iOS
- Android----二維碼掃描、生成、相簿識別(16號)Android
- Android 基於zxing的二維碼掃描功能的簡單實現及優化Android優化
- 基於ZXing Android實現生成二維碼圖片和相機掃描二維碼圖片即時解碼的功能Android
- ios打包 蒲公英生成二維碼掃描下載iOS
- zxing第三方框架實現二維碼掃描以及生成框架
- cocos2dx-lua在ios上實現生成及掃描二維碼iOS
- iOS開發-原生二維碼的掃描和生成iOS
- WebSocket實現app掃描二維碼登入以及ws應用進行負載均衡?WebAPP負載
- Android 基於Zxing掃碼實現(三)、從相簿選取二維碼Android
- 簡單易用的二維碼掃描工具:QR Capture for MacAPTMac
- iOS 掃描二維碼(ZBarSDK)遇到的坑~解決方法iOS
- 最完善,快速的 react-native 二維碼掃描React
- 使用 Swift 建立簡單的二維碼掃描應用Swift
- 基於ZXingAndroid實現生成二維碼圖片和相機掃描二維碼圖片即時解碼的功能Android
- XQRCode 一個非常方便實用的二維碼掃描、解析、生成庫
- 使用HTML5實現掃描PC二維碼且觸發WAP端上傳資源功能HTML
- PHP掃描圖片轉點陣 二維碼轉點陣PHP
- Win10系統怎麼識別掃描二維碼Win10
- 使用ionic2開發一個二維碼掃描功能
- Swift4如何掃描二維碼瞭解一下Swift
- 自定義 React Native 二維碼掃描元件(簡單,易用!)React Native元件
- 一對一直播系統開發如何在頁面內實現掃描二維碼功能
- 網帖稱有人掃描二維碼被騙幾十萬 專家稱技術上難實現
- Android | 教你如何開發掃二維碼功能Android
- 微信小程式掃描普通二維碼開啟小程式的方法微信小程式