2010-02-09 6 views
2

Я пишу приложение для Android. Моя проблема в том, что я хочу, чтобы он заставлял соединение в GPRS и не использовал wi fi. У меня есть решение, как показано ниже, но это приводит к сбою приложения при запуске.Настройка подключения к Android-приложениям

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" 

Кто-нибудь знает проблему или ответ на установление типа соединения?

+1

Я бы использовать 'LogCat', вы должны использовать класс' Log', чтобы оставить отладочные операторы внутри вашего кода, где вы думаете, что проблема может лежать, и внутри 'окна LogCat' вы можете увидеть след что вызывает крах. Сделайте это, запустите приложение, и если он сработает, загляните в окно консоли, что вызвало сбой и опубликуйте его здесь. –

+0

Проблема для эмулятора была связана с разрешением write_secure_settings, и я добавил его в манифест. Теперь он говорит, что приложение выбрасывает securityException. Я обнаружил, что для изменения безопасных настроек знак приложения должен быть таким же, как и сам телефон, но я не уверен в этой информации. Поэтому я думаю, что это действительно невозможно сделать в андроиде. – miette

ответ

1

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

Это невозможно в Android сегодня, извините.

1

Вы можете проверить, включен ли 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); 
} 
Смежные вопросы