android 6.0 系统获取权限

在Android 6.0 (API 23) 发布之前, 所有的权限都在安装应用的时候显示给用户,用户选择安装则表示全部接受这些权限, 之后无法撤销对这些权限的授权。但Android 6.0开始, 一部分比较危险的权限需要在程序运行时显式弹框,请求用户授权。所以,之前开发应用时,在manifest文件中配置对应的权限这种做法便达不到之前的效果。那么,现在要怎么做呢?提供两种思路,仅供参考:

1:判断android系统的版本,如果不是6.0及以上,按正常逻辑处理,如果是,则去打开系统弹框,请求系统权限。

2:直接判断当前应用是否有对应的权限,如果有,处理逻辑代码,如果没有则去请求系统权限。

个人比较倾向第二种,但第二种必须在manifest文件中进行权限的配置,比如你需要相机权限,就还按照之前开发应用在manifest中配置相机的权限 。接下来说下如何实现第二种:

在进行需要权限的操作之前检查系统是否有对应的权限,以相机权限为例:

if (PackageManager.PERMISSION_GRANTED ==   ContextCompat.checkSelfPermission(NewGoodsActivity.this, Manifest.permission.CAMERA)){

/**

*代表应用已有该权限,去做功能处理

**/

}else{

/**

*代表应用还没有获得该权限,去申请权限

**/ }

那么如果应用没有权限,怎么去获得呢?也就是android 6.0及以后,怎么调用系统弹框,让用户操作对应权限呢?方法就是requestPermissions,用法和startacitivityforresult方法类似,还是以相机操作为例:

请求权限:

String[] perms = {"android.permission.CAMERA"};

int permsRequestCode = 890;

requestPermissions(perms, permsRequestCode);

用户操作后的回调方法是:

@Override

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

switch(permsRequestCode){

case 890:

boolean cameraAccepted = grantResults[0]== PackageManager.PERMISSION_GRANTED;

if(cameraAccepted){

//授权成功之后,调用系统相机进行拍照操作等

}else{

//用户授权拒绝之后,友情提示一下就可以了

}

break;

}

}

第一种思路的主要方法和第二种一样,都是requestPermissions这个方法。

参考:http://mp.weixin.qq.com/s?__biz=MjM5NDkxMTgyNw==&mid=2653057440&idx=1&sn=0dec446942b2531edfc6210eb6302228&scene=0#wechat_redirect

时间: 2024-10-31 17:40:06

android 6.0 系统获取权限的相关文章

Android开发之深入理解Android 7.0系统权限更改相关文档

摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限请求代码(默认权限禁止),否则应用程序无法响应:Android 7.0在Android 6.0的基础上,对系统权限进一步更改,这次的权限更改包括三个方面: APP应用程序的私有文件不再向使用者放宽 Intent组件传递file://URI的方式可能给接收器留下无法访问的路径,触发FileUriExposedException异常,推荐使用FileProvider DownloadMana

Android 6.0 运行时权限管理最佳实践

Android 6.0 运行时权限管理最佳实践 版权声明:转载必须注明本文转自严振杰的博客: http://blog.yanzhenjie.com 这是一篇迟来的博客,Android M已经发布一年多了(6.0的变化),在Android M中权限系统被重新设计,发生了颠覆性的变化,很多人把握不好这个变化,一是对这个权限策略和套路还没有摸透,二是没有一个很好的实践来支撑,在我的技术开发群里很多人问我关于权限的问题,往往我都没有直接回答,因为这个问题不是一两句说的清楚的,这几点是今天我写这篇博客的原

谈谈Android 6.0 的动态权限管理

1.前言 大家都知道Android 6.0的新特性之一就是应用权限的管理.也就是说凡是涉及用户隐私的权限,用户可以自己去设置管理了.然而在6.0以前,我们安装一款APP是默认同意此APP所需的所有权限(比如定位.访问通讯录),不同意就不能安装.当然,国内的一些手机厂商基于Android定制的系统中,可以实现在6.0以前关闭指定的权限.如下图: 2.危险权限列表(Dangerous Permission) Dangerous Permission一般都是涉及用户隐私的权限. 从上面的图片中可以看到

Android 6.0以上获取Wifi列表问题

在已经打开 Wifi 的情况下获取 Wifi 时,wifiManager.getScanResults() 方法始终返回的是null.因为当时是在网上查询资料敲的代码,多找了几份资料后,看到代码都是一样的,反复确认自己有没有遗漏或者写错.甚至怀疑人生!索性克服心理恐惧点开源码,结果却找到了答案: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 /** * Return the results of the latest access point scan. *

Android 6.0+ 运行时权限探索

原创文章,转载请注明 ( 来自:http://blog.csdn.net/leejizhou/article/details/51511630 李济洲的博客 ) 引言:去年Android 6.0发布后,其新引入的(Requesting Permissions at Run Time)运行时权限就备受开发者关注,随着今年国内手机厂商对6.0系统的普及,觉得大家有必要了解下这个新特性,因为在TargetSDK23+进行开发不注意这些会造成APP运行在6.0+手机上崩溃,这篇博文将对这个新特性进行探索

第8章 Android 4.0系统的下载与编译

第8章  Android 4.0系统的下载与编译 本章首先的准备Android下载与编译环境,内容主要分为:准备Android下载与编译环境.下载源码.编译源码及内核源码.下载Android 4.0及Goldfish源码中包括下载并初始化repo工具.下载Android源码.其他源码下载源.下载模拟器Goldfish内核源码.编译Android及Goldfish内核源码中切换到Android源码目录命令:$cd WORKING_DIRECTORY 执行如下命令,加载编译过程中用到的命令.环境变量

使用 VirtualBox 虚拟机在电脑上运行 Android 4.0 系统,让电脑瞬间变安卓平板

Ref: http://www.iplaysoft.com/android-v4-ics-for-virtualbox.html 随着?Android?手机的各种软件应用越来越多,很多没有购买的朋友都纷纷表示想要试一试.虽然官方的Android SDK开发包中附带有模拟器,但安装使用上较为复杂,不太适合咱们普通青年,于是我们介绍了一款更易用的BlueStacks 安卓模拟器,不过它也还有一些不爽的地方,譬如只能在 Windows 上运行,或是有时不能连接网络. 所以今天给大家介绍另外一款可以在

1.Android6.0运行时权限简介_2.Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入)3_.Android 6.0 运行时权限理解

Android6.0运行时权限简介:http://unclechen.github.io/2016/03/05/Android6.0%E8%BF%90%E8%A1%8C%E6%97%B6%E6%9D%83%E9%99%90%E7%AE%80%E4%BB%8B/ Android6.0权限适配之WRITE_EXTERNAL_STORAGE(SD卡写入):https://blog.csdn.net/xiechengfa/article/details/52699233 Android 6.0 运行时权

Android 6.0 运行时权限管理

android 6.0 对权限进行了严格的管理 新的权限策略讲权限分为两类,第一类是不涉及用户隐私的,只需要在Manifest中声明即可,比如网络.蓝牙.NFC等:第二类是涉及到用户隐私信息的,需要用户授权后才可使用,比如SD卡读写.联系人.短信读写等. Normal Permissions 此类权限都是正常保护的权限,只需要在AndroidManifest.xml中简单声明这些权限即可,安装即授权,不需要每次使用时都检查权限,而且用户不能取消以上授权,除非用户卸载App. ACCESS_LOC