`

Android 应用程序开关GPS

 
阅读更多
要在应用程序中操作GPS开关需要权限:
<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />

但在配置文件中添加此权限之后会报错,无法再eclipse里面正常编译,怎么办?
1、方法一:将项目放到Android源码中编译;
2、方法二:网上有人说clean一下,果然有效果;

正常编译之后安装,添加权限了也报错,无法正常运行。
研究之后发现还需要System共享权限,就是:
android:sharedUserId="android.uid.system"


要用这个共享是有要求的:
1、用系统签名;
2、安装到System/app目录下;

这样看来,普通应用程序是没办法在正常方式下操作GPS开关的,这也符合Android设计时的安全考虑。如果需要在定制APP中操作开关,有2个方法:
1、修改系统,提供给APP操作接口;
2、按上面流程操作;

下面贴一下GPS操作的方法:


	public static boolean getGpsState(Context context) {
		ContentResolver resolver = context.getContentResolver();
		return Settings.Secure.isLocationProviderEnabled(resolver,LocationManager.GPS_PROVIDER);
	}
	
	public static void toggleGps(Context context) {
		ContentResolver resolver = context.getContentResolver();
		boolean enabled = getGpsState(context);
		Settings.Secure.setLocationProviderEnabled(resolver,LocationManager.GPS_PROVIDER, !enabled);
	}

	public static boolean getGpsState(Context context) {
		LocationManager locMgr = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
		return locMgr.isProviderEnabled(LocationManager.GPS_PROVIDER);
	}
	
	public static void toggleGps(Context context) {
		ContentResolver resolver = context.getContentResolver();
		boolean enabled = getGpsState(context);
//		Settings.Secure.putInt(resolver, LocationManager.GPS_PROVIDER, enabled?0:1);
		String value = LocationManager.PROVIDERS_CHANGED_ACTION;
		if (enabled) {
			value = "-" + LocationManager.GPS_PROVIDER;
		} else {
			value = "+" + LocationManager.GPS_PROVIDER;
		}
		Settings.Secure.putString(resolver, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, value);
	}
0
0
分享到:
评论

相关推荐

    Android Gps日志记录程序源码.rar

    在Android平台上,GPS日志记录程序是一个非常实用的工具,它可以帮助用户收集和分析设备的...通过对这些知识点的学习和理解,开发者可以创建自己的GPS日志应用程序,同时也能加深对Android系统以及地理位置服务的掌握。

    Android程序研发源码Android Gps日志记录程序源码.rar

    3. `AndroidManifest.xml`:这是Android应用程序的核心配置文件,包含了应用的元数据、权限声明、活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)的定义。...

    Android程序研发源码Android应用开发揭秘源码 .zip

    在Android应用程序开发领域,源码是开发者学习和提升技术的关键资源。本资料集合包含了多个Android程序的研发源码,涵盖了从基础UI控件到高级功能的实现,旨在帮助开发者深入理解Android系统的运行机制,提升编程...

    Android 监听手机GPS打开状态实现代码

    Android监听手机GPS打开状态实现代码是指在Android应用程序中,通过编程的方式检测用户的手机是否已经打开了GPS功能,以便对应用程序的行为进行相应的调整。在Android系统中,GPS状态的改变会通过广播机制通知其他...

    Android Gps日志记录程序源码.zip

    通过研究这份源码,开发者可以学习如何在Android应用中有效地使用GPS服务,理解位置监听器的工作原理,以及如何安全地处理和存储位置数据。同时,还可以了解Android权限管理、UI设计、多线程等基础知识,提升自己的...

    Android项目GPS实时定位位置共享源码

    总之,这个“Android项目GPS实时定位位置共享源码”为开发者提供了一个实践性的起点,可以学习如何在Android应用中集成百度地图SDK,实现实时定位和位置共享功能。通过深入理解这个源码,开发者可以进一步提升自己的...

    Android-app.rar

    Android应用源码开关WIFI热点搜索连接开源有注释 Android应用源码比较不错的新闻客户端 Android应用源码省市联动选择城市的天气预报源码 Android应用源码简单的NB微博项目源码 Android应用源码简洁的随手记事项目...

    安卓Android源码——GpsTest源码.zip

    【Android 源码分析:GpsTest 应用程序】 在 Android 开发中,GPS(全球定位系统)是移动设备获取地理位置信息的关键组件。GpsTest 是一个用于测试和调试 GPS 功能的简单应用程序,它允许开发者和用户查看 GPS 的...

    安卓Android源码——GPS定位.zip

    - `Settings.Secure.setLocationProviderEnabled(ContentResolver resolver, String provider, boolean enabled)`可用来在程序中开关GPS。 总的来说,Android的GPS定位涉及到多个层面,从权限配置、位置服务使用、...

    Android应用源码之飞行历 飞行模式 AirPlus.zip

    源码是开发者用来创建应用程序的原始代码,对于学习、调试和定制Android应用至关重要。 "飞行模式"(Flight Mode或Airplane Mode)是Android系统中的一个重要功能,它允许用户快速关闭手机的无线通信服务,如蜂窝...

    Android的WIFI-蓝牙——GPS.pdf

    综上所述,Android 的 Wi-Fi、蓝牙以及 GPS 和定位部分都涉及到底层硬件支持、中间层的软件封装以及高层的应用程序接口。这些技术对于实现移动设备的功能至关重要,确保了用户能够安全、高效地连接到互联网、交换...

    android从入门到精通sl(实例源程序)

    3. **Android应用程序结构** - 每个Android应用都是由一个或多个组件组成的,主要包括Activity、Service、BroadcastReceiver和ContentProvider四种类型。 - Activity代表用户界面的一个屏幕;Service在后台运行...

    android_gps_checker

    "Android GPS Checker" 是一个基于Java编程语言开发的Android应用程序,主要用于检查和测试设备的GPS定位功能。在Android系统中,GPS(全球定位系统)是获取地理位置信息的关键组件,广泛应用于地图导航、健康追踪、...

    android 手电筒源码

    Android应用程序运行在Java虚拟机上,与硬件交互则需要借助Android的 Binder 机制。Binder是Android系统进程间通信(IPC)的主要方式,而AIDL(Android Interface Definition Language)则是定义跨进程接口的工具,...

    疯狂Android讲义源码

     1.5.5 应用程序权限说明 29  1.6 Android应用的基本组件  介绍 31  1.6.1 Activity和View 31  1.6.2 Service 32  1.6.3 BroadcastReceiver 32  1.6.4 ContentProvider 32  1.6.5 Intent和IntentFilter 33 ...

Global site tag (gtag.js) - Google Analytics