依赖框架
项目地址:https://github.com/yanzhenjie/AndPermission
工具类:

package com.nbniu.app.common.tool;import android.content.Context;import android.os.Build;import com.nbniu.app.common.R;import com.qmuiteam.qmui.widget.dialog.QMUIDialog;import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;import com.yanzhenjie.permission.Action;import com.yanzhenjie.permission.AndPermission;import com.yanzhenjie.permission.Setting;import java.util.List;/** * 文件描述 : * 创建人员 : 幽默GUY * 创建日期 : 2018/7/16 0016 * 创建时间 : 0:57 * 最后修改 : */public class PermissionTool {    public static void requestPermission(final Context context, final PermissionQuestListener listener, final String... permissionGroup) {        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {            if (AndPermission.hasPermissions(context, permissionGroup)) {            if (listener != null)                listener.onGranted();                return;            }            // 没有权限,申请权限            AndPermission.with(context)                    .runtime()                    .permission(permissionGroup)                    .onGranted(new Action<List<String>>() {                        @Override                        public void onAction(List<String> data) {                            if (listener != null)                                listener.onGranted();                        }                    })                    .onDenied(new Action<List<String>>() {                        @Override                        public void onAction(final List<String> data) {                            if (AndPermission.hasAlwaysDeniedPermission(context, permissionGroup)) {                            //替换为自己的对话框                                new QMUIDialog.MessageDialogBuilder(context)                                        .setTitle("权限申请")                                        .setMessage(listener.onAlwaysDeniedData())                                        .addAction("取消", new QMUIDialogAction.ActionListener() {                                            @Override                                            public void onClick(QMUIDialog dialog, int index) {                                                dialog.dismiss();                                                if (listener != null)                                                    listener.onDenied(data);                                            }                                        })                                        .addAction("确定", new QMUIDialogAction.ActionListener() {                                            @Override                                            public void onClick(QMUIDialog dialog, int index) {                                                dialog.dismiss();                                                AndPermission.with(context)                                                        .runtime()                                                        .setting()                                                        .onComeback(new Setting.Action() {                                                            @Override                                                            public void onAction() {                                                                requestPermission(context, listener, permissionGroup);                                                            }                                                        })                                                        .start();                                            }                                        })                                        .setCancelable(false)                                        .setCanceledOnTouchOutside(false)                                        .create(R.style.DialogTheme2).show();                            } else {                                //拒绝后重复请求                                requestPermission(context, listener, permissionGroup);                            }                        }                    })                    .start();        } else {        if (listener != null)            listener.onGranted();        }    }    /**     * 权限申请监听     */    public interface PermissionQuestListener{        void onGranted(); //允许获得权限后操作        void onDenied(List<String> data); //拒绝权限后操作        String onAlwaysDeniedData(); //拒绝后不再提示信息    }}

使用示例:

PermissionTool.requestPermission(LocationActivity.this, new PermissionTool.PermissionQuestListener() {                    @Override                    public void onGranted() {                        mLocationClient.start();                    }                    @Override                    public void onDenied(List<String> data) {                       Toast.makeText(context, "无法获取当前位置信息", Toast.LENGTH_SHORT).show();                    }                    @Override                    public String onAlwaysDeniedData() {                        return "我们需要获得位置权限,是否前往设置?";                    }                }, Permission.Group.LOCATION);

更多相关文章

  1. Android开关机代码
  2. Ijkplayer视频播放
  3. Android中通过代码检测系统是否有root权限
  4. Android(安卓)DownloadManager下载并安装apk
  5. Android(安卓)10 文件读写权限申请
  6. Android代码实现飞行模式的打开
  7. android 获得当前活动的Acticity
  8. 【notification】Android(安卓)中创建震动通知
  9. android 两个apk之间恭喜数据SharedPreferences

随机推荐

  1. Android的文件操作
  2. Android(安卓)Selector全解
  3. RN系列:Android原生与RN如何交互通信
  4. Android(安卓)技术专题系列之一 -- Android
  5. Android(安卓)ndk r4b开发环境搭建
  6. Android开发UI之android:gravity / andro
  7. 三、android百度地图覆盖物(android百度
  8. android系统中自带的图标大全
  9. android textview 行间距
  10. 关于Android开发的editText控件怎…