• Android 6.0 权限申请


    google官方例子: https://github.com/googlesamples/android-RuntimePermissions

    Android 6.0在我们原有的AndroidManifest.xml声明权限的基础上,又新增了运行时权限动态检测。

    以下权限都需要在运行时判断:

    身体传感器,日历,摄像头,通讯录,地理位置,麦克风,电话,短信,存储空间

    运行时权限处理

    Android6.0系统默认为targetSdkVersion小于23的应用默认授予了所申请的所有权限,所以如果你以前的APP设置的targetSdkVersion低于23,在运行时也不会崩溃,但这也只是一个临时的救急策略,用户还是可以在设置中取消授予的权限。

    检查并申请权限
    我们需要在用到权限的地方,每次都检查是否APP已经拥有权限,比如我们有一个下载功能,需要写SD卡的权限,我们在写入之前检查是否有WRITE_EXTERNAL_STORAGE权限,没有则申请权限

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
                  != PackageManager.PERMISSION_GRANTED) {
              //申请WRITE_EXTERNAL_STORAGE权限
              ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                      WRITE_EXTERNAL_STORAGE_REQUEST_CODE);
          }

    请求权限后,系统会弹出请求权限的Dialog

    用户选择允许或需要后,会回调onRequestPermissionsResult方法, 该方法类似于onActivityResult

      @Override
      public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
          super.onRequestPermissionsResult(requestCode, permissions, grantResults);
          doNext(requestCode,grantResults);
      }

    我们接着需要根据requestCode和grantResults(授权结果)做相应的后续处理

    private void doNext(int requestCode, int[] grantResults) {
          if (requestCode == WRITE_EXTERNAL_STORAGE_REQUEST_CODE) {
              if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                  // Permission Granted
              } else {
                  // Permission Denied
              }
          }
      }
  • 相关阅读:
    用C#发邮件
    .Net WinForm datagridview中无法输入中文总结
    6、linux上安装kafka
    10、linux上安装hive
    8、linux上安装hbase
    4、linux 上安装mysql
    3、hadoop的分布式安装
    12、Ambari 环境搭建
    mybtais获取插入数据的主键id
    mybatis高级映射
  • 原文地址:https://www.cnblogs.com/wenhui92/p/6242674.html
Copyright © 2020-2023  润新知