在開發Android的過程中,我們經常用到的WIFI在休眠情況下預設是會不串連的,這個時候當我們需要保持串連時,該如何解決
不少人說可以在系統設定的WIFI進階選項中將串連設為休眠保持串連,這個辦法的確可行,對於開發人員來說很容易辦到,但是對於使用者來說他們一般不會知道這麼設定,這個時候該怎麼辦呢?可以使用如下代碼解決
[java]
public void WifiNeverDormancy(Context mContext)
{
ContentResolver resolver = mContext.getContentResolver();
int value = Settings.System.getInt(resolver, Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
final SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(mContext);
Editor editor = prefs.edit();
editor.putInt(mContext.getString(R.string.wifi_sleep_policy_default), value);
editor.commit();
if(Settings.System.WIFI_SLEEP_POLICY_NEVER != value)
{
Settings.System.putInt(resolver, Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);
}
System.out.println("wifi value:"+value);
}
public void WifiNeverDormancy(Context mContext)
{
ContentResolver resolver = mContext.getContentResolver();
int value = Settings.System.getInt(resolver, Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
final SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(mContext);
Editor editor = prefs.edit();
editor.putInt(mContext.getString(R.string.wifi_sleep_policy_default), value);
editor.commit();
if(Settings.System.WIFI_SLEEP_POLICY_NEVER != value)
{
Settings.System.putInt(resolver, Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);
}
System.out.println("wifi value:"+value);
}上面這個函數,會自動修改我們WIFI設定中的進階選項,將其設定為一直保持串連。不用使用其他控制項就可以解決。
需要注意的是此函數在調用時必須現在AndroidManifest.xml中聲明許可權
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>