了解是否启用了省电模式 - Android SDK

时间:2013-02-28 10:42:04

标签: android

我在Android上运行的应用只使用webview来显示移动网络应用程序,并且在某些时候使用设备的GPS来获取他们的位置。

我有一个自定义ChromeWebClient等,除了在启用了省电模式的设备上之外,它很好地获得了它们的位置? 在SDK / API中是否有我能够确定用户是否已启用此功能并相应地提供建议? 我在文档中找不到任何内容,所以我假设不是值得一试,

干杯,

1 个答案:

答案 0 :(得分:6)

重播评论后

根据我的经验,三星以及HTC是以最难以预测的方式修改Android操作系统的制造商之一。它们增加了新的功能和模式,如4G切换启动器小部件和“省电模式”。他们修改了已记录的SDK方法的权限要求,即在您的应用需要的Samsung设备上启用蓝牙,并获得额外的android.permission.BLUETOOTH权限,而Android只需要android.permission.BLUETOOTH_ADMIN。而且还有更多。

长话短说,正如@RaghavSood指出的那样,“省电模式”不是官方的AOSP功能,也没有办法通过官方SDK检测它。有一种方法可以解决它。我相信你的应用程序很可能在省电模式下行为异常,因为此模式会关闭GPS。您可以通过在设置中配置省电模式来确认,以禁用GPS禁用(不能更好地说明这一点,抱歉) - first link from google with steps。然后测试应用程序。它有用吗?如果是的话,那么你已经解决了这个问题,现在你的工作就是让用户知道你的应用程序不会在没有GPS的情况下运行。您可以在应用中添加一些代码,以检测GPS服务是否已启用,如果不是,则显示警告对话框。您活动中的代码可能如下所示:

LocationManager lm = getSystemService(Context.LOCATION_SERVICE);
if(!lm.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
    //Show a notification prompting user to switch on GPS.
}

您可以更精细,让您的应用检测设备制造商在所有三星设备上显示自定义消息。