我有一个在 Android 上运行的应用程序,它只使用一个 webview 来显示一个移动 web 应用程序,并且在某些时候使用设备的 GPS 来获取他们的位置。
我有一个自定义的 ChromeWebClient 等,它很好地获得了它们的位置,除了在启用省电模式的设备上?SDK/API 中有没有让我能够确定用户是否启用了此功能并相应地建议他们?我在文档中找不到任何东西,所以我假设不值得但值得一试,
干杯,
李
我有一个在 Android 上运行的应用程序,它只使用一个 webview 来显示一个移动 web 应用程序,并且在某些时候使用设备的 GPS 来获取他们的位置。
我有一个自定义的 ChromeWebClient 等,它很好地获得了它们的位置,除了在启用省电模式的设备上?SDK/API 中有没有让我能够确定用户是否启用了此功能并相应地建议他们?我在文档中找不到任何东西,所以我假设不值得但值得一试,
干杯,
李
重温评论后
根据我的经验,三星和 HTC 都是以最不可预测的方式修改 Android 操作系统的制造商之一。他们添加了新的功能和模式,例如 4G 切换启动器小部件和“省电模式”。他们修改了记录在案的 SDK 方法的权限要求,即在三星设备上打开蓝牙,您的应用程序需要拥有额外的android.permission.BLUETOOTH
权限,而普通的 Android 只需要android.permission.BLUETOOTH_ADMIN
. 还有更多。
长话短说,正如@RaghavSood 所指出的,“省电模式”不是官方的 AOSP 功能,也无法通过官方 SDK 检测到它。不过,有一种可能的方法可以解决它。我相信您的应用程序很可能在省电模式下行为不端,因为此模式会关闭 GPS。您可以通过在设置中配置省电模式来禁用 GPS 禁用来确认这一点(无法更好地表达这一点,抱歉) -来自 google 的第一个链接和步骤。然后测试应用程序。它有效吗?如果是,那么您就是问题的根源,现在您的工作是让用户知道您的应用在没有 GPS 的情况下将无法运行。您可以将一些代码放入您的应用程序以检测是否启用了 GPS 服务,如果未启用则显示警报对话框。您的活动中的代码可能如下所示:
LocationManager lm = getSystemService(Context.LOCATION_SERVICE);
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//Show a notification prompting user to switch on GPS.
}
您可以更加精细,让您的应用程序检测设备制造商以在所有三星设备上显示自定义消息。