要在应用程序中操作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);
}
分享到:
相关推荐
在Android平台上,GPS日志记录程序是一个非常实用的工具,它可以帮助用户收集和分析设备的...通过对这些知识点的学习和理解,开发者可以创建自己的GPS日志应用程序,同时也能加深对Android系统以及地理位置服务的掌握。
3. `AndroidManifest.xml`:这是Android应用程序的核心配置文件,包含了应用的元数据、权限声明、活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)以及内容提供者(Content Provider)的定义。...
在Android应用程序开发领域,源码是开发者学习和提升技术的关键资源。本资料集合包含了多个Android程序的研发源码,涵盖了从基础UI控件到高级功能的实现,旨在帮助开发者深入理解Android系统的运行机制,提升编程...
Android监听手机GPS打开状态实现代码是指在Android应用程序中,通过编程的方式检测用户的手机是否已经打开了GPS功能,以便对应用程序的行为进行相应的调整。在Android系统中,GPS状态的改变会通过广播机制通知其他...
通过研究这份源码,开发者可以学习如何在Android应用中有效地使用GPS服务,理解位置监听器的工作原理,以及如何安全地处理和存储位置数据。同时,还可以了解Android权限管理、UI设计、多线程等基础知识,提升自己的...
总之,这个“Android项目GPS实时定位位置共享源码”为开发者提供了一个实践性的起点,可以学习如何在Android应用中集成百度地图SDK,实现实时定位和位置共享功能。通过深入理解这个源码,开发者可以进一步提升自己的...
Android应用源码开关WIFI热点搜索连接开源有注释 Android应用源码比较不错的新闻客户端 Android应用源码省市联动选择城市的天气预报源码 Android应用源码简单的NB微博项目源码 Android应用源码简洁的随手记事项目...
【Android 源码分析:GpsTest 应用程序】 在 Android 开发中,GPS(全球定位系统)是移动设备获取地理位置信息的关键组件。GpsTest 是一个用于测试和调试 GPS 功能的简单应用程序,它允许开发者和用户查看 GPS 的...
- `Settings.Secure.setLocationProviderEnabled(ContentResolver resolver, String provider, boolean enabled)`可用来在程序中开关GPS。 总的来说,Android的GPS定位涉及到多个层面,从权限配置、位置服务使用、...
源码是开发者用来创建应用程序的原始代码,对于学习、调试和定制Android应用至关重要。 "飞行模式"(Flight Mode或Airplane Mode)是Android系统中的一个重要功能,它允许用户快速关闭手机的无线通信服务,如蜂窝...
综上所述,Android 的 Wi-Fi、蓝牙以及 GPS 和定位部分都涉及到底层硬件支持、中间层的软件封装以及高层的应用程序接口。这些技术对于实现移动设备的功能至关重要,确保了用户能够安全、高效地连接到互联网、交换...
3. **Android应用程序结构** - 每个Android应用都是由一个或多个组件组成的,主要包括Activity、Service、BroadcastReceiver和ContentProvider四种类型。 - Activity代表用户界面的一个屏幕;Service在后台运行...
"Android GPS Checker" 是一个基于Java编程语言开发的Android应用程序,主要用于检查和测试设备的GPS定位功能。在Android系统中,GPS(全球定位系统)是获取地理位置信息的关键组件,广泛应用于地图导航、健康追踪、...
Android应用程序运行在Java虚拟机上,与硬件交互则需要借助Android的 Binder 机制。Binder是Android系统进程间通信(IPC)的主要方式,而AIDL(Android Interface Definition Language)则是定义跨进程接口的工具,...
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 ...