天天看点

安卓运行时权限

依赖库:

compile 'pub.devrel:easypermissions:0.2.0'

public class RuntimePermissionsActivity extends BaseNewActivity implements EasyPermissions.PermissionCallbacks {

    @Override

    protected int getLayoutResID() {

        return 0;

    }

    @Override

    protected void initViews() {

    }

    @Override

    protected void initData() {

        requestPermisions();

    }

    private static final int REQUEST_CODE_CAMERA = 1;

    private void requestPermisions() {

        String camera = Manifest.permission.CAMERA;

        if (EasyPermissions.hasPermissions(this, camera)) {

        } else {

            // Ask for one permission

            EasyPermissions.requestPermissions(this, "需要请求运行时权限",

                    REQUEST_CODE_CAMERA, camera);

        }

    }

    @Override

    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {//安卓api

        super.onRequestPermissionsResult(requestCode, permissions, grantResults);

        handleResult(requestCode, permissions, grantResults);

    }

    private void handleResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {

        EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this);

    }

    @Override

    public void onPermissionsGranted(int requestCode, List<String> perms) {//EasyPermissions框架的api

        switch (requestCode) {

            case REQUEST_CODE_CAMERA:

                //相机权限申请成功

                break;

        }

    }

    @Override

    public void onPermissionsDenied(int requestCode, List<String> perms) {//EasyPermissions框架的api

        switch (requestCode) {

            case REQUEST_CODE_CAMERA:

                //相机权限申请失败,弹出跳转系统权限设置界面

                new AppSettingsDialog.Builder(this, "当前App需要申请相机权限,需要打开设置页面么?")

                        .setTitle("权限申请")

                        .setPositiveButton("确认")

                        .setNegativeButton("取消", new DialogInterface.OnClickListener() {

                            @Override

                            public void onClick(DialogInterface dialog, int which) {

                            }

                        } )

                        .setRequestCode(REQUEST_PERMS)

                        .build()

                        .show();

                break;

        }

    }

}