最近做到扫描二维码的功能,于是便在网上找了下,有一个ZxingScanner.jar的类可以用,很是方便,代码也就几行,测试过可以用 附上一位用户资源地址http://download.csdn.net/detail/lh19890624/6923219。
我在自己手机上测试都没有为题,好了接下来问题来了,我一位同事手机是6.0的,据说6.0系统权限管理需要用户手动来改,他打开我的应用使用相机的时候无法打开相机,郁闷了,我4.4上明明可以的,我一查,看来是没有做好权限控制,于是我参考网上大牛们的关于这方面的说明, 改了些代码,上面一段是使用中的,根据版本等级,筛选出不小于23的版本,并且询问用户是否撒开相机,这个界面是系统给的,不用手动添加,在用户选择了相机后,通过result那个方法回调,根据用户的选择做出相应的判断,流程非常简单,代码也就几行, ,整个下来,并不会出现什么大问题。
KLog.e("error","进来这里1"); if (Build.VERSION.SDK_INT >= 23) { // KLog.e("error","进来这里2"); int checkCallPhonePermission = ContextCompat.checkSelfPermission(Coupon_mini.this, Manifest.permission.CAMERA); if(checkCallPhonePermission != PackageManager.PERMISSION_GRANTED){ // KLog.e("error","进来这里3"); ActivityCompat.requestPermissions(Coupon_mini.this,new String[]{Manifest.permission.CAMERA},REQUEST_CODE_ASK_CALL_PHONE); return; }else{ // KLog.e("error","进来这里4"); //上面已经写好的拨号方法 creame(); } } else { // KLog.e("error","进来这里5"); //上面已经写好的拨号方法 creame(); }
@Override public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { switch (requestCode) { case REQUEST_CODE_ASK_CALL_PHONE: if (grantResults[0] == PackageManager.PERMISSION_GRANTED) { // KLog.e("error","进来这里6"); // Permission Granted creame(); } else { // KLog.e("error","进来这里7"); // Permission Denied Toast.makeText(Coupon_mini.this, "相机功能被禁止", Toast.LENGTH_SHORT).show(); } break; default: super.onRequestPermissionsResult(requestCode, permissions, grantResults); }