前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一个util带你解决动态申请权限问题(2018.8重编版)

一个util带你解决动态申请权限问题(2018.8重编版)

作者头像
sean_yang
发布2018-09-04 11:07:27
5500
发布2018-09-04 11:07:27
举报
文章被收录于专栏:Sorrower的专栏

前言

Android从API23开始, 也就是Android6.0起, 有了一个动态申请权限的概念. 这里就分享给大家一个util来解决这个问题. 不过在代码之前我还有些要说的:

动态申请权限

第一次安装应用进入之后会要权限. 一般来说, 这个要权限都会在广告页之后, 进主页面之前, 因为如果不在进入之前拿到权限, 肯定有些功能就跑不动了, 仔细看图片后面的界面, 只显示了根路径, 下面为空. 那再给一张点击了allow重进的图片:

拿到权限后


使用

直接上代码:

代码语言:javascript
复制
public class PermissionsUtil {
    // 读写权限
    private static final int REQUEST_EXTERNAL_STORAGE = 1;
    private static String[] PERMISSIONS_STORAGE = {
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.WRITE_EXTERNAL_STORAGE};

    /**
     * 检查应用程序是否有权写入设备存储
     * 如果应用程序没有权限,则会提示用户授予权限
     *
     * @param activity 所在的Activity
     */
    public static void verifyStoragePermissions(Activity activity) {
        // 检查应用程序是否有权写入设备存储
        int permission = ActivityCompat.checkSelfPermission(activity,
                Manifest.permission.WRITE_EXTERNAL_STORAGE);

        if (permission != PackageManager.PERMISSION_GRANTED) {
            // 如果应用程序没有权限,则会提示用户授予权限
            ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE,
                    REQUEST_EXTERNAL_STORAGE);
        }
    }
}

然后在前言说的位置:

代码语言:javascript
复制
verifyStoragePermissions(this);
代码语言:javascript
复制
/**
 * @param requestCode  请求码
 * @param permissions  权限
 * @param grantResults 授予结果
 */
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    switch (requestCode) {
        case 1:
            if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                LogUtil.i(getResources().getString(R.string.succeed));
            } else {
                Toast.makeText(this, getResources().getString(R.string.failed), Toast.LENGTH_LONG).show();
                finish();
            }
            break;
        default:
    }
}

当然了, 基础的权限申请别忘了, 在AndroidManifest.xml

代码语言:javascript
复制
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档