solucion queda porque los lanix k10 datos como celular arreglar apagar agarra activando activa android networking android-wifi android-5.0-lollipop

android - queda - porque mi lg no agarra el wifi



Enviar solicitud a través de datos móviles cuando está activado WIFI.(Android L) (2)

SDK: Android 5.0.1.

Android build: LRX22C.

Dispositivo: Nexus 5.

Problema: KITKAT (4.4.4) y debajo de API

1) startUsingNetworkFeature(int networkType, String feature) Este método está en desuso. Obsoleto a favor de la requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback) más requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback) .

2) requestRouteToHost(int networkType, int hostAddress) Este método está en desuso. Obsoleto a favor de requestNetwork(NetworkRequest, ConnectivityManager.NetworkCallback) , setProcessDefaultNetwork(Network) y getSocketFactory() .

se utilizaron para enviar solicitudes a través de la red de datos móviles cuando estaban activados los datos WIFI y móviles.

Al iniciar Android L, la API está obsoleta y ya no funciona.

Se utilizaron las nuevas API / clases NetworkRequest.Builder , NetworkRequest , ConnectivityManager.NetworkCallback , requestNetwork , registerNetworkCallback . Detalle aquí sobre el uso de API
Android L API

Código:

ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder builder = new NetworkRequest.Builder(); builder.addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED); builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR); NetworkRequest networkRequest = builder.build(); connectivityManager.requestNetwork(networkRequest, networkCallback); connectivityManager.registerNetworkCallback(networkRequest, networkCallback);

Escenario de trabajo:

Solo se reciben los datos móviles en la onAvailable llamada disponible.

No funciona. Escenario: tanto móvil como Wifi están encendidos y conectados. onAvailable devolución de llamada no se recibe del sistema. Por lo tanto, no puede establecer setProcessDefaultNetwork , ConnectivityManager.setProcessDefaultNetwork(preferedNetwork);

Frecuentemente: Siempre

Salida esperada: obtenga una devolución de llamada avaliabe de la red móvil cuando el wifi esté encendido.

¿Me falta algo aquí o el firmware tiene algunos problemas aquí?

Registros de ADB:

09-18 18:50:42.617: I/art(1339): Heap transition to ProcessStateJankImperceptible took 64.332086ms saved at least 225KB 09-18 18:50:43.060: I/auditd(16947): type=1400 audit(0.0:899): avc: denied { getattr } for comm="ls" path="/persist" dev="mmcblk0p16" ino=2 scontext=u:r:shell:s0 tcontext=u:object_r:persist_file:s0 tclass=dir 09-18 18:50:43.422: I/ActivityManager(769): START u0 {act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10200000 cmp=com.example.networktest/.MainActivity (has extras)} from pid 1149 on display 0 09-18 18:50:43.423: I/am_create_task(769): [0,20] 09-18 18:50:43.423: I/am_create_activity(769): [0,145055245,20,com.example.networktest/.MainActivity,android.intent.action.MAIN,NULL,NULL,270532608] 09-18 18:50:43.424: I/wm_task_created(769): [20,1] 09-18 18:50:43.424: I/wm_task_moved(769): [20,1,2] 09-18 18:50:43.424: I/am_pause_activity(769): [0,613529891,com.google.android.googlequicksearchbox/com.google.android.launcher.GEL] 09-18 18:50:43.442: I/am_destroy_service(769): [0,453570950,2161] 09-18 18:50:43.444: D/audio_hw_primary(200): select_devices: out_snd_device(2: speaker) in_snd_device(0: ) 09-18 18:50:43.447: I/am_on_paused_called(1149): [0,com.google.android.launcher.GEL] 09-18 18:50:43.492: I/am_proc_start(769): [0,16964,10091,com.example.networktest,activity,com.example.networktest/.MainActivity] 09-18 18:50:43.492: I/ActivityManager(769): Start proc com.example.networktest for activity com.example.networktest/.MainActivity: pid=16964 uid=10091 gids={50091, 3003} 09-18 18:50:43.497: I/am_create_service(769): [0,565414612,.LightweightIndexService,10009,1339] 09-18 18:50:43.501: I/art(16964): Late-enabling -Xcheck:jni 09-18 18:50:43.522: I/am_proc_bound(769): [0,16964,com.example.networktest] 09-18 18:50:43.524: I/am_restart_activity(769): [0,145055245,20,com.example.networktest/.MainActivity] 09-18 18:50:43.526: I/art(16964): Profiler disabled. To enable setprop dalvik.vm.profiler 1 09-18 18:50:43.533: I/am_create_service(769): [0,28763261,.LightweightIndexService$LightweightWorkerService,10009,1339] 09-18 18:50:43.536: I/am_destroy_service(769): [0,28763261,1339] 09-18 18:50:43.575: D/ConnectivityService(769): requestNetwork for NetworkRequest [ id=18, legacyType=-1, [ Transports: CELLULAR Capabilities: NOT_RESTRICTED] ] 09-18 18:50:43.575: D/ConnectivityService(769): handleRegisterNetworkRequest checking NetworkAgentInfo [WIFI ()] 09-18 18:50:43.575: D/ConnectivityService(769): sending new NetworkRequest to factories 09-18 18:50:43.575: D/WIFI(769): got request NetworkRequest [ id=18, legacyType=-1, [ Transports: CELLULAR Capabilities: NOT_RESTRICTED] ] with score 0 09-18 18:50:43.575: D/WIFI(769): my score=60, my filter=[ Transports: WIFI Capabilities: INTERNET&NOT_RESTRICTED LinkUpBandwidth>=1048576Kbps LinkDnBandwidth>=1048576Kbps] 09-18 18:50:43.575: D/Ethernet(769): got request NetworkRequest [ id=18, legacyType=-1, [ Transports: CELLULAR Capabilities: NOT_RESTRICTED] ] with score 0 09-18 18:50:43.575: D/Ethernet(769): my score=-1, my filter=[ Transports: ETHERNET Capabilities: INTERNET&NOT_RESTRICTED LinkUpBandwidth>=100000Kbps LinkDnBandwidth>=100000Kbps] 09-18 18:50:43.575: D/TelephonyNetworkFactory(1113): got request NetworkRequest [ id=18, legacyType=-1, [ Transports: CELLULAR Capabilities: NOT_RESTRICTED] ] with score 0 09-18 18:50:43.575: D/TelephonyNetworkFactory(1113): my score=50, my filter=[ Transports: CELLULAR Capabilities: MMS&SUPL&DUN&FOTA&IMS&CBS&IA&RCS&XCAP&EIMS&INTERNET&NOT_RESTRICTED] 09-18 18:50:43.576: D/TelephonyNetworkFactory(1113): Cellular needs Network for NetworkRequest [ id=18, legacyType=-1, [ Transports: CELLULAR Capabilities: NOT_RESTRICTED] ] 09-18 18:50:43.576: D/ConnectivityService(769): listenForNetwork for NetworkRequest [ id=19, legacyType=-1, [ Transports: CELLULAR Capabilities: NOT_RESTRICTED] ] 09-18 18:50:43.577: D/ConnectivityService(769): handleRegisterNetworkRequest checking NetworkAgentInfo [WIFI ()] 09-18 18:50:43.841: I/am_create_service(769): [0,510459843,.EventLoggerService,10022,2161] 09-18 18:50:43.855: I/am_create_service(769): [0,271933548,.GetToken,10009,1339] 09-18 18:50:43.899: I/am_create_service(769): [0,609002555,.GoogleAccountDataService,10009,1339] 09-18 18:50:43.902: W/GLSUser(1339): GoogleAccountDataService.getToken() 09-18 18:50:43.910: I/am_destroy_service(769): [0,609002555,1339] 09-18 18:50:43.914: I/am_destroy_service(769): [0,271933548,1339] 09-18 18:50:43.996: I/sf_frame_dur(197): [com.google.android.googlequicksearchbox/com.google.android.launcher.GEL,89,0,2,0,1,2,1] 09-18 18:50:44.299: I/am_destroy_service(769): [0,510459843,2161] 09-18 18:50:44.760: I/art(16309): Heap transition to ProcessStateJankImperceptible took 6.712188ms saved at least 830KB 09-18 18:50:48.070: I/auditd(17031): type=1400 audit(0.0:900): avc: denied { getattr } for comm="ls" path="/persist" dev="mmcblk0p16" ino=2 scontext=u:r:shell:s0 tcontext=u:object_r:persist_file:s0 tclass=dir 09-18 18:50:48.579: I/am_on_resume_called(16964): [0,com.example.networktest.MainActivity] 09-18 18:50:48.587: D/CanvasContext(16964): Render dirty regions requested: true 09-18 18:50:48.592: I/am_destroy_service(769): [0,565414612,1339] 09-18 18:50:48.597: I/art(2161): Heap transition to ProcessStateJankImperceptible took 109.715785ms saved at least 2MB 09-18 18:50:48.626: W/Adreno-GSL(16964): <ioctl_kgsl_device_getproperty:663>: mmap failed: errno 22 Invalid argument 09-18 18:50:48.626: I/Adreno-EGL(16964): <qeglDrvAPI_eglInitialize:320>: EGL 1.4 QUALCOMM Build: I10246dbd022c719c705be805d5642cc8fdfbd2a2Date: 03/07/14 09-18 18:50:48.626: I/CanvasContext(16964): Initialized EGL, version 1.4 09-18 18:50:48.644: I/art(1149): Heap transition to ProcessStateJankImperceptible took 75.768178ms saved at least 2MB 09-18 18:50:48.644: D/OpenGLRenderer(16964): Enabling debug mode 0 09-18 18:50:48.650: I/art(1252): Heap transition to ProcessStateJankImperceptible took 92.615158ms saved at least 384KB 09-18 18:50:48.688: I/am_activity_launch_time(769): [0,145055245,com.example.networktest/.MainActivity,5230,5230] 09-18 18:50:48.688: I/ActivityManager(769): Displayed com.example.networktest/.MainActivity: +5s230ms 09-18 18:50:48.904: I/sf_frame_dur(197): [Starting com.example.networktest,1,0,0,0,0,0,0]

EDIT: Google bug raised 1 Google bug raised 2 ¿Qué significa "Sin comentarios ingresados ​​para este cambio" de Google?

Gracias

Nithin


Aquí hay una función que puede simplificar la acción de preferir ciertos tipos de redes para su aplicación (debería funcionar para cualquier nivel de API actual (26 al momento de la escritura):

private void alwaysPreferNetworksWith(@NonNull int[] capabilities, @NonNull int[] transportTypes) { NetworkRequest.Builder request = new NetworkRequest.Builder(); // add capabilities for (int cap: capabilities) { request.addCapability(cap); } // add transport types for (int trans: transportTypes) { request.addTransportType(trans); } final ConnectivityManager connectivityManager = (ConnectivityManager) getApplicationContext().getSystemService(CONNECTIVITY_SERVICE); connectivityManager.registerNetworkCallback(request.build(), new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { try { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) { ConnectivityManager.setProcessDefaultNetwork(network); } else { connectivityManager.bindProcessToNetwork(network); } } catch (IllegalStateException e) { Log.e(TAG, "ConnectivityManager.NetworkCallback.onAvailable: ", e); } } }); }

Uso:

// Add any NetworkCapabilities.NET_CAPABILITY_... int[] capabilities = new int[]{ NetworkCapabilities.NET_CAPABILITY_INTERNET }; // Add any NetworkCapabilities.TRANSPORT_... int[] transportTypes = new int[]{ NetworkCapabilities.TRANSPORT_CELLULAR }; alwaysPreferNetworksWith(capabilites, transportTypes);


Bueno, finalmente encontramos la solución para esto. El truco era usar la capacidad como NET_CAPABILITY_INTERNET . Que es lo mismo que startUsingNetworkFeature(ConnectivityManager.TYPE_MOBILE, FEATURE_ENABLE_HIPRI);

Vea el diseño del Firmware aquí

builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET); builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

Después de esto, puedo onAvailable devolución de llamada disponible desde el sistema y luego establecer mi red predeterminada del proceso como datos móviles.

Por lo tanto, toda la solicitud pasa por los datos móviles, incluso si wifi está activado. ¡GUAUU!

Nota: Esto no estaba funcionando en las versiones iniciales de Preview L.

Editar 19-10-2015: setProcessDefaultNetwork ahora es depcreated use bindProcessToNetwork