|
1 | 1 | package me.sam.czxing; |
2 | 2 |
|
| 3 | +import android.Manifest; |
3 | 4 | import android.content.Intent; |
| 5 | +import android.content.pm.PackageManager; |
4 | 6 | import android.database.Cursor; |
5 | 7 | import android.graphics.Bitmap; |
6 | 8 | import android.graphics.BitmapFactory; |
|
19 | 21 | import androidx.appcompat.app.ActionBar; |
20 | 22 | import androidx.appcompat.app.AppCompatActivity; |
21 | 23 |
|
22 | | -import com.yanzhenjie.permission.Action; |
23 | | -import com.yanzhenjie.permission.AndPermission; |
24 | | -import com.yanzhenjie.permission.runtime.Permission; |
25 | | - |
26 | | -import java.util.List; |
27 | | - |
28 | 24 | import me.devilsen.czxing.code.BarcodeFormat; |
29 | 25 | import me.devilsen.czxing.code.BarcodeReader; |
30 | 26 | import me.devilsen.czxing.code.CodeResult; |
| 27 | +import me.devilsen.czxing.compat.ActivityCompat; |
| 28 | +import me.devilsen.czxing.compat.ContextCompat; |
31 | 29 | import me.devilsen.czxing.util.BarCodeUtil; |
32 | 30 | import me.devilsen.czxing.util.ScreenUtil; |
33 | 31 | import me.devilsen.czxing.util.SoundPoolUtil; |
|
43 | 41 | */ |
44 | 42 | public class CustomizeActivity extends AppCompatActivity implements View.OnClickListener, ScanListener { |
45 | 43 |
|
| 44 | + private static final int PERMISSIONS_REQUEST_CAMERA = 1; |
| 45 | + private static final int PERMISSIONS_REQUEST_STORAGE = 2; |
46 | 46 | private static final int CODE_SELECT_IMAGE = 100; |
47 | 47 |
|
48 | 48 | private ScanView mScanView; |
@@ -192,42 +192,43 @@ private void decodeImage(Intent intent) { |
192 | 192 | showResult(result.getText()); |
193 | 193 | } |
194 | 194 |
|
| 195 | + /** |
| 196 | + * 获取摄像头权限(实际测试中,使用第三方获取权限工具,可能造成摄像头打开失败) |
| 197 | + */ |
195 | 198 | private void requestCameraPermission() { |
196 | | - AndPermission.with(this) |
197 | | - .runtime() |
198 | | - .permission(Permission.Group.CAMERA) |
199 | | - .onGranted(new Action<List<String>>() { |
200 | | - @Override |
201 | | - public void onAction(List<String> data) { |
202 | | - |
203 | | - } |
204 | | - }) |
205 | | - .onDenied(new Action<List<String>>() { |
206 | | - @Override |
207 | | - public void onAction(List<String> data) { |
208 | | - |
209 | | - } |
210 | | - }) |
211 | | - .start(); |
| 199 | + if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) |
| 200 | + != PackageManager.PERMISSION_GRANTED) { |
| 201 | + ActivityCompat.requestPermissions(this, |
| 202 | + new String[]{Manifest.permission.CAMERA}, |
| 203 | + PERMISSIONS_REQUEST_CAMERA); |
| 204 | + } |
212 | 205 | } |
213 | 206 |
|
214 | 207 | private void requestStoragePermission() { |
215 | | - AndPermission.with(this) |
216 | | - .runtime() |
217 | | - .permission(Permission.Group.STORAGE) |
218 | | - .onGranted(new Action<List<String>>() { |
219 | | - @Override |
220 | | - public void onAction(List<String> data) { |
221 | | - Intent albumIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); |
222 | | - startActivityForResult(albumIntent, CODE_SELECT_IMAGE); |
223 | | - } |
224 | | - }) |
225 | | - .onDenied(new Action<List<String>>() { |
226 | | - @Override |
227 | | - public void onAction(List<String> data) { |
228 | | - |
229 | | - } |
230 | | - }) |
231 | | - .start(); |
| 208 | + if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE) |
| 209 | + != PackageManager.PERMISSION_GRANTED) { |
| 210 | + ActivityCompat.requestPermissions(this, |
| 211 | + new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, |
| 212 | + PERMISSIONS_REQUEST_STORAGE); |
| 213 | + } |
232 | 214 | } |
| 215 | + |
| 216 | + @Override |
| 217 | + public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { |
| 218 | + if (requestCode == PERMISSIONS_REQUEST_CAMERA) { |
| 219 | + if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { |
| 220 | + mScanView.openCamera(); |
| 221 | + mScanView.startScan(); |
| 222 | + } |
| 223 | + return; |
| 224 | + } else if (requestCode == PERMISSIONS_REQUEST_STORAGE) { |
| 225 | + if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { |
| 226 | + Intent albumIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI); |
| 227 | + startActivityForResult(albumIntent, CODE_SELECT_IMAGE); |
| 228 | + } |
| 229 | + return; |
| 230 | + } |
| 231 | + super.onRequestPermissionsResult(requestCode, permissions, grantResults); |
| 232 | + } |
| 233 | + |
233 | 234 | } |
0 commit comments