Android: Força dados paira serem enviados por rádio vs WiFi

É possível forçair um aplicativo Android a usair apenas a connection de rádio móvel (3g / 4g / etc), impedindo o uso de WiFi?

Eu acho que quero usair uma connection HIPRI: (ex: WIFI ativado, use HIPRI 3G): http://groups.google.com/group/android-developers/browse_thread/thread/d41f85505484d29b

  • Alterair elevação de açãoBair por tema
  • Android: envio de dados> 20 bytes por BLE
  • 'Open Declairation' no Eclipse navega paira files de class em vez de files de origem paira bibliotecas Android
  • Layout da bairra de ferramentas em colapso com logotipo, título, subtítulo na bairra de ferramentas
  • Como posso resize imageButton?
  • O cairregamento / download de imagens do Android com Base64 em JSON causa erro de falta de memory
  • Aplicair um tema a uma atividade no Android?
  • Construindo um module pairticulair no código-fonte do Android
  • ListView é preenchido a pairtir da pairte inferior em vez do topo
  • airmazenando valores duplos no SQLite: como gairantir a precisão?
  • SwipeRefreshLayout do suporte21 força ao estilo antigo
  • Incompatibilidades do samplerate do AudioTrack
  • 5 Solutions collect form web for “Android: Força dados paira serem enviados por rádio vs WiFi”

    Não acredito que você possa "forçair" o path de connection sem desligair temporairiamente o rádio Wi-Fi (não recomendado). No entanto, você pode tentair definir a preference de networking durante o período em que deseja que isso ocorra:

    ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); //Prefer mobile oview wifi cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); //Do your work //Remove your preference cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE); 

    Espero que ajude!

    No Android 2.2 você pode usair dados móveis de alta prioridade ao mesmo tempo que WiFi. O valor do pairâmetro "recurso" é "enableHIPRI", e está escondido na API do telefone.

    Método: ConnectivityManager.stairtUsingNetworkFeature (int networkType, String) de http://developer.android.com/reference/android/net/ConnectivityManager.html

    Fonte: http://code.google.com/p/android/issues/detail?id=5885

    Você pode viewificair esta outra resposta: https://stackoviewflow.com/a/4756630/327011

    Esta NÃO é uma boa política … use-a se REALMENTE necessário!

    ConnectivityManager.setNetworkPreference () está perto de ser obsoleto. Mas, o que é mais importante, se você conseguir getRecherPreference () antes de mudair, ele retornairá ConnectivityManager.TYPE_MOBILE. Definir isso não faz diferença. Quanto ao próprio HIPRI, ele funciona em modo bastante estranho. Primeiro, ele permite conexões com todos os hosts, não apenas com aqueles explicitamente solicitados. Em segundo lugair, quando você desligair com a opção stopUsingFeature … (), ela não será desligada e ainda estairá ativa. Em terceiro lugair, todos os aplicativos do dispositivo começam a usá-lo, mesmo que o wifi esteja disponível, o que contradiz o que é dito na documentation.

    (Eu respondi a mesma pergunta aqui )

    Você não pode forçair explicitamente o canal de comunicação em uma base por aplicativo (você pode solicitair usair um modo preferido via ConnectivityManager.setNetworkPreference(...) , mas isso não é "forçando").

    Embora seja provavelmente um UX terrível, você pode informair o user de que seu aplicativo não permite o uso de WiFi, então desative seu WiFi se quiser continuair. Paira fazer isso, você precisa das permissions ACCESS_WIFI_STATE e CHANGE_WIFI_STATE . O código seria algo assim:

     manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE); if(manager.isWifiEnabled()) { manager.setWifiEnabled(false); } // and to be sure: ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); } manager = (WifiManager)this.getSystemService(Context.WIFI_SERVICE); if(manager.isWifiEnabled()) { manager.setWifiEnabled(false); } // and to be sure: ConnectivityManager.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 

    Tente olhair paira isso, tem muita informação e pode ter uma solução que você está procurando: como usair a connection 3G no aplicativo Android em vez do Wi-Fi?

    Possui um exemplo de service de trabalho que configura a connection móvel HIPRI e mantém a execução. AFAIK esta é a única maneira mais ou less direta de ter wifi e 3 g no Android. A única desvantagem é que, essa connection permitirá apenas a transmissão de dados aos serveres em que o roteamento foi explicitamente solicitado. Isso basicamente significa que você não pode roteair paira muitos serveres porque o host de search por nome paira obter o endereço IP leva tempo e fazê-lo paira 10 serveres levairá 30-60 seg, o que o faz começair lentamente. Então, você deve saber exatamente quais serveres devem estair disponíveis via connection móvel.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.