【已解决】Android 6.0权限设置,导致程序崩溃

来源:互联网 发布:淘宝如何手动上传 编辑:程序博客网 时间:2024/05/22 03:27

Android 6.0发布之后,谈到权限问题,为了保护用户更多的隐私,每次调用权限的时候,都要给用户提示,方便了用户,程序员们可是有的忙了,不过问题已解决。

解决如下:写一个工具类

/** * 权限类 * Created by wangguolion 2015/12/3. */public class RequestPermissionUtil {    public RequestPermissionUtil() {    }    public static RequestPermissionUtil requestPermissionUtil;    public static synchronized RequestPermissionUtil getRequestPermissionUtilInstance() {        if (requestPermissionUtil == null) {            requestPermissionUtil = new RequestPermissionUtil();        }        return requestPermissionUtil;    }    /**     * 电话权限     */    public static final int REQUEST_CALL_PHONE_PERMISSIONS = 1;    /**     * android.permission.CAMERA     */    /**     * 照相权限     */    public static final int REQUEST_CAMERA_PERMISSIONS = 2;     /**     * 读取相册权限     */    public static final int REQUEST_GALLERY_PERMISSIONS = 3;    /**     * 检测授权     *     * @param context     * @param ManifestPermission     * @param requestCode        请求吗     * @return true:已经授权   false没有授权     */  public boolean insertDummyContactWrapper(Activity context, String ManifestPermission, int requestCode) {        int hasWriteContactsPermission = 0;        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            hasWriteContactsPermission = context.checkSelfPermission(ManifestPermission);        }        if (hasWriteContactsPermission != PackageManager.PERMISSION_GRANTED)  {            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {                context.requestPermissions(new String[]{ManifestPermission},                        requestCode);            }            return false;        } else {            return true;        }    }}
在调用权限的时候:注意一定要对应你Manifest文件的权限

if(RequestPermissionUtil.getRequestPermissionUtilInstance().insertDummyContactWrapper(      this, Manifest.permission.CAMERA, RequestPermissionUtil.REQUEST_CAMERA_PERMISSIONS)){   //调用权限,具体代码就不写了,你的项目里有的}
当然还要处理一下拒绝或者同意权限逻辑(回调)
 @Override    public void onRequestPermissionsResult(int requestCode,                                           String permissions[], int[] grantResults) {        switch (requestCode) {            case RequestPermissionUtil.REQUEST_CALL_PHONE_PERMISSIONS:                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {                        //调用权限,代码根据需求写上,略...                    }                } else {                    //Toast一下:权限被拒绝,请检查权限                }                break;        }    }


这样,尽管你手机是6.0的,项目也不会崩溃了。



1 0
原创粉丝点击