Android 6.0运行时申请权限

最近在做视频会议的项目,项目中遇到一个问题,部分手机的照相和录音权限在运行时无法调起,参考了一些类似的项目,发现他们都是在运行时主动申请所需权限,于是照此实施,[主要参考](适用于android6.0)(http://www.2cto.com/kf/201604/503758.html)在这里记录方便日后查看。
我选择的是Dexter开源项目,

实现很简单如下:

在项目中添加依赖compile 'com.karumi:dexter:2.2.2'
在application中 进行初始化Dexter.initialize(this);

因为我要申请录音和照相两个权限,所以我实现了MultiplePermissionsListener接口

public class SampleMultiplePermissionListener implements MultiplePermissionsListener {

    private final LoginActivity activity;

    public SampleMultiplePermissionListener(LoginActivity activity) {
        this.activity = activity;
    }

    @Override public void onPermissionsChecked(MultiplePermissionsReport report) {

    }

    @Override public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions,
                                                             PermissionToken token) {
        activity.showPermissionRationale(token);
    }
}

Acitivity中showPermissionRationale(token)如下,

 @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
    public void showPermissionRationale(final PermissionToken token) {
        new AlertDialog.Builder(this).setTitle(R.string.permission_rationale_title)
                .setMessage(R.string.permission_rationale_message)
                .setNegativeButton(android.R.string.cancel, new DialogInterface.OnClickListener() {
                    @Override public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        token.cancelPermissionRequest();
                    }
                })
                .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
                    @Override public void onClick(DialogInterface dialog, int which) {
                        dialog.dismiss();
                        token.continuePermissionRequest();
                    }
                })
                .setOnDismissListener(new DialogInterface.OnDismissListener() {
                    @Override public void onDismiss(DialogInterface dialog) {
                        token.cancelPermissionRequest();
                    }
                })
                .show();
    }

最后在想要申请权限的activity的onCreate()中添加:


Dexter.initialize(this);

createPermissionListeners();

Dexter.checkPermissions(allPermissionListenter, android.Manifest.permission.CAMERA,android.Manifest.permission.RECORD_AUDIO);
private void  createPermissionListeners(){

        MultiplePermissionsListener feedbackViewMultiplePermissionListener =
                new SampleMultiplePermissionListener(this);

        allPermissionListenter =
                new CompositeMultiplePermissionsListener(feedbackViewMultiplePermissionListener);
    }

运行项目, 跳转到对应Activity权限申请对话框弹出, 完成!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值