Android-приложение, устанавливающее тип подключения
Я пишу приложение для Android. Моя проблема в том, что я хочу, чтобы он принудительно установил соединение в GPRS, а не использовал Wi-Fi. У меня есть решение, как показано ниже, но это вызывает сбой приложения при запуске.
ConnectivityManager CM =
(ConnectivityManager) this.getSystemService(Context.CONNECTIVITY_SERVICE);
CM.setNetworkPreference(ConnectivityManager.TYPE_MOBILE);
Я также добавил следующие строки настроек в файл манифеста.
uses-permission android:name="android.permission.WRITE_SETTINGS"
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"
uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"
uses-permission android:name="android.permission.CHANGE_CONFIGURATION"
uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"
Кто-нибудь знает проблему или ответ на настройку типа подключения?
2 ответа
Моя проблема в том, что я хочу, чтобы он принудительно установил соединение в GPRS, а не использовал Wi-Fi.
Это не возможно в Android сегодня, извините.
Вы можете проверить, включен ли Wi-Fi, а в Android 2.0 и выше вы можете включить или отключить Wi-Fi программным способом. В Android 1.x лучшее, что вы можете сделать, это сказать пользователю, что он должен отключить его, и указать ему страницу настроек.
/**
* Checks if Wi-Fi is on.
*
* @return true, if Wi-fi is on.
*/
public static boolean isWiFiOn()
{
WifiManager wifi = (WifiManager) MyAccountApplication.getContext().getSystemService(Context.WIFI_SERVICE);
if (wifi == null)
return false;
List<WifiConfiguration> config = wifi.getConfiguredNetworks();
if (config != null)
for (int i = 0; i < config.size(); i++)
{
if (config.get(i).status == WifiConfiguration.Status.CURRENT)
{
return true;
}
}
return false;
}
public static void setWiFi(Context context, boolean enabled)
{
WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
if (wifi != null)
wifi.setWifiEnabled(enabled);
}