`
OliveExcel
  • 浏览: 71731 次
文章分类
社区版块
存档分类
最新评论

Android 6.0中的运行时权限控制

阅读更多

写了段代码, 无论如何无法正常执行:

File dir = Environment.getExternalStorageDirectory();
...
File[] children = dir.listFiles(); // children取出来是null

然后加了判断, 发现dir不可读:

File dir = Environment.getExternalStorageDirectory();
...
if (dir.canRead()) { // dir不可读
    File[] children = dir.listFiles();    ...
}

难道是没有在manifest注册权限? 不, 明明有WRITE_EXTERNAL_STORAGE...

 

然后放弃思考玩了局游戏, 回来想通了——这机器是Android 6.0版本, 除了manifest的权限, 还有个运行时权限(Requesting Permissions at Run Time). // 玩游戏果然醒脑

 

直接用代码说话:

1. 检查是否已经被赋予了相应的权限:

int result = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE); // 这是Context的方法

注意result是个int值, 从PackageManager.PERMISSION_GRANTED和PackageManager.PERMISSION_DENIED中取值.

 

2. 若未获取权限, 则申请权限:

final String[] permissionsToRequest = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
final int requestCode = 0;
requestPermissions(permissionsToRequest, requestCode); // 这是Activity的方法

上述代码执行后, 系统会弹出Dialog, 提示用户查看权限申请.

 

3. 用户操作完毕, 以下Activity方法将被回调:

public void onRequestPermissionsResult (int requestCode, String[] permissions, int[] grantResults)

在其中, 针对requestCode处理好即可.

 

4. 补充:

官方文档推荐在申请权限前, 考虑是否需要针对权限申请, 向用户作出说明(比如说本游戏为毛要读您的联系人). 同时Activity提供了这个接口的原型:

public boolean shouldShowRequestPermissionRationale (String permission)
分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    Android6.0运行时权限框架封装

    "Android6.0运行时权限框架封装"是指一种开发策略,它帮助开发者更方便地处理这些新的权限请求。通过封装,开发者可以创建一个通用的库或者模块,简化代码,使得在不同地方请求权限时,只需调用统一的接口即可。这样...

    Android M(Android 6.0)运行时权限开发详细解析

    在Android M(Android 6.0)中,系统引入了重要的安全更新——运行时权限(Runtime Permissions)。这一改变显著增强了用户对应用权限的控制,使得应用程序在安装后首次需要使用特定敏感权限时,才会请求用户的许可...

    Android 6.0运行时权限处理与封装(一)

    这篇博客“Android 6.0运行时权限处理与封装(一)”深入探讨了这个重要的话题,下面将详细阐述相关知识点。 一、运行时权限简介 在Android 6.0之前,应用在安装时会一次性获取所有所需权限,而运行时权限模式改变...

    Android 6.0运行时权限Demo

    本Demo是针对Android 6.0运行时权限的一个实例,帮助开发者理解并实践这一新特性。 在Android 5.1及更早版本中,应用在安装时会一次性获取所有所需权限,用户在安装时只能接受或拒绝整个应用。然而,Android 6.0...

    Android6.0权限DEMO

    在Android系统的发展历程中,Android 6.0(Marshmallow)引入了一项重大改变,即运行时权限(Runtime Permissions)机制。这个改变显著地影响了应用程序如何处理用户权限,特别是对于那些需要敏感权限如访问联系人、...

    Android 6.0运行时权限处理

    在Android系统的发展历程中,Android 6.0(Marshmallow)引入了一项重大变更,即运行时权限(Runtime Permissions)。这一变化对应用的权限管理带来了根本性的改变,旨在提高用户对隐私控制的感知和能力。在之前的...

    Android6.0API中文手册CHM版

    1. **权限管理系统**:在Android 6.0中,权限管理进行了重大改革,引入了运行时权限模型。应用不再在安装时获得所有请求的权限,而是需要在运行时向用户请求权限,用户可以选择授予或拒绝。这对开发者来说意味着需要...

    Android6.0权限处理 示例

    在`Android6.0 权限处理.md`文件中,详细记录了这个Demo的实现步骤和代码示例,包括如何初始化RxPermissions,何时何地请求权限,以及如何处理权限结果。而`PermissionHandler`可能是示例代码中的一个关键类,负责...

    Android-Android6.0系统中权限问题调用

    1. **运行时权限**:在Android 6.0及更高版本中,应用程序必须在需要使用特定敏感权限时请求用户的许可。这些权限包括访问联系人、位置、摄像头等。如果用户拒绝了权限,应用程序需要处理这种情况,可能需要提供合理...

    Android6.0运行时权限Demo

    `Android6.0运行时权限Demo`是一个示例项目,用于演示如何在新权限模型下处理权限请求。这个项目包括以下几个关键部分: 1. **未封装原生API申请权限**:在不使用任何外部库的情况下,开发者可以直接调用Android ...

    Android6.0运行权限封装,一句代码实现

    一、Android 6.0运行时权限机制 在Android 6.0之前,用户在安装应用时会一次性授予所有权限,而在6.0之后,系统会根据应用的功能需求,在运行时向用户请求权限。这样,用户可以更精确地控制哪些权限应用可以使用,...

    android 6.0权限动态申请DEMO

    1. **运行时权限模型**:在Android 6.0中,系统将权限分为两类:正常权限和危险权限。正常权限对应用功能的影响较小,系统在安装时自动授予;而危险权限涉及到用户的隐私,如访问联系人、照片等,必须在运行时由用户...

    Android 6.0 运行时权限检查

    在Android 6.0(API级别23)及以上版本,系统引入了运行时权限模型,对应用程序的权限管理进行了重大改革。在此之前,用户在安装应用时一次性授予所有权限,但在Android 6.0之后,应用在运行时可以请求权限,让用户...

    Android6.0运行时权限封装

    本文将深入探讨如何封装一个Android 6.0运行时权限的处理机制,以解决用户选择“不再提示”后无法获取权限的问题。 首先,我们需要理解Android 6.0的权限模型。系统现在分为两种权限类型:正常权限(Normal ...

    Android6.0运行时权限

    Android6.0运行时权限

    Android 6.0运行权限Demo

    Android 6.0运行时权限涉及到的关键API包括`ContextCompat.checkSelfPermission()`用于检查当前是否已经拥有某个权限,`ActivityCompat.requestPermissions()`用于向用户请求权限,以及`onRequestPermissionsResult...

    好用的权限处理android6.0

    在Android 6.0(API级别23)中,谷歌引入了权限模型的重大改变,称为“运行时权限”。这个变化使得应用在安装后还需要在运行时请求敏感权限,而不是像之前版本那样一次性在安装时获取所有权限。这提高了用户对应用...

    android6.0的新权限问题说明

    在Android 6.0之前,应用在安装过程中会列出所需的所有权限,并要求用户同意这些权限才能完成安装过程。这种方式虽然简单明了,但用户往往无法了解每个权限的具体用途,也不清楚哪些权限是应用真正必需的。因此,...

    Android 6.0 权限 动态注册 请求多个权限

    之前,应用在安装时会一次性获取所有所需权限,但在Android 6.0之后,用户可以在应用运行时对特定权限进行授权或拒绝,提升了用户对隐私的控制。本文将深入探讨Android 6.0动态注册权限以及如何一次请求多个权限,...

    Android 6.0运行时权限

    综上所述,"Android 6.0运行时权限"是Android开发中不可或缺的一部分,它要求开发者更加注重权限的使用和管理,以提供更安全、更尊重用户隐私的应用体验。在实际开发中,需要熟练掌握权限请求流程、处理用户响应以及...

Global site tag (gtag.js) - Google Analytics