android 相机权限检查

android 相机权限检查PackageManag getActivity getPackageMa if pm checkPermiss android permission CAMERA com zxc criminalinte PackageManag PERMISSION GRANTED android28 检查相机权限

PackageManager pm = getActivity().getPackageManager();
              if(! (pm.checkPermission("android.permission.CAMERA", "com.zxc.criminalintent")==PackageManager.PERMISSION_GRANTED ) )                       
              {
              Intent i = new Intent(getActivity(), CrimeCameraActivity.class);
              CrimeFragment.this.startActivityForResult(i, CrimeFragment.this.REQUEST_PHOTO);
              }
              else
              {
              Toast.makeText(CrimeFragment.this.getActivity(), 
                      "请在设置中打开相机权限", Toast.LENGTH_SHORT)
                      .show();

              }

   @TargetApi(9)
    @Override
    public void onResume() {
        super.onResume();
        Log.i(TAG, "camera fragment resuming   " );
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.GINGERBREAD) { 
            try {
            mCamera = Camera.open(0);
                
          } catch (Exception exception) {
              Log.e(TAG, "Error setting up preview display", exception);
              if (mCamera!=null)
      {
      mCamera.release();
      }
              AlertDialog.Builder builder = new AlertDialog.Builder(CrimeCameraFragment.this.getActivity());
              builder.setTitle("提示");
              builder.setMessage("请检查相机权限设置");
              builder.setCancelable(false);
              builder.setPositiveButton("确定",new OnClickListener()
              {


@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
CrimeCameraFragment.this.getActivity().finish();
}
             
              });
              builder.create().show();
              return ;
          }
//         try{
//        
//          mCamera = Camera.open(Camera.getNumberOfCameras()-1);
//         //  Camera.Parameters parameter = mCamera.getParameters();
//         //  mCamera.setParameters(parameter);
//          }
//          catch(RuntimeException e){
//        
//           //System.out.println("open()方法有问题");
//          
//           Toast.makeText(this.getActivity(), 
//                       "请在设置中打开相机权限", Toast.LENGTH_SHORT)
//                       .show(); 
//          }
            //mCamera = Camera.open(0);
      } else {
     try {
          mCamera = Camera.open();
              
        } catch (Exception exception) {
            Log.e(TAG, "Error setting up preview display", exception);
            if (mCamera!=null)
    {
    mCamera.release();
    }
            AlertDialog.Builder builder = new AlertDialog.Builder(CrimeCameraFragment.this.getActivity());
            builder.setTitle("提示");
            builder.setMessage("请检查相机权限设置");
            builder.setCancelable(false);
            builder.setPositiveButton("确定",new OnClickListener()
            {


@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
dialog.cancel();
CrimeCameraFragment.this.getActivity().finish();
}
           
            });
            builder.create().show();
            return ;
        }
//       try{
//      mCamera = Camera.open();
//     // Camera.Parameters parameter = mCamera.getParameters();
//   // mCamera.setParameters(parameter);
//      }
//      catch(RuntimeException e){
//    
//      // System.out.println("open()方法有问题");
//     Toast.makeText(this.getActivity(), 
//                     "请在设置中打开相机权限", Toast.LENGTH_SHORT)
//                     .show(); 
//      }
          //mCamera = Camera.open();
      }
    }

Android6.0以下系统判断相机权限

 

 关于Android权限检测问题 在6.0系统以后由于使用的是动态权限 很好判断 关键是6.0之前的系统发现没有可用的API来获取相应的权限是否被用户禁用或者允许使用。

其中有相应的 checkPermission()方法  但是这些方法只是判断清单文件中是否注册过此类权限。用户的操作是获取不到的。

[java]  view plain  copy
 
  1.                   
  2. PackageManager packageManager = getPackageManager();  
  3. int permission = packageManager.checkPermission("android.permission.CAMERA""your packageName");  
  4. if(PackageManager.PERMISSION_GRANTED == permission){  
  5.     //有这个权限   
  6. }else {  
  7.     //没有这个权限  
  8. }  


那我们如何在6.0以下的系统检测权限呢?
目前的方法是使用 try{ } catch() {} 的方式 :

[java]  view plain  copy
 
  1. / 
  2. *  返回true 表示可以使用  返回false表示不可以使用 
  3. */  
  4. public boolean cameraIsCanUse() {  
  5.         boolean isCanUse = true;  
  6.         Camera mCamera = null;  
  7.         try {  
  8.             mCamera = Camera.open();  
  9.             Camera.Parameters mParameters = mCamera.getParameters(); //针对魅族手机  
  10.             mCamera.setParameters(mParameters);  
  11.         } catch (Exception e) {  
  12.             isCanUse = false;  
  13.         }  
  14.   
  15.         if (mCamera != null) {  
  16.             try {  
  17.                 mCamera.release();  
  18.             } catch (Exception e) {  
  19.                 e.printStackTrace();  
  20.                 return isCanUse;  
  21.             }  
  22.         }  
  23.         return isCanUse;  
  24.     }  


 
  

这种方式目前也是一种折中的方法。


今天的文章 android 相机权限检查分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2024-12-05 22:30
下一篇 2024-12-05 22:17

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/78497.html