如果手机版本超过6.0,则需要添加动态权限
1.首先我们需要添加依赖
repositories {
mavenCentral()
maven {
url "http://dl.bintray.com/journeyapps/maven"
}
}
implementation 'com.journeyapps:zxing-android-embedded:2.0.1@aar'
implementation 'com.journeyapps:zxing-android-legacy:2.0.1@aar'
implementation 'com.journeyapps:zxing-android-integration:2.0.1@aar'
implementation 'com.google.zxing:core:3.0.1'
2.需要在清单文件中添加权限
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.VIBRATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
3.设置自己的xml视图文件
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/button1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="点击扫描二维码"/>
</android.support.constraint.ConstraintLayout>
4.在自己的Activity中进行代码处理(请参考如下代码)
Button button1 = findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//判断相机权限是打开
//0代表打开权限,-1代表没有打开权限
if(ActivityCompat.checkSelfPermission(MainActivity.this,Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
{
//如果没有打开权限(-1),就去获取相机打开权限
ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.CAMERA},100);
}
else
{
//如果已经打开权限则直接执行扫描二维码
IntentIntegrator integrator = new IntentIntegrator(MainActivity.this);
integrator.initiateScan();
}
}
});
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
//获取权限前提需要判断请求码
if(requestCode == 100)
{
//权限下标判断 权限打开
if(grantResults[0] == PackageManager.PERMISSION_GRANTED)
{
Toast.makeText(this, "权限已打开", Toast.LENGTH_SHORT).show();
}
//没有打开权限则直接关闭
else
{
finish();
}
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
IntentResult intentResult = IntentIntegrator.parseActivityResult(requestCode, resultCode, data);
if(intentResult != null)
{
String contents = intentResult.getContents();
//变量contents就是二维码解码后的信息
Toast.makeText(this, "扫码成功得到数据"+contents, Toast.LENGTH_SHORT).show();
}
}
如有疑问可在博客下方留言
谢谢浏览