尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Android判断定位功能是否可用的方法
定位功能是否可用由定位服务和定位权限共同决定判断定位服务代码语言javascript/** * 手机是否开启位置服务如果没有开启那么所有app将不能使用定位功能 */publicstaticbooleanisLocServiceEnable(Context context){LocationManager locationManager(LocationManager)context.getSystemService(Context.LOCATION_SERVICE);boolean gpslocationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);boolean networklocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);if(gps||network){returntrue;}returnfalse;}判断定位权限代码语言javascript/** * 检查权限列表 * * param context * param op 这个值被hide了去AppOpsManager类源码找如位置权限 AppOpsManager.OP_GPS2 * param opString 如判断定位权限 AppOpsManager.OPSTR_FINE_LOCATION * return see 如果返回值 AppOpsManagerCompat.MODE_IGNORED 表示被禁用了 */publicstaticintcheckOp(Context context,int op,String opString){final int versionBuild.VERSION.SDK_INT;if(version19){Object objectcontext.getSystemService(Context.APP_OPS_SERVICE);// Object object context.getSystemService(appops);Class cobject.getClass();try{Class[]cArgnewClass[3];cArg[0]int.class;cArg[1]int.class;cArg[2]String.class;Method lMethodc.getDeclaredMethod(checkOp,cArg);return(Integer)lMethod.invoke(object,op,Binder.getCallingUid(),context.getPackageName());}catch(Exception e){e.printStackTrace();if(Build.VERSION.SDK_INT23){returnAppOpsManagerCompat.noteOp(context,opString,context.getApplicationInfo().uid,context.getPackageName());}}}return-1;}调用时先检查权限代码语言javascript/** * 检查定位服务、权限 */privatevoidcheckLocationPermission(){if(!AppUtil.isLocServiceEnable(this)){//检测是否开启定位服务if(netErrorDialognull||!netErrorDialog.isShowing()){locErrorDialogDialogUtil.showLocErrorDialog(activity,0);}}else{//检测用户是否将当前应用的定位权限拒绝int checkResultAppUtil.checkOp(this,2,AppOpsManager.OPSTR_FINE_LOCATION);//其中2代表AppOpsManager.OP_GPS如果要判断悬浮框权限第二个参数需换成24即AppOpsManager。OP_SYSTEM_ALERT_WINDOW及第三个参数需要换成AppOpsManager.OPSTR_SYSTEM_ALERT_WINDOWint checkResult2AppUtil.checkOp(this,1,AppOpsManager.OPSTR_FINE_LOCATION);if(AppOpsManagerCompat.MODE_IGNOREDcheckResult||AppOpsManagerCompat.MODE_IGNOREDcheckResult2){if(netErrorDialognull||!netErrorDialog.isShowing()){locErrorDialogDialogUtil.showLocErrorDialog(activity,1);}}}}如果不能使用弹出对话框根据1或2判断跳转页面代码语言javascript/** * 无法定位对话框 * * param activity 上下文 * param state 权限状态0未开启服务 1未开启权限 * return 对话框 */publicstaticDialogshowLocErrorDialog(Activity activity,int state){Dialog locErrorDialognewDialog(activity,R.style.MyDialog);View contentViewView.inflate(activity,R.layout.dialog_tip_error_loc,null);locErrorDialog.setContentView(contentView);locErrorDialog.setCanceledOnTouchOutside(true);locErrorDialog.show();TextView checkNetCancelcontentView.findViewById(R.id.tv_submit_no);TextView checkNetcontentView.findViewById(R.id.tv_submit_yes);checkNetCancel.setOnClickListener(view-{locErrorDialog.dismiss();});checkNet.setOnClickListener(view-{locErrorDialog.dismiss();Intent intentnewIntent();if(state0){//定位服务页面intent.setAction(Settings.ACTION_LOCATION_SOURCE_SETTINGS);}else{//应用详情页面intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);intent.setData(Uri.parse(package:activity.getPackageName()));}intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);try{activity.startActivity(intent);}catch(ActivityNotFoundException ex){//如果页面无法打开进入设置页面intent.setAction(Settings.ACTION_SETTINGS);try{activity.startActivity(intent);}catch(Exception e){e.printStackTrace();}}});returnlocErrorDialog;}Dialog样式代码语言javascriptstyle nameMyDialogparentandroid:style/Theme.Dialogitem nameandroid:windowFramenull/itemitem nameandroid:windowBackgroundandroid:color/transparent/itemitem nameandroid:windowNoTitletrue/itemitem nameandroid:backgroundcolor/transparent/item/style以上这篇Android判断定位功能是否可用的方法就是小编分享给大家的全部内容了希望能给大家一个参考。更多Android进阶指南 可以扫码 解锁《Android十大板块文档》1.Android车载应用开发系统学习指南附项目实战2.Android Framework学习指南助力成为系统级开发高手3.2024最新Android中高级面试题汇总解析告别零offer4.企业级Android音视频开发学习路线项目实战附源码5.Android Jetpack从入门到精通构建高质量UI界面6.Flutter技术解析与实战跨平台首要之选7.Kotlin从入门到实战全方面提升架构基础8.高级Android插件化与组件化含实战教程和源码9.Android 性能优化实战360°全方面性能调优10.Android零基础入门到精通高手进阶之路敲代码不易关注一下吧。ღ( ´ᴗ )
RELATED

相关推荐

DDU 显卡驱动清理完整指南:清除驱动残留,应对显卡驱动安装失败

DDU 显卡驱动清理完整指南:清除驱动残留,应对显卡驱动安装失败

DDU 显卡驱动清理完整指南:清除驱动残留,应对显卡驱动安装失败 【免费下载链接】display-drivers-uninstaller Display Driver Uninstaller (DDU) a driver removal utility / cleaner utility 项目地址: https://gitcode.com/gh_mirrors/di/display-d…

📅 2026/10/15 12:26:18
Docker 入门篇(一)-- 简介与安装教程(Windows和Linux)

Docker 入门篇(一)-- 简介与安装教程(Windows和Linux)

一、Docker简介 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间没有任何接口(类似iPhone…

📅 2026/10/24 17:06:20
EV 驱动电机零转速满转矩起步(Align→OpenLoop→FOC)Simulink 建模

EV 驱动电机零转速满转矩起步(Align→OpenLoop→FOC)Simulink 建模

目录 一、为什么“零转速满转矩起步”要单独做 二、起步控制原理简述 2.1 预定位(Align / Pre‑Excite) 2.2 开环旋转(Open‑Loop Voltage‑Oriented) 2.3 切闭环 FOC 三、关键参数 四、Simulink 建模(手把手) 4.1 Step 1️⃣ —— PMSM + Inverter + 坐标变换(同…

📅 2026/11/1 5:44:47
MORE NEWS

更多资讯

📰

岑溪职中电工证换证官方回应怕考不过白交培训费怎么办

岑溪职中电工证换证官方回应怕考不过白交培训费怎么办 怕考不过白交培训费?岑溪职中电工证换证的实操考试内容到底考什么?这是很多初次报考和需要换证的朋友最关心的问题。很多人担心自己花了钱、花了时间,结果考试通不过,白白浪费了时间和金钱。实际上,…

📰

内乡电工证怎么办 官方回应怕考不过白交培训费

内乡电工证怎么办 官方回应怕考不过白交培训费 怕考不过白交培训费?你不是一个人。很多人在报考内乡电工证前都担心自己花了几千块的培训费,结果还是没通过考试。这种心理在特种作业证书报考人群中普遍存在,尤其是像电工这样的高门槛工种,很多人被“官方…

📰

陕西应急管理厅特种工和电工证怎么考?郑州报考避坑指南来了

陕西应急管理厅特种工和电工证怎么考?郑州报考避坑指南来了 你现在正被“ 急需特种作业证才能上岗找工作 ”这个问题压得喘不过气,对吧?别慌,今天咱们就来聊聊陕西应急管理厅特种工的报考、考试、复审这些事,尤其是那些你可能踩坑的点,比如郑州报考避…

📰

司炉工是特种设备 2026河南最新政策怎么应对?学历不高也能考!

司炉工是特种设备 2026河南最新政策怎么应对?学历不高也能考! 你是不是也担心自己学历不高,考不了司炉工证?别慌,2026年河南最新政策其实对这类人群非常友好,只要你符合条件、准备充分,照样能顺利拿到证。司炉工虽然属于特种设备作业,但并不…

📰

哪有可以包办电工证的 真实经历告诉你怎么转异地

哪有可以包办电工证的 真实经历告诉你怎么转异地 之前考的证在外省能不能转过来?这是很多在外地务工或者长期在外地工作的电工、焊工、高处作业人员最头疼的问题。我自己就遇到过这样的情况,手里有一本在老家考的低压电工证,后来在郑州打工,发现这个证在…

📰

广汉市电工证怎么考?2026河南最新政策下必须知道的真相

广汉市电工证怎么考?2026河南最新政策下必须知道的真相 你是不是正为找不到工作发愁?电工证可是很多岗位的“硬门槛”,尤其在2026年河南最新政策下,没有合规的特种作业操作证,连面试机会都可能被拒。广汉市电工证考下来,不仅能让你在建筑、电力…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬