Android程序第一步,申请权限
2019-07-27 本文已影响0人
雁度寒崖
由于在Android6.0之后Google推出了运行时权限,所以作为一个拥有良好品德的软件开发者,我们需要明白哪些向用户申请的权限是必须的,哪些是某个功能才需要的权限,而不是一次性将所有权限都向用户索要,否则就不让用户使用。
例如qq:
刚打开qq:
image如果拒绝
image此时如果点击取消,会直接退出应用!再次打开还会提示权限问题。
所以我们去应用权限里面打开它。
打开后,还有一项授权,就是电话权限,qq也会给我们提示,我们也给他授权。
都授权后qq就可以正常使用了
可我们发现其实qq的权限里面还有其他几项别的。
image麦克风可以让我们发语音消息,也可以打qq电话,如果你说我不用,那好,你完全可以不给它权限。
通讯录可以同步通讯录中手机号是谁的qq,可你说不用,那好,不给他权限。
位置信息?可以位置共享,发位置,qq空间里说说显示发的地点。
相机——拍照、扫一扫。
短信?这个还真不知道......好像真没啥用。
这些权限会在你用到需要该权限的功能时才提示授权,那么是怎么做到的呢?
这是写功能的时候,我习惯的写法:
if(ContextCompat.checkSelfPermission(/*Context*/, /*具体权限*/) != PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions( /*Context*/ , new String[]{ /*具体权限*/ } , /*请求码(int类型)*/);
}
else {
/*要执行的任务*/
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
/*授权结果会封装到grantResults里面*/
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode){
case /*对应的请求码*/:
if(grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
/*权限被允许要执行的任务*/
}
else{
/*权限被拒绝后要执行的操作*/
}
break;
default:
}
}