文档章节

android6.0 ble 权限问题

玫瑰的名字
 玫瑰的名字
发布于 2016/06/30 17:01
字数 199
阅读 103
收藏 0

在5.0上系统运行ok,把编译版本改成6.0后报下面这个错

Need ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission... 

阿西吧!!!这是问题是6.0系统全新的权限机制导致的[可以参考这篇文章] (http://jijiaxin89.com/2015/08/30/Android-s-Runtime-Permission/) 解决方案:
首先在AndroidManifest声明一下权限

<uses-permission-sdk-23 android:name="android.permission.ACCESS_COARSE_LOCATION"/>

然后在需要权限的地方请求权限


 if (Build.VERSION.SDK_INT >= 23) {
                //判断是否有权限
                if (ContextCompat.checkSelfPermission(this,
                        Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                    //请求权限
                    ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                            MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION);
                    //判断是否需要 向用户解释,为什么要申请该权限
                    if (ActivityCompat.shouldShowRequestPermissionRationale(this,
                            Manifest.permission.READ_CONTACTS)) {
                        Toast.makeText(this, "shouldShowRequestPermissionRationale", Toast.LENGTH_SHORT).show();
                    }
                }else {
                    mBluetoothService.startLongScan();
                }
            }else {
                mBluetoothService.startLongScan();
            }

接收权限请求回调


@Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[]
            grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        switch (requestCode) {
            case MY_PERMISSIONS_REQUEST_ACCESS_COARSE_LOCATION:
                if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    // Permission Granted
                    mBluetoothService.startLongScan();
                } else {
                    // Permission Denied
                    Toast.makeText(this, "ACCESS_COARSE_LOCATION Denied", Toast.LENGTH_SHORT)
                            .show();
                }
                break;
        }
    }

© 著作权归作者所有

玫瑰的名字
粉丝 1
博文 14
码字总数 7292
作品 0
深圳
程序员
私信 提问
Android获取当前手机蓝牙Mac地址(5.0,6.0-7.0,8.0-9.0) -(进行中),蓝牙电话

注意:当前Android手机5.0,6.0-7.0能获取蓝牙Mac地址;而当前Android手机8.0-9.0蓝牙Mac地址获取不到,API被隐藏的更深了?? Oreo(Android O) 8.0 2017年8月22日 API level 26 Oreo(And...

desaco
01/30
0
0
   基于android6.0动态获取app功能权限

基于android6.0动态获取app功能权限 做为我第一篇博客,我会讲比较基础权限调用,做android开发3年多,一直没有时间空下来总结我的经验,现在我在每个月的固定时间段,更新我的博客,与大家分...

android_叶芸
2017/11/01
52
0
android权限问题

虽然现在android已经出了7.0了。但是大部分人用的应该还是5.0和6.0的。 其中对于开发者来说,变化比较大的应该是6.0之前和6.0之后的版本。 因为以6.0为分界线多了一个比较坑的东西:权限的动...

nesger
2016/12/02
158
0
Android 6.0棉花糖新特性,

对于Android粉的我们来说,2015年11月24日凌晨1点~上午10点,2015年11月25日凌晨1点~上午10点这2天,是值得期待的,因为Google公司将进行为期2天的Android开发者大会,大会将发布Android 6.0...

小梦想家
2015/11/24
273
0
android开发之调皮的权限

文章背景 撰写本文的目的在于帮助开发者们解决android中动态申请权限的坑。 在android6.0以前,申请权限的方式很简单,只需要在清单文件AndroidManifest.xml中申请即可。需要用到时系统会弹框...

安卓小哥
2017/04/22
0
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
6
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部