Android-приложение, устанавливающее тип подключения - PullRequest
2 голосов
/ 09 февраля 2010

Я пишу приложение для 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 ]

1 голос
/ 13 июня 2011

Вы можете проверить, включен ли 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);
}
1 голос
/ 09 февраля 2010

Моя проблема в том, что я хочу, чтобы это заставило соединение в GPRS и не использовать Wi Fi.

Сегодня в Android это невозможно, извините.

...