android用代码开启定位功能吗,Android判断定位功能是否开启

2023-11-13

定位功能是否可用由定位服务和定位权限共同决定:

判断定位服务:

/**

* @author:程龙 date; On 2018/8/13

*/

/**

* 手机是否开启位置服务,如果没有开启那么所有app将不能使用定位功能

*/

public static boolean isLocServiceEnable(Context context) {

LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

boolean gps = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

boolean network = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);

if (gps || network) {

return true;

}

return false;

}

判断定位权限:

/**

* 检查权限列表

*

* @param context

* @param op 这个值被hide了,去AppOpsManager类源码找,如位置权限 AppOpsManager.OP_GPS==2

* @param opString 如判断定位权限 AppOpsManager.OPSTR_FINE_LOCATION

* @return @see 如果返回值 AppOpsManagerCompat.MODE_IGNORED 表示被禁用了

*/

public static int checkOp(Context context, int op, String opString) {

final int version = Build.VERSION.SDK_INT;

if (version >= 19) {

Object object = context.getSystemService(Context.APP_OPS_SERVICE);

// Object object = context.getSystemService("appops");

Class c = object.getClass();

try {

Class[] cArg = new Class[3];

cArg[0] = int.class;

cArg[1] = int.class;

cArg[2] = String.class;

Method lMethod = c.getDeclaredMethod("checkOp", cArg);

return (Integer) lMethod.invoke(object, op, Binder.getCallingUid(), context.getPackageName());

} catch (Exception e) {

e.printStackTrace();

if (Build.VERSION.SDK_INT >= 23) {

return AppOpsManagerCompat.noteOp(context, opString, context.getApplicationInfo().uid,

context.getPackageName());

}

}

}

return -1;

}

调用时先检查权限:

/**

* 检查定位服务、权限

*/

private void checkLocationPermission() {

if (!AppUtil.isLocServiceEnable(this)) {//检测是否开启定位服务

//未开启定位服务的操作

} else {//检测用户是否将当前应用的定位权限拒绝

int checkResult = AppUtil.checkOp(this, 2, AppOpsManager.OPSTR_FINE_LOCATION);//其中2代表AppOpsManager.OP_GPS,如果要判断悬浮框权限,第二个参数需换成24即AppOpsManager。OP_SYSTEM_ALERT_WINDOW及,第三个参数需要换成AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOW

int checkResult2 = AppUtil.checkOp(this, 1, AppOpsManager.OPSTR_FINE_LOCATION);

if (AppOpsManagerCompat.MODE_IGNORED == checkResult || AppOpsManagerCompat.MODE_IGNORED == checkResult2) {

//未开启定位权限或者被拒绝的操作

}

}

}

根据以上代码进行符合项目需求的操作即可。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

android用代码开启定位功能吗,Android判断定位功能是否开启 的相关文章

  • ubuntu查看搜索可安装包名

    比如要安装openjdk 但是不知道安装包名 可用有以下方法搜索 用aptitude search openjdk
  • 快速学完OpenCV+python计算机视觉图像处理(四)

    返回主目录 4 图像基本特效 4 1 图像特效介绍 图像特效分为以下几个 分别是 灰度处理 底板效果 马赛克 毛玻璃效果 图像融合 图片蓝色 边缘检测 浮雕效果 4 2 图像灰度处理1 灰度处理常用方法 方法1 直接使用imread里面的参
  • 性能篇之对象拷贝工具BeanUtils.copyProperties和BeanCopier.copy的比较

    对象的拷贝在开发过程中肯定非常常见 想必大家使用spring中的BeanUtils copyProperties来完成的 小编最初也是用习惯了这个工具 但是在一次codereview中 大佬给我提出建议使用cglib的BeanCopier
  • 欧几里得距离,曼哈顿距离,切比雪夫距离

    1 欧几里得距离 欧式距离 它是在m维空间中两个点之间的真实距离 在二维和三维空间中的欧氏距离的就是两点之间的距离 简单来说就是两点之间直线最短的那段距离 相关联的范数称为欧几里得范数 也称 L 2 L 2 L2 范数 二维空间的公式 三维
  • 【密码学】常见密码算法分类和运用

    一 摘要算法 Digest Algorithm 摘要算法 是指把任意长度的输入消息数据转化为固定长度的输出数据的一种密码算法 又称为 散列函数 哈希函数 杂凑函数 单向函数 等 通常用来做数据完整性的判定 即对数据进行哈希计算然后比较 摘要
  • UNIX环境编程——信号

    本期主题 信号 往期地址 UNIX环境编程 文件IO UNIX环境编程 标准IO UNIX环境编程 进程环境与进程控制 unix高级环境编程 线程详解 unix环境高级编程 UNIX体系架构 文章目录 1 信号概念 2 信号操作 1 发送信
  • JVM:内存结构

    文章目录 1 什么是JVM 2 内存结构 2 1 程序计数器 2 1 1 作用 2 1 2 特点 2 2 虚拟机栈 2 2 1 定义 2 2 2 代码示例 2 2 3 问题辨析 2 2 4 栈内存溢出 2 2 5 线程运行诊断 2 3 本地
  • web模块_2(SQL注入,上传文件的权限获取)

    1题目描述 你知道index php的备份文件名吗 index php的备份文件名为index php bak 2题目描述 php中 双等号是弱类型比较 判断是否相等 不判断格式 判断格式是否相等 0a 0为True 1235a 不算数字
  • CTFshow web5 解题思路

    开始将代码誊到visicode 进行审计 审计结果 一共分为四个if 满足四个条件就出现flag 第一个if的意思 判断两个值是否为空值 是空值就报错 第二个 顾名思义 如果v1不是纯字符就输出 v1 error 所以要让v1成为纯字符 第
  • 三十五、android adb命令详解

    cmd常用控制台1 清屏命令 cls2 列出当前目录详细信息 dir3 删除文件 del xxx txt android adb常用命令1 创建sdcardmksdcard 50M D sdcard img gt 创建一张容量为50M的SD
  • 微信小程序文字换行符

    在微信小程序开发中有一个需求是展示长文本 后端返回的数据包含了 n n let str 第一段 n n第二段 如果将这段文字直接赋值
  • Kali Linux-网络安全之-XSS 跨站脚本攻击原理及 DVWA 靶机的搭建

    XSS 跨站脚本攻击 使用 JavaScript 创建 Cookie JavaScript 可以使用 document cookie 属性来创建 读叏 及删除 cookie 例 1 JavaScript 中 创建 cookie 如下所示 d
  • Jupyter Lab入门到精通

    Jupyter Lab Jupyter Notebook Jupyter Lab可以理解成Jupyter Notebook的升级版本 升级增加了很多功能 其支持python R java等多种编程语言及markdown letex等写作语言
  • MATLAB学习笔记:

    MATLAB学习笔记 MATLAB 变量命名规则 变量名区分大小写 变量名长度不超过63位 变量名以字母开头 可以由字母 数字和下划线组成 但不能使用标点 变量名应简洁明了 通过变量名可以只管看出所表示的物理意义 ch5 C textsca
  • Pytorch基础学习(第一章-PyTorch基础概念)

    课程一览表 目录 一 pytorch简介 二 环境配置 1 pycharm 2 annaconda 3 安装pytorch
  • altium designer芯片引脚间距规则过小

    AD中芯片的引脚间距过小 例如stm32这种MCU 引脚又细又密 违反了默认间距规则 如上图所示的16mil 而触发绿色的报错 但是我们又不能因噎废食 而把整个PCB规则间距改大 因此最好的解决方案是 只修改这一个芯片的间距规则 依次点击
  • 云汉芯城js逆向分析-v,t,s参数

    介绍 查看搜索的接口 很明显需要这几个参数 keyword 2N7002 搜索输入的关键词 font ident 945a41f33fc9693c 如下图 第一次访问的页面 返回的html里找 v 1655799627669 时间戳 t 1
  • Android平台GB28181设备接入模块相关博客概览

    Android平台GB28181设备接入模块 可实现不具备国标音视频能力的 Android终端 通过平台注册接入到现有的GB T28181 2016服务 可用于如智能监控 智慧零售 智慧教育 远程办公 生产运输 智慧交通 车载或执法记录仪等
  • 从零开始 verilog 以太网交换机(六)帧处理单元设计与实现

    从零开始 verilog 以太网交换机 六 帧处理单元设计与实现 声明 博主主页 王 嘻嘻的CSDN主页 从零开始 verilog 以太网交换机系列专栏 点击这里 未经作者允许 禁止转载 侵权必删 关注本专题的朋友们可以收获一个经典交换机设

随机推荐

  • 数据结构——栈(stack)

    一 顺序栈 栈 stack 是一种运算受限的线性表 其限制是仅允许在表的一端进行插入和删除运算 这一端被称为栈顶 相对地 把另一端称为栈底 向一个栈插入新元素又称作进栈 入栈或压栈 它是把新元素放到栈顶元素的上面 使之成为新的栈顶元素 从一
  • java中如何从一个url的字符串中提取出ip、port等信息

    欢迎访问个人博客 德鲁大叔撸代码 项目中有一个功能是 把我生成的对账单推送到商户指定的sftp服务器上 要上传文件到sftp那必须的就有以下几个数据 sftp的ip sftp所指向的port sftp的用户名 sftp的密码 指定sftp上
  • 安装HP LaserJet 1320n打印机驱动

    该打印机型号比较老了 不是网络打印机 只能通过并口或USB安装 由于笔记本不带并口 现在台式机基本都不带了 只能选择USB安装 折腾了好久 才找到正确的安装方法 特分享给大家 首先 就是找到正确的驱动 我的笔记本是win8 64bit的 所
  • Ioc容器refresh总结(4)--- Spring源码从入门到精通(三十四 )

    上偏文章介绍了 registerBeanPostProcessor 分别按优先级顺序先注册PriorityOrdered和Ordered接口 第三部注册没有实现接口的beanPostProcessor 最后注册mergedBeanDefin
  • 特征选取1-from sklearn.feature_selection import SelectKBest

    sklearn实战 乳腺癌细胞数据挖掘 博主亲自录制视频 https study 163 com course introduction htm courseId 1005269003 utm campaign commission utm
  • 从入门到入土:[SEED-Lab]-SQL注入攻击

    此博客仅用于记录个人学习进度 学识浅薄 若有错误观点欢迎评论区指出 欢迎各位前来交流 部分材料来源网络 若有侵权 立即删除 本人博客所有文章纯属学习之用 不涉及商业利益 不合适引用 自当删除 若被用于非法行为 与我本人无关 SEED Lab
  • Flex 学习资源

    Action Script 3 0 帮助 http help adobe com zh CN ActionScript 3 0 ProgrammingAS3 Flex 实例 http blog minidx com 2009 04 06 2
  • 计算机文献汇报ppt,常见的研究生文献汇报.ppt

    常见的研究生文献汇报 Example two Fig 9 shows a schematic illustration of the synthesis routes of single molecular nano particles m
  • 《Android 开发艺术探索》笔记7--RemoteViews的内部机制和意义

    RemoteViews的内部机制和意义思维导图 RemoteViews的内部机制 RemoteViews的意义可以模拟一个通知栏效果并实现跨进程的UI更新 参看文章 RemoteViews的内部机制和意义思维导图 RemoteViews的内
  • hadoop MapReduce总体工作机制简述

    问题导读 1 如何理解MapTask运行机制 2 如何理解Map阶段机制 3 如何理解ReduceTask 工作机制 4 如何理解MapReduce总体工作机制 MapTask运行机制详解整个Map阶段流程大体如图所示简单概述inputFi
  • @EnableGlobalMethodSecurity注解详解

    作用 当我们想要开启spring方法级安全时 只需要在任何 Configuration实例上使用 EnableGlobalMethodSecurity 注解就能达到此目的 同时这个注解为我们提供了prePostEnabled secured
  • python把tex转为html,在Python中将特定符号替换为字符串,将LaTeX转换为HTML,而无需使用转换器...

    如果要替换所有 非重叠 实例 则可以执行以下操作 import re re sub r r 1 w 这将用 lt sub gt 除 之外的所有东西 sub找到 除 之外的所有东西 的每个实例 这意味着 如果您有类似Li 3 O cat 的东
  • Docker daemon及容器实例的DNS配置详解

    Docker daemon及容器实例的DNS配置详解 2022 01 22 18 37 180阅读 0赞 Linux系统中 DNS解析器是一组C库的进程 用以访问DNS服务器 DNS解析器通过 etc resolv conf配置文件给出要访
  • Latex三线表绘制横线

    目前遇到两种方式 toprule midrule bottomrule usepackage booktabs begin table htb caption Table caption label t1 begin tabular ll
  • 【C++深陷】之“lambda表达式”

    0 什么是lambda表达式 C Primer 第5版 对 lambda表达式 lambda expression 的定义为 一个lambda表达式表示一个可调用的代码单元 我们可以将其理解为一个未命名的内联函数 lambda表达式的形式如
  • python实现excel Vlookup功能

    python 如何实现Excel 的Vlookup功能 1 Excel 中VLOOKUP具体步骤 2 Python中使用pandas包中的pd merge 来实现 1 Excel 中VLOOKUP具体步骤 Excel 中的VLOOKUP使用
  • DDC-数字下变频的FPGA实现

    在数字信号处理中常常用到DDC 这是因为在雷达数字信号处理中运算速度是一个非常关键的指标 虽然我们可以在中频直接对信号进行处理 但是这样就会造成一个不好的影响就是运算量大 FPGA消耗的资源多相应的产品成本也就高了 这就是一切的初衷 首先呢
  • 弱人工智能才是未来AI研究的主流方向

    关于人工智能 长期存在两种不同的目标或者理念 一种是希望借鉴人类的智能行为 研制出更好的工具以减轻人类智力劳动 一般称为 弱人工智能 类似于 高级仿生学 另一种是希望研制出达到甚至超越人类智慧水平的人造物 具有心智和意识 能根据自己的意图开
  • crmeb 前端源码uniapp编译成微信小程序上传开发工具教程

    1 下载登录微信开发工具 下载地址 https developers weixin qq com miniprogram dev devtools download html 推荐使用稳定版 安装完成后后 打开 微信扫码登陆 2 下载HBu
  • android用代码开启定位功能吗,Android判断定位功能是否开启

    定位功能是否可用由定位服务和定位权限共同决定 判断定位服务 author 程龙 date On 2018 8 13 手机是否开启位置服务 如果没有开启那么所有app将不能使用定位功能 public static boolean isLocS