美文网首页
Android程序第一步,申请权限

Android程序第一步,申请权限

作者: 雁度寒崖 | 来源:发表于2019-07-27 11:34 被阅读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:
             }
         }
    

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

    相关文章

      网友评论

          本文标题:Android程序第一步,申请权限

          本文链接:https://www.haomeiwen.com/subject/dpwsrctx.html