美文网首页
照相的权限判断

照相的权限判断

作者: 谜之龙 | 来源:发表于2018-01-10 15:33 被阅读0次

相机

public  static  boolean isCameraUseable() {
    boolean canUse =true;
    Camera mCamera =null;
    try{
        mCamera = Camera.open();
        // setParameters 是针对魅族MX5。MX5通过Camera.open()拿到的Camera对象不为null
        Camera.Parameters mParameters = mCamera.getParameters();
        mCamera.setParameters(mParameters);
    }catch(Exception e) {
        canUse =false;
    }
    if(mCamera !=null) {
        mCamera.release();
    }
    return canUse;
}

//另一种方法

@TargetApi(Build.VERSION_CODES.M)  
private void getPermission() {  
if (ContextCompat.checkSelfPermission(UploadPicActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {  
    //申请CAMERA的权限  
    requestPermissions(new String[]{Manifest.permission.CAMERA}, MY_PERMISSIONS_REQUEST_READ_CONTACTS);  
} else {  
    photo();  
    pop.dismiss();  
        ll_popup.clearAnimation();  
}  
}  
权限返回结果
 @Override  
 public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {  
super.onRequestPermissionsResult(requestCode, permissions, grantResults);  
switch (requestCode) {  
    case MY_PERMISSIONS_REQUEST_READ_CONTACTS:  
        if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {  
           photo();  
        } else {  
            Toast.makeText(UploadPicActivity.this, "请打开相机权限", Toast.LENGTH_LONG).show();  
        }  
        break;  
    }  
  }  

//一个工具类

import android.Manifest;  
import android.annotation.TargetApi;  
import android.app.Activity;  
import android.content.Context;  
import android.content.pm.PackageManager;  
import android.os.Build;  
 import android.support.v4.app.ActivityCompat;  
  import android.support.v4.app.Fragment;  
  import android.support.v4.content.ContextCompat;  
  import android.util.Log;    
  import java.util.ArrayList;  
   import java.util.List;  

/**  
 * Created by lzq on 2016/6/30.  
 */  
public class PermissionUtils {  
static Activity context;  

public PermissionUtils(Activity context) {  
    this.context=context;  
}  

public static final int MY_PERMISSIONS_REQUEST_CALL_PHONE=200;  
public static void needPermission(int requestCode)  
{  
    if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M){  
        return;  
    }  
    requestAllPermissions(requestCode);  
}  
private static void requestAllPermissions( int requestCode)  
{  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.CALL_PHONE, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.CAMERA, Manifest.permission.READ_CONTACTS, Manifest.permission.GET_ACCOUNTS, Manifest.permission.ACCESS_FINE_LOCATION},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  

}  
private static boolean requesCallPhonePermissions( int requestCode)  
{  
    if (ContextCompat.checkSelfPermission(context,  
            Manifest.permission.CALL_PHONE)  
            != PackageManager.PERMISSION_GRANTED)  
    {//没有权限  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.CALL_PHONE},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  
        return false;  
    } else  
    {  
        return true;  
    }  
}  

private static boolean requestReadSDCardPermissions( int requestCode)  
{  
    if (ContextCompat.checkSelfPermission(context,  
            Manifest.permission.READ_EXTERNAL_STORAGE)  
            != PackageManager.PERMISSION_GRANTED)  
    {//没有权限  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.READ_EXTERNAL_STORAGE},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  
        return false;  
    } else  
    {  
        return true;  
    }  
}  
private static boolean requestCamerPermissions( int requestCode)  
{  
    if (ContextCompat.checkSelfPermission(context,  
            Manifest.permission.CAMERA)  
            != PackageManager.PERMISSION_GRANTED)  
    {//没有权限  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.CAMERA},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  
        return false;  
    } else  
    {  
        return true;  
    }  
}  
private static boolean requestReadConstantPermissions( int requestCode)  
{  
    if (ContextCompat.checkSelfPermission(context,  
            Manifest.permission.READ_CONTACTS)  
            != PackageManager.PERMISSION_GRANTED)  
    {//没有权限  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.READ_CONTACTS},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  
        return false;  
    } else  
    {  
        return true;  
    }  
}  
private static boolean requestGET_ACCOUNTSPermissions( int requestCode)  
{  
    if (ContextCompat.checkSelfPermission(context,  
            Manifest.permission.GET_ACCOUNTS)  
            != PackageManager.PERMISSION_GRANTED)  
    {//没有权限  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.GET_ACCOUNTS},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  
        return false;  
    } else  
    {  
        return true;  
    }  
}  
private static boolean requestLocationPermissions( int requestCode)  
{  
    if (ContextCompat.checkSelfPermission(context,  
            Manifest.permission.ACCESS_FINE_LOCATION)  
            != PackageManager.PERMISSION_GRANTED)  
    {//没有权限  
        ActivityCompat.requestPermissions(context,  
                new String[]{Manifest.permission.ACCESS_FINE_LOCATION},  
                MY_PERMISSIONS_REQUEST_CALL_PHONE);  
        return false;  
    } else  
    {  
        return true;  
    }  
}  
}  

我是在app第一次进入的时候,先判断android的版本,如果大于6.0,不管用户是否给与权限,都调用申请常用权限,防止因为用户不给于权限而导致崩溃,如:
存储,电话,相机,通讯录,位置等。防止用户

if (Build.VERSION.SDK_INT>= Build.VERSION_CODES.M){  
new PermissionUtils(this).needPermission(200);  
}  

然后在接下来的需要调用这些权限时调用相对应的方法,如打电话时调用
requesCallPhonePermissions(200),参数随便传入。注意:此处的200 要与onRequestPermissionsResult中的参数requestCode一致。

    public void onRequestPermissionsResult(int requestCode,  
                          String permissions[], int[] grantResults) {  
    switch (requestCode) {  
  case 200: {  
     // If request is cancelled, the result arrays are empty.  
     if (grantResults.length > 0  
           && grantResults[0] == PackageManager.PERMISSION_GRANTED) {  

        // permission was granted, yay! Do the  
        // contacts-related task you need to do.  
    //同意给与权限  可以再此处调用拍照  
        Log.i("用户同意权限", "user granted the permission!");  

     } else {  

        // permission denied, boo! Disable the  
        // f用户不同意 可以给一些友好的提示  
        Log.i("用户不同意权限", "user denied the permission!");  
     }  
     return;  
  }  

  // other 'case' lines to check for other  
  // permissions this app might request  
 }  
 }  

相关文章

网友评论

      本文标题:照相的权限判断

      本文链接:https://www.haomeiwen.com/subject/nqponxtx.html