Android – java.lang.SecurityException: denegación de permiso: bash de inicio

Tengo una biblioteca (jar) en la ruta de comstackción de mi proyecto. El proyecto accede a MainActivity en el jar, con la siguiente intención:

final Intent it = new Intent(); it.setClassName("com.example.lib", "com.example.lib.MainActivity"); startActivity(it); 

Solía ​​funcionar por algún tiempo, pero de repente comencé a obtener ‘ActivityNotFoundException: No Activity found to handle Intent’ que pude resolver. Pero ahora estoy atascado con una ‘java.lang.SecurityException: denegación de permiso: inicio de intención’.

He intentado todas las sugerencias hechas en stackoverflow (verifique si hay duplicados en el archivo de manifiesto, agregue android: exported = “true” al manifiesto de lib; Eclipse> Project> Clean; agregue / modifique las tags de ‘intent-filter’; etc.). Incluso traté de volver a escribir el manifiesto del proyecto pero no ir a ninguna parte con él.

Aquí está la salida de logcat:

 11-07 06:20:52.176: E/AndroidRuntime(4626): FATAL EXCEPTION: main 11-07 06:20:52.176: E/AndroidRuntime(4626): java.lang.SecurityException: Permission Denial: starting Intent { cmp=com.example.lib/.MainActivity } from ProcessRecord{40dd3778 4626:com.example.project/u0a10046} (pid=4626, uid=10046) not exported from uid 10047 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1425) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Parcel.readException(Parcel.java:1379) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1885) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1412) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3370) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivityForResult(Activity.java:3331) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:824) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivity(Activity.java:3566) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.startActivity(Activity.java:3534) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.example.project.MainActivity.onOptionsItemSelected(MainActivity.java:93) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.Activity.onMenuItemSelected(Activity.java:2548) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.support.v4.app.FragmentActivity.onMenuItemSelected(FragmentActivity.java:366) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.policy.impl.PhoneWindow.onMenuItemSelected(PhoneWindow.java:980) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.MenuBuilder.dispatchMenuItemSelected(MenuBuilder.java:735) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.MenuItemImpl.invoke(MenuItemImpl.java:149) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.MenuBuilder.performItemAction(MenuBuilder.java:874) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.ActionMenuView.invokeItem(ActionMenuView.java:547) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.view.menu.ActionMenuItemView.onClick(ActionMenuItemView.java:115) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.view.View.performClick(View.java:4204) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.view.View$PerformClick.run(View.java:17355) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Handler.handleCallback(Handler.java:725) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Handler.dispatchMessage(Handler.java:92) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.os.Looper.loop(Looper.java:137) 11-07 06:20:52.176: E/AndroidRuntime(4626): at android.app.ActivityThread.main(ActivityThread.java:5041) 11-07 06:20:52.176: E/AndroidRuntime(4626): at java.lang.reflect.Method.invokeNative(Native Method) 11-07 06:20:52.176: E/AndroidRuntime(4626): at java.lang.reflect.Method.invoke(Method.java:511) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) 11-07 06:20:52.176: E/AndroidRuntime(4626): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) 11-07 06:20:52.176: E/AndroidRuntime(4626): at dalvik.system.NativeStart.main(Native Method) 

Manifiesto XML del proyecto:

                          

¿Qué estoy pasando por alto? ¿Alguna sugerencia?

EDITAR

Actualicé el manifest.xml con todas las demás actividades y de alguna manera, eso resolvió el problema. La actividad de bash se inicia sin ningún error. PERO , esto es solo en AVD. En el dispositivo real, sigue arrojando el mismo error. He desinstalado completamente la aplicación del dispositivo y reinstalado, pero el mismo error.

La excepción es clara. Debes configurar android:exported="true" en tu archivo AndroidManifest.xml donde declaras esta Actividad.

Editar

       

Esto es solo para android studio

Así que me encontré con este problema recientemente. El problema estaba en la configuración de comstackción / ejecución. Al parecer, el estudio de Android había elegido una actividad en mi proyecto como actividad de lanzamiento, sin tener en cuenta mi elección en el archivo de manifiesto.

Haga clic en el nombre del módulo justo a la izquierda del botón Ejecutar y haga clic en “Editar configuraciones …” Ahora asegúrese de que esté seleccionado “Iniciar actividad predeterminada”.

Lo gracioso cuando recibí este error fue que todavía podía iniciar la aplicación desde el dispositivo y comienza con la actividad preferida. Pero el lanzamiento desde el IDE parecía imposible.

Seleccione su configuración adecuada para iniciar la aplicación.

En mi caso encontré un error como la imagen de abajo:

enter image description here

Yo acababa de cambiar como:

enter image description here

Puede ayudar a alguien, gracias 🙂

Agregue android: exported = “true” en su etiqueta de actividad ‘com.example.lib.MainActivity’.

Desde el Android: documentación exportada

android: exported Independientemente de si la actividad puede ser iniciada por componentes de otras aplicaciones: “verdadera” si es posible y “falsa” si no es así. Si es “falso”, la actividad solo puede iniciarse con componentes de la misma aplicación o aplicaciones con el mismo ID de usuario.

Desde su salida de logcat, claramente una discrepancia en el uid está causando el problema. Por lo tanto, agregar el android: exported = “true” debería hacer el truco.

Similar a la respuesta de Olayinka sobre el archivo de configuración para ADT: Acabo de tener el mismo problema en el IdeaU v14 de IntelliJ.

Estoy trabajando en un tutorial que me hizo cambiar la actividad inicial de MyActivity a MyListActivity (que es una lista de MyActivity ). Empecé a recibir denegación de permisos.

Después de mucha prueba, trabajo y dolor: en .idea \ workspace.xml:

 ...    ...  ... 

Cambié MyActivity a MyListActivity , MyListActivity el proyecto y estoy MyActivity para empezar de nuevo.

¿No está seguro de qué IDE está utilizando, pero tal vez su IDE anule o fuerce una actividad de partida específica?

Si está tratando de probar su aplicación codificada en el estudio de Android a través de su teléfono Android, generalmente es el problema de su teléfono. Solo desmarque todas las opciones de depuración del USB y cambie las opciones del desarrollador a DESACTIVADO. Luego reinicie su teléfono y active el desarrollador y la depuración del USB. ¡Estás listo para ir!

En mi caso, este error se debió a rutas incorrectas utilizadas para especificar bashs en mi archivo xml de preferencias después de renombrar el proyecto. Por ejemplo, donde tuve:

      

Necesitaba lo siguiente en su lugar:

     

La corrección de los nombres de ruta solucionó el problema.

si hacemos la activity particular como

 android:exported="true" 

será la activity lanzamiento. Haga clic en el nombre del módulo justo a la izquierda del button Ejecutar y haga clic en “Editar configuraciones …” Ahora asegúrese de que esté seleccionado "Launch default Activity" .