Android6.0动态申请权限

/*从Android 6.0开始 权限 有一部分就不能正常申请。
我们必须动态申请权限,不然我们的软件会出问题。
我想聪明的你已经看到了。
我们 代码笔记App 也是 一开始打开它就会弹出一个窗口 什么储存啊?之类的
 但是我们回想过来这些需要一个一个判断吗? 当然不需要(›´ω`‹)
*/
//判断权限是否系统给予了
if (ContextCompat.checkSelfPermission(thisActivity,Manifest.permission.READ_CONTACTS)
	 != PackageManager.PERMISSION_GRANTED) {
	 
}else{
    //
}
/*
这里涉及到一个API,ContextCompat.checkSelfPermission,主要用于检测某个权限是否已经被授予,方法返回值为PackageManager.PERMISSION_DENIED或者PackageManager.PERMISSION_GRANTED。
当返回DENIED就需要进行申请授权了。 
*/

// 如果,他返回DENIED 那咱们就可以开始申请了
ActivityCompat.requestPermissions(thisActivity,
                new String[]{Manifest.permission.READ_CONTACTS},
                MY_PERMISSIONS_REQUEST_READ_CONTACTS);
/*该方法是异步的,第一个参数是Context;
/*第二个参数是需要申请的权限的字符串数组;
/*第三个参数为requestCode,主要用于回调的时候检测。
/*可以从方法名requestPermissions以及第二个参数看出,
/*	是支持一次性申请多个权限的,系统会通过对话框逐一询问用户是否授权。 
*/
// 好了,我们申请权限已经弄了  。但是我们不可能再让用户退出,然后再进来。用这样检测,是否系统几率软件的权限,会使用户很反感。让我们来设置一下监听吧!
@Override
public void onRequestPermissionsResult(int requestCode,
        String permissions[], int[] grantResults) {
    switch (requestCode) {
        case MY_PERMISSIONS_REQUEST_READ_CONTACTS: {
            // If request is cancelled, the result arrays are empty.
            if (grantResults.length > 0
                && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

                // permission was granted, yay! Do the
                // contacts-related task you need to do.

            } else {

                // permission denied, boo! Disable the
                // functionality that depends on this permission.
            }
            return;
        }
    }
}
/**
/*	
/*	ok,对于权限的申请结果,首先验证requestCode定位到你的申请,然后验证grantResults对应于申请的结果
/*这里的数组对应于申请时的第二个权限字符串数组。
/*如果你同时申请两个权限,那么grantResults的length就为2,分别记录你两个权限的申请结果。
/*如果申请成功,就可以做你的事情了~
/*	
/*	申请失败就退出 
/*	
/*	
/*	
/*	
/*	
/*	*/

梦雪

专注于AIDE教程分享

留下你的评论

*评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

相关推荐