Android程序第一步,申请权限

由于在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:
         }
     }

当然不要忘了在Manifest.xml中加入所需要的权限!!

你可能感兴趣的:(Android程序第一步,申请权限)