无线优化

时间:2014-08-15 13:20:58

标签: android android-wifi android-settings

任何人都知道通过代码启用/禁用wifi优化程序的任何方法,或者至少检查它是否已被提取(以便提示用户)?当启用此功能并且设备进入休眠状态时(尽管唤醒和wifi锁定),与第三方设备的wifi通信将停止。

谢谢!

3 个答案:

答案 0 :(得分:1)

必须植根设备才能使用此方法。您的应用需要成为系统应用,因为我们可以授予自己临时系统应用,例如访问权限。这适用于API 21 / 4. *,不确定还有什么。

<uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>添加到AndroidManifest.xml

互联网可能会告诉您,您的应用必须是系统应用,但您可以忽略它,因为此方法至少在这种情况下解决了这个问题。

使用此代码(此帖子已简化)。

// Grant your app temporary system level like settings access awesomeness
Runtime.getRuntime().exec("su pm grant <yourpackagename> android.permission.WRITE_SECURE_SETTINGS");
// Read the value first to see if you need to set it at all
int curVal = android.provider.Settings.Global.getInt(getContentResolver(),"wifi_suspend_optimizations_enabled",2);
switch( curVal ) {
  case 0:
    // already disabled
    break;
  case 1:
    // attempt to disable!
    boolean success = android.provider.Settings.Global.putInt(getContentResolver(),"wifi_suspend_optimizations_enabled",0);
    if( success ) {
      // yay worked! maybe check it again to be sure
    }
    else {
      // failed to put
    }
    break;
  case 2:
    // Failed to read value, access not granted
    break;
}

我从以下方面获得了很多: http://muzso.hu/2013/04/07/changing-android-system-settings-eg.-airplane-mode-radios-via-commandline-on-rooted-phone

本回答中描述的方法也可用于更改其他受保护的系统设置,但可能难以找到要更改的设置的确切名称。 有用的信息可以在android-changing-the-system-settings-of-a-rooted-device-from-inside-the-app获得,即您可以在您选择的sqlite编辑器中打开/data/data/com.android.providers.settings/databases/setting‌​s.db,以查找要更改的设置的表和键名。 wifi_suspend_optimizations_enabled位于Global表中,但这不是唯一可用的表。 除wifi优化之外的其他设置可能需要<uses-permission android:name="android.permission.WRITE_SETTINGS"/>

此信息可能不适用于所有设备或情况。

答案 1 :(得分:0)

目前,无法以编程方式检查Wifi优化选项。

检查有关wifi API的课程。 http://developer.android.com/reference/android/net/wifi/package-summary.html

答案 2 :(得分:0)

通过ADB shell(假设root访问权限):

settings set global wifi_suspend_optimizations_enabled 0

您可以在关闭和打开屏幕时观察logcat来验证这是否成功:

logcat -v time | grep -e wpa | grep SETSUSPENDMODE

如果您在屏幕关闭期间看到此值被切换&amp;在事件上,然后启用Wifi优化并创建您正在看到的问题。禁用后,此行为应停止。