Как использовать Соединение 3G в Приложении Android вместо Wi-Fi?

Как использовать Соединение 3G в Приложении Android вместо Wi-Fi?

Я хочу соединить соединение 3G, есть ли какой-либо пример кода для соединения с 3G вместо Wi-Fi?

31
задан Jeyavel 26 March 2010 в 15:41
поделиться

2 ответа

Приложение T-Mobile «Моя учетная запись» делает это. Если вы подключены к Wi-Fi, оно сообщает вам, что их программа не будет работать через Wi-Fi, а затем запрашивает пользователь, если он хочет отключить соединение Wi-Fi. Если вы выберете «Нет», то приложение закроется, если вы выберете «Да», тогда приложение отключает ваше WiFi-соединение, а затем продолжает запуск.

Я думаю, что это - хорошая модель для подражания, она гарантирует, что ваше приложение не запускается через Wi-Fi, и позволяет пользователю решить, хотят ли они выключить Wi-Fi или нет. Улучшение этой модели будет включать снова Wi-Fi, когда пользователь уходит от вашего приложения.

Я не тестировал следующий код, но похоже, что он должен работать (изменено из здесь )

используйте следующие разрешения в своем манифесте

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"></uses-permission>

, а вот фактический код для включить / выключить Wi-Fi

private WifiManager wifiManager;

@Override 
public void onCreate(Bundle icicle)
{
    ....................

    wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);

    if(wifiManager.isWifiEnabled())
    {
        wifiManager.setWifiEnabled(false);
    }
    else
    {
        wifiManager.setWifiEnabled(true);
    }
}

Если вы не хотите идти по этому маршруту, похоже, вы можете сказать телефону, что вы предпочитаете использовать сеть мобильной передачи данных, а не сеть Wi-Fi.

Android ConnectivityManager предлагает функцию setNetworkPreference . Эта функция на самом деле не документирована, поскольку вы можете определить, щелкнув ссылку. Я бы немного поиграл с этим, потому что определенные константы, кажется, намекают, что вы можете установить это либо на TYPE_MOBILE , либо на TYPE_WIFI , и есть константа DEFAULT_NETWORK_PREFERENCE также это определяется как 0x00000001, что совпадает с TYPE_WIFI. Поэтому попробуйте получить доступ к ConnectivityManager, вызвав

Context.getSystemService(Context.CONNECTIVITY_SERVICE);

, а затем попробуйте использовать функцию setNetworkPreference ().

Похоже, что для этого не требуются какие-либо разрешения в манифесте, но может потребоваться разрешение CHANGE_NETWORK_STATE или что-то в этом роде.

Если вы подадите в суд на функцию setNetworkPreference, вероятно, будет лучше также вернуть для Network Preference исходные значения (полученные от getNetworkPreference)

Я надеюсь, что это поможет.

13
ответ дан 27 November 2019 в 21:39
поделиться

Я думаю, что это невозможно из Java. Система отключает всю связь на основе мобильной сети, если подключена к беспроводной сети. Я думаю, что вам не разрешено запускать 3G соединение из вашей программы.

5
ответ дан 27 November 2019 в 21:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: