Android-N Update-app

264 views
Skip to first unread message

Jaume Tugores

unread,
Oct 5, 2016, 2:19:05 AM10/5/16
to desarrolladores-android
Hola, ya estoy aqui otra vez, con otro problema derivado de haber actualizado el movil a androidN.
Tengo una aplicacion compilada con: compileSdkVersion 24  y que ahora cuando actualizo la versión de mi app, me da este error:

D/NetworkSecurityConfig: No Network Security Config specified, using platform default

El proceso que sigo es conectarme a una dirección web particular, descargo la nueva app, la guardo en la carpeta download, todo esto va perfecto, pero cuando quiero ejecutar un intent para la instalacion:

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/mnt/sdcard/Download/miapp.apk")), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent); <--- aqui da el error.

Me salta el error anteriormente citado.
He estado buscando y parece que los tiros van por hacer un archivo xml algo así.

<?xml version="1.0" encoding="utf-8"?>
<manifest ... >
 
<application ... >
   
<meta-data android:name="android.security.net.config"
               
android:resource="@xml/network_security_config" />
    ...
 
</application>
</manifest>

El problema es que no se como hacerlo ni como aplicarlo a mi caso, ya que no hay mucha informacion y menos en español. Si alguien lo ha resuelto, le agradecería lo compartiera.
Gracias.

Eduardo Martin Cabrera

unread,
Oct 5, 2016, 7:27:15 AM10/5/16
to desarrollad...@googlegroups.com
Buenas, me resulta extraño que emita un error de red cuando se lanza un intent que no parece tener relacion a cosas de red, lo lógico seria que lance un error del filesystem por ejemplo; seria interesante ver un logcat completo.
Por otro lado revisando en stackoverflow sobre ese error, lei que usar meta-data para el network security config esta obsoleto y solo es valido para N preview y no N final (por dios, que lio hicieron ahí!)

entonces en vez de usar:

<application ... >
   
<meta-data ...>
se debe usar:
<application 
android:networkSecurityConfig="@xml/network_security_config" >
 
 ...quizas sea eso, pero ya te digo me parece que no tiene relación el error que aparece con ese Intent, saludos!

--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-android+unsub...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrolladores-android@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Para ver esta conversación en el sitio web, visita https://groups.google.com/d/msgid/desarrolladores-android/ff873220-b3a6-4747-a329-00d5c8592094%40googlegroups.com.
Para acceder a más opciones, visita https://groups.google.com/d/optout.

Gabriel Pozo

unread,
Oct 5, 2016, 10:56:14 AM10/5/16
to desarrollad...@googlegroups.com
Como dice Eduardo, pon en eso en el tag application
https://developer.android.com/training/articles/security-config.html
Y como el también dice, deberías enviar una salida completa del logcat, porque no parece haber una relación directa el error del código que muestras ;)

Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.

--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.

Jaume Tugores

unread,
Oct 5, 2016, 4:09:04 PM10/5/16
to desarrolladores-android
Log mas completo:

I/Adreno: QUALCOMM build                   : 74df444, I409c65498b
          Build Date                       : 06/22/16
          OpenGL ES Shader Compiler Version: XE031.08.00.02
          Local Branch                     : N16
          Remote Branch                    : 
          Remote Branch                    : 
          Reconstruct Branch               : 
I/OpenGLRenderer: Initialized EGL, version 1.4
D/OpenGLRenderer: Swap behavior 1
D/nuve: 57600
D/nuve: 57600
D/nuve: 57600
D/NetworkSecurityConfig: No Network Security Config specified, using platform default
E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                  Process: es.puigverd.puigverd, PID: 18720
                  java.lang.RuntimeException: An error occurred while executing doInBackground()
                      at android.os.AsyncTask$3.done(AsyncTask.java:318)
                      at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                      at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                      at java.lang.Thread.run(Thread.java:761)
                   Caused by: android.os.FileUriExposedException: file:///mnt/sdcard/Download/GesPVerd.apk exposed beyond app through Intent.getData()
                      at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)
                      at android.net.Uri.checkFileUriExposed(Uri.java:2346)
                      at android.content.Intent.prepareToLeaveProcess(Intent.java:8933)
                      at android.content.Intent.prepareToLeaveProcess(Intent.java:8894)
                      at android.app.Instrumentation.execStartActivity(Instrumentation.java:1517)
                      at android.app.ContextImpl.startActivity(ContextImpl.java:819)
                      at android.app.ContextImpl.startActivity(ContextImpl.java:796)
                      at android.content.ContextWrapper.startActivity(ContextWrapper.java:356)
                      at es.puigverd.puigverd.UpdateApp.doInBackground(UpdateApp.java:63)
                      at es.puigverd.puigverd.UpdateApp.doInBackground(UpdateApp.java:26)
                      at android.os.AsyncTask$2.call(AsyncTask.java:304)
                      at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                      at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                      at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                      at java.lang.Thread.run(Thread.java:761) 
Application terminated.


Al ejecutar:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File("/mnt/sdcard/Download/GesPVerd.apk")), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
context.startActivity(intent); -->> esta linea provoca el error.


** De momento no he tenido tiempo de hacer más pruebas

Gabriel Pozo

unread,
Oct 5, 2016, 4:29:30 PM10/5/16
to desarrolladores-android
De tu log, la línea que te dice a que se debe el error, no es la que vos comentaste, si no que mira bien esta línea donde dice que el error es "causado por":

Caused by: android.os.FileUriExposedException: file:///mnt/sdcard/Download/GesPVerd.apk exposed beyond app through Intent.getData()


--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.

Jaume Tugores

unread,
Oct 7, 2016, 6:17:49 AM10/7/16
to desarrolladores-android
Perdon por el tiempo tardado en responder, pero he estado muy atareado.
Tienes razon Gabriel, yo solo miraba la última línea de antes del error.
Intentando corregir este error, ya había tenido otro problema anterior por el mismo motivo y he adaptado el código para usar el file provider y me ha quedado asi:

String app = "GesPVerd.apk";
String carpeta = Environment.getExternalStorageDirectory() + File.separator + "Download";
File miApp = new File(carpeta, app);
Uri miAppUri = FileProvider.getUriForFile(this.context, this.context.getApplicationContext().getPackageName() + ".provider", miApp);

Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(miAppUri,"application/vnd.android.package-archive");

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
context.startActivity(intent);  -->>> vuelve a darme error(otro) aqui.

el file provider que tengo es este:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path name="external_files" path="."/>
<files-path name="xxx" path="yyy/"/>
</paths>

y en el manifiest:

<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths"/>
</provider>


Pero ahora sigue yendo mal y el log que me da es este:
10-07 12:00:09.860 13963-13963/? W/System: ClassLoader referenced unknown path: /system/priv-app/GooglePackageInstaller/lib/arm64
10-07 12:00:09.900 4807-4828/? W/ActivityManager: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{42ae5ff 13963:com.google.android.packageinstaller/u0a17} (pid=13963, uid=10017) that is not exported from uid 10122
10-07 12:00:09.903 13963-13976/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
                                                   Process: com.google.android.packageinstaller, PID: 13963
                                                   java.lang.RuntimeException: An error occurred while executing doInBackground()
                                                       at android.os.AsyncTask$3.done(AsyncTask.java:318)
                                                       at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
                                                       at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:242)
                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243)
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
                                                       at java.lang.Thread.run(Thread.java:761)
                                                    Caused by: java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{42ae5ff 13963:com.google.android.packageinstaller/u0a17} (pid=13963, uid=10017) that is not exported from uid 10122
                                                       at android.os.Parcel.readException(Parcel.java:1683)
                                                       at android.os.Parcel.readException(Parcel.java:1636)
                                                       at android.app.ActivityManagerProxy.getContentProvider(ActivityManagerNative.java:4169)
                                                       at android.app.ActivityThread.acquireProvider(ActivityThread.java:5434)
                                                       at android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider(ContextImpl.java:2267)
                                                       at android.content.ContentResolver.acquireUnstableProvider(ContentResolver.java:1515)
                                                       at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1129)
                                                       at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:982)
                                                       at android.content.ContentResolver.openInputStream(ContentResolver.java:702)
                                                       at com.android.packageinstaller.PackageInstallerActivity$StagingAsyncTask.doInBackground(PackageInstallerActivity.java:732)
                                                       at com.android.packageinstaller.PackageInstallerActivity$StagingAsyncTask.doInBackground(PackageInstallerActivity.java:723)
                                                       at android.os.AsyncTask$2.call(AsyncTask.java:304)
                                                       at java.util.concurrent.FutureTask.run(FutureTask.java:237)
                                                       at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:243) 
                                                       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133) 
                                                       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607) 
                                                       at java.lang.Thread.run(Thread.java:761) 
10-07 12:00:09.909 4807-8437/? W/ActivityManager:   Force finishing activity com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity
10-07 12:00:09.915 4807-8437/? W/ActivityManager:   Force finishing activity com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity
10-07 12:00:09.915 4807-8437/? W/ActivityManager: Duplicate finish request for ActivityRecord{b0b43e9 u0 com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity t669 f}
10-07 12:00:09.952 13963-13979/? I/Adreno: QUALCOMM build                   : 74df444, I409c65498b
                                           Build Date                       : 06/22/16
                                           OpenGL ES Shader Compiler Version: XE031.08.00.02
                                           Local Branch                     : N16
                                           Remote Branch                    : 
                                           Remote Branch                    : 
                                           Reconstruct Branch               : 
10-07 12:00:09.956 13963-13979/? I/OpenGLRenderer: Initialized EGL, version 1.4
10-07 12:00:09.956 13963-13979/? D/OpenGLRenderer: Swap behavior 1
10-07 12:00:09.967 4807-12010/? I/OpenGLRenderer: Initialized EGL, version 1.4
10-07 12:00:09.967 4807-12010/? D/OpenGLRenderer: Swap behavior 1
10-07 12:00:10.003 4807-14417/? D/WindowManager: relayoutVisibleWindow: Window{685d441 u0 es.puigverd.puigverd/es.puigverd.puigverd.InicioActivity EXITING} mAnimatingExit=true, mRemoveOnExit=false, mDestroying=false
10-07 12:00:10.720 4807-4863/? I/WindowManager: Destroying surface Surface(name=Starting com.google.android.packageinstaller) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.removeLocked:1449 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2478 com.android.server.wm.AppWindowToken.destroySurfaces:365 com.android.server.wm.WindowStateAnimator.finishExit:565 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:427 com.android.server.wm.WindowAnimator.updateAppWindowsLocked:176 
10-07 12:00:10.795 4807-7077/? I/WindowManager: Destroying surface Surface(name=com.google.android.packageinstaller/com.android.packageinstaller.PackageInstallerActivity) called by com.android.server.wm.WindowStateAnimator.destroySurface:2014 com.android.server.wm.WindowStateAnimator.destroySurfaceLocked:881 com.android.server.wm.WindowState.removeLocked:1449 com.android.server.wm.WindowManagerService.removeWindowInnerLocked:2478 com.android.server.wm.WindowManagerService.removeWindowLocked:2436 com.android.server.wm.WindowManagerService.removeWindowLocked:2305 com.android.server.wm.WindowManagerService.removeWindow:2300 com.android.server.wm.Session.remove:193 

Y no entiendo que pasa, ya que anteriormente intentaba abrir un pdf y quedo arreglado aplicando este método que ahora aquí no me va funciona.
los datos cogidos del depurador son estos:

/mnt/sdcard/Download/GesPVerd.apk ** file /storage/emulated/0/Download ** carpeta content://es.puigverd.puigverd.provider/external_files/Download/GesPVerd.apk ** uri mifile: /storage/emulated/0/Download/GesPVerd.apk
carpeta: /storage/emulated/0/Download


Gracias por vuestro tiempo.

Gabriel Pozo

unread,
Oct 7, 2016, 9:08:27 AM10/7/16
to desarrolladores-android
Te faltan los permisos para el uso del provider, leíste el error?

Caused by: java.lang.SecurityException: Permission Denial: opening provider android.support.v4.content.FileProvider from ProcessRecord{42ae5ff 13963:com.google.android.packageinstaller/u0a17} (pid=13963, uid=10017) that is not exported from uid 10122
                                                       at android.os.Parcel.readException(Parcel.java:1683)
--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para anular la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.
Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.

Jaume Tugores

unread,
Oct 7, 2016, 10:50:58 AM10/7/16
to desarrolladores-android
Efectivamente, Gabriel, me faltaban los permisos.
Como lo copie del anterior(para ver pdf), crei que lo tenía todo puesto y no me había fijado que no había puesto los permisos y al leerlo, pensé que se refería a otro problema. (falta de atención)
el código que funciona me ha quedado así:
String app = "GesPVerd.apk";
String carpeta = Environment.getExternalStorageDirectory() + File.separator + "Download";
File miApp = new File(carpeta, app);
Uri miAppUri = FileProvider.getUriForFile(this.context, this.context.getApplicationContext().getPackageName() + ".provider", miApp);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(miAppUri,"application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // without this flag android returned a intent error!
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);  --> faltaba esta linea
context.startActivity(intent);

Gracias

Deiner David Martinez Gutierrez

unread,
May 21, 2017, 7:10:37 PM5/21/17
to desarrolladores-android
Hola buenas tardes 

estoy tratando de conectarme a un webservice  pero efectivametne me sale el primero error que comentaba jaume 

No Network Security Config specified, using platform default

adjunto parte mi log, lo rar o es que no arroja ningun error  soy nuevo en estoy estoy aprendiendo me podrian ayudar por favor gracias

05-21 17:56:12.352 14195-14195/com.example.papo.calculadora W/IInputConnectionWrapper: finishComposingText on inactive InputConnection
05-21 17:56:13.818 14195-14195/com.example.papo.calculadora I/System.out: Voy a lanzar
05-21 17:56:13.841 14195-15455/com.example.papo.calculadora D/NetworkSecurityConfig: No Network Security Config specified, using platform default
05-21 17:56:14.043 14195-14200/com.example.papo.calculadora I/art: Do partial code cache collection, code=19KB, data=30KB
05-21 17:56:14.044 14195-14200/com.example.papo.calculadora I/art: After code cache collection, code=19KB, data=30KB
05-21 17:56:14.044 14195-14200/com.example.papo.calculadora I/art: Increasing code cache capacity to 128KB
05-21 17:56:15.448 14195-14195/com.example.papo.calculadora I/System.out: null

Gabriel Pozo

unread,
May 21, 2017, 7:32:43 PM5/21/17
to desarrolladores-android
Deberías abrir otro hilo, como se le dijo a Jaume, debes mostrarnos una salida más completa del log, y el código que usas. Ya que ese no es el error, ahí solo te dice que no tenes configurada correctamente la seguridad, pero no que es un error por el que no funciona la conexión ;)

--
Para participar es necesario que leas detenidamente las normas del grupo: https://goo.gl/xeTRQm
---
Has recibido este mensaje porque estás suscrito al grupo "desarrolladores-android" de Grupos de Google.
Para cancelar la suscripción a este grupo y dejar de recibir sus mensajes, envía un correo electrónico a desarrolladores-a...@googlegroups.com.

Para publicar en este grupo, envía un correo electrónico a desarrollad...@googlegroups.com.
Visita este grupo en https://groups.google.com/group/desarrolladores-android.
Reply all
Reply to author
Forward
0 new messages