android 打开gps权限判断gps权限有没有打开

15:02 提问
android开发中怎么判断gps权限是否被禁用了
因为我们安装软件的时候系统会提示gps是否允许/禁用,假设禁用之后程序应该怎么去判断是否被禁用,以这样的方式提示给用户。
按赞数排序
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!
其他相关推荐博客分类:
Android提供了Setting.Secure类,官方对这个类的解释是用来获取系统设置属性值,但不允许修改。需要用户通过系统UI或者专门的API来设置属性值。但是在2.2之后,Setting.Secure增加了isLocationProviderEnabled和setLocationProviderEnabled方法,通过测试发现isLocationProviderEnabled方法获取GPS的状态的,但是如果修改GPS的状态:
而且在mainfest文件中添加了权限:
程序任会报错:
: Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS
最终解决办法如下:
这样就达到了修改GPS状态的作用,如果是开发该方法就将GPS关闭,反之依然。
Caused by: java.lang.SecurityException: Permission denial: writing to secure settings requires android.permission.WRITE_SECURE_SETTINGS&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 需要取得root权限:D& 多谢指正简单查了一下 2.2以上能用 否则 root
你用真机测试过么& 忘记了 好像没有
zhouxiaoli521
浏览: 414804 次
来自: 北京
good job!
lgj 写道cursor 没有关闭,最好加上 ...
cursor 没有关闭,最好加上finally 后关上fina ...
zhouxiaoli521 写道weinifk 写道publi ...
weinifk 写道public static void ma ...
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'没有打开gps并权限管理里拒绝定位权限但安卓应用还是能准确定位【诺记吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:119,009贴子:
没有打开gps并权限管理里拒绝定位权限但安卓应用还是能准确定位收藏
测试了下qq,一连接网络就可以定位,在开发版miui系统权限里的限制没卵用。同理,百度云获取通讯录权限等等是不是也是可行的,只有一个手机没测试
2017年执业药师报考条件已公布,考生点击查询
没有,我的机子禁用了之后腾讯地图就无法定位了。你的rom的问题吧。
因为你连网了啊
很多手机关了微信就不能定位了查不了附近”
应用是不可以绕过权限获取定位。我回权限管理查看这款应用状态仍然是拒绝定位但实际上附近能清楚显示其他用户。
哦,国产毒瘤。
这个定位管理应该是GPS的权限,记得QQ的设置里应该有选项的
药师在线为您深度解析2017药师考试,巧法解析,直击考试重点!
又在网上溜达了一圈,总之现在不能通过某一个权限管理软件进行统一查看、编辑应用的实际权限,比如位置信息、通讯录、自动发送……只想说,法克!
登录百度帐号推荐应用Android判断服务是否运行及定位问题实例分析
作者:Ruthless
字体:[ ] 类型:转载 时间:
这篇文章主要介绍了Android判断服务是否运行及定位问题,以实例形式较为详细的分析了Android判断服务运行状态及获取经纬度的相关实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
本文实例讲述了Android判断服务是否运行及定位问题。分享给大家供大家参考。具体如下:
* 判断服务是否正在运行
* @param context
* @param className 判断的服务名字:包名+类名
* @return true在运行 false 不在运行
public static boolean isServiceRunning(Context context, String className) {
boolean isRunning =
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
//获取所有的服务
List&ActivityManager.RunningServiceInfo& services= activityManager.getRunningServices(Integer.MAX_VALUE);
if(services!=null&&services.size()&0){
for(ActivityManager.RunningServiceInfo service : services){
if(className.equals(service.service.getClassName())){
isRunning=
return isR
在android开发中,经常会使用locationManager.getLastKnownLocation()定时获取经纬度,在不同真机测试中有的可以获取有的不可以获取,为了解决不同手机的兼容下,请用如下代码
public static Location getLocation(LocationManager locationManager, LocationListener locationListener) {
Location location=
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, locationListener);
if(location==null){
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, locationListener);
希望本文所述对大家的Android程序设计有所帮助。
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具自己编写的应用中有地图定位的功能,需要使用网络来进行地图上的定位。
首先,有必要阐述一下有关地图涉及的两个层面的权限问题:
1. 手机系统层面的权限,即手机系统本身的无线是否打开,4G是否打开,GPS是否打开(Android手机一般在主界面下滑就能看到,位置明显),定位位置是否打开(这个可以在系统设置-》隐私中查看)。
应用本身层面的权限设置,这个就是需要打开设置-》应用程序-》应用程序权限管理-》你的应用,在这个界面能看到你的应用所具备的权限开关,比如要提到的“使用网络“。也就是说即便是手机系统层面的已经打开了网络,但是你的应用在这个设置界面中“使用网络“的开关是关闭的,那么就会造成报错或者别的问题。
详细分析和解决方案:
今天要说的问题就是上面提到的,手机系统层面的网络、GPS和定位都打开了,应用的使用网络被禁用后,后台出现的这样的错误:
W/System.err: java.lang.SecurityException: Neither user 10252 nor current process has android.permission.ACCESS_COARSE_LOCATION.
W/System.err:
at android.os.Parcel.readException(Parcel.java:1546)
W/System.err:
at android.os.Parcel.readException(Parcel.java:1499)
W/System.err:
at com.android.internal.telephony.ITelephony$Stub$Proxy.getAllCellInfo(ITelephony.java:3627)
W/System.err:
at android.telephony.TelephonyManager.getAllCellInfo(TelephonyManager.java:3031)
W/System.err:
at java.lang.reflect.Method.invoke(Native Method)
W/System.err:
at java.lang.reflect.Method.invoke(Method.java:372)
W/System.err:
at com.loc.d.a(Reflect.java)
W/System.err:
at com.loc.d.a(Reflect.java)
W/System.err:
at com.loc.bw.a(CgiManager.java)
W/System.err:
at com.loc.bw.b(CgiManager.java)
W/System.err:
at com.loc.bw.a(CgiManager.java)
W/System.err:
at com.loc.bp.w(APS.java)
W/System.err:
at com.loc.bp.e(APS.java)
W/System.err:
at com.loc.a.a(AMapLocationManager.java)
W/System.err:
at com.loc.a.l(AMapLocationManager.java)
W/System.err:
at com.loc.a.g(AMapLocationManager.java)
W/System.err:
at com.loc.a$a.handleMessage(AMapLocationManager.java)
W/System.err:
at android.os.Handler.dispatchMessage(Handler.java:102)
W/System.err:
at android.os.Looper.loop(Looper.java:145)
W/System.err:
at android.os.HandlerThread.run(HandlerThread.java:61)
错误提示说,当前的用户或者当前的进程没有ACCESS_COARSE_LOCATION的使用权限。
值得注意的是,这个ACCESS_COARSE_LOCATION权限在AndroidManifest.xml中是配置了的:
android:name="android.permission.ACCESS_COARSE_LOCATION" /&
所以,我们需要找到一个方法,它的功能仅仅是判断我的应用在应用权限管理的系统页面,是否打开了我需要的权限,也就是说手机系统是否允许我的应用使用系统中的某项功能。
因此,像什么
LocationManager locationManager = (LocationManager) mBaseApplication.getBaseContext().getSystemService(LOCATION_SERVICE);
PackageManager pm = getPackageManager();
boolean permission = (PackageManager.PERMISSION_GRANTED ==
pm.checkPermission("android.permission.ACCESS_COARSE_LOCATION",
"myPackage"));
都会返回true,因为它们都不是检查的应用程序权限管理中应用能否使用某个权限的问题。
应该使用这个:
public boolean checkNetWorkForLocation() {
判断应用权限管理中该应用是否打开了允许使用网络的权限
-1: 没有打开
0: 已经打开
int permission = ActivityCompat.checkSelfPermission(getApplicationContext(), "android.permission.ACCESS_COARSE_LOCATION");
LogMe.d("App's network using permission is " + String.valueOf(permission));
if(permission == 0) {
return true;
DialogUtil.showAlertOkCancel(this, getString(R.string.gps_network_permission), new CommonCallback&Boolean&() {
public void onCallBack(Boolean data) {
if (data) {
Intent intent = new Intent(Settings.ACTION_APPLICATION_SETTINGS);
startActivity(intent);
return false;
来判断,可以看到当返回值为“0“的时候, java.lang.SecurityException错误没有出现,证明我们打开了允许应用使用网络的应用层面权限后,就是应用可以正常使用网络定位功能了。
本文已收录于以下专栏:
相关文章推荐
在有些应用中,我们需要获取root权限,比如删除系统自带的应用程序等,下面介绍一般应用程序如何获取root:
1. root手机
    应用程序能获取root权限的前提是手机已经被root,一般...
Android应用程序获得root权限    我在博文《Android程序的安全系统》中提到两种让root权限的办法。最近在网上发现很多朋友转载那篇文章,但是对那篇文章中提到的第一种方法怎样实现,不是...
首先感谢总结这篇文章的大神,看来你的文章,木可火华受益匪浅,这里分享给大家一起学习下的
android应用一般需要权限。如一个程序想调用系统的功能来打开wifi,或者实现文件的创建等都需要。在软件...
原文出处: Dan Lew     
Android系统的权限从用户的角度来看有时候的确有点让人摸不着头脑。有时候可能你只需要做一些简单的事情(对联系人的信息进行编辑),却申请了远超你应用所需的权限...
系统应用(system app):安装在system/app或system/priv-app(Android 4.4后具有)目录下的应用
第三方应用(data app):安装在data/a...
本文章转载自:https://greenrobot.me/devpost/i-dont-need-your-permission/
Android系统的权限从用户的角度来看有时候的确有点让人...
【转载自: /blog/1133906】
功能:反编译apk降低权限及重新签名 
场景:很多软件,申请了一些可能会导致付费(如,发短信,呼叫...
写这篇文章前,首先要感谢Simon_fu,他的两篇关于root权限的文章对于我的工作起到了非常大的帮助,这篇文章可以说是对他的文章的一个补充。Simon_fu的文章可以参考如下两个网页:Android...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)}

我要回帖

更多关于 android 6.0 gps权限 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信