Android – java.lang.SecurityException: Permiso Negación: Intención inicial

Tengo una biblioteca (jar) en la trayectoria de la estructura de mi proyecto. El proyecto accede a MainActivity en el frasco, usando la siguiente intención:

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

Solía ​​trabajar por algún tiempo, pero de repente comenzó a obtener 'ActivityNotFoundException: No Activity found to handle Intent' que he podido resolver. Pero ahora estoy atascado con un 'java.lang.SecurityException: Permiso de denegación: Starting Intent'.

He intentado todas las sugerencias hechas en stackoverflow (compruebe si hay duplicados en el archivo de manifiesto, agregue android: exportado = "true" a lib manifiesto, Eclipse> Project> Clean, agregando / modificando las etiquetas de "intención-filtro", etc.). Incluso traté de volver a escribir el manifiesto del proyecto, pero no ir a ninguna parte con él.

Aquí está la salida 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) 

XML manifiesto del proyecto:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.project" android:versionCode="4" android:versionName="4.0" > <!-- Permissions --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <supports-screens android:anyDensity="true" /> <!-- SDK Settings --> <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="18" /> <!-- APP Start --> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <!-- App Activity --> <activity android:name="com.example.project.MainActivity" android:label="@string/app_name" android:screenOrientation="portrait" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <!-- Library Activity --> <activity android:name="com.example.lib.MainActivity" android:label="LibMain"> <intent-filter> <action android:name="android.intent.action.MAIN"></action> </intent-filter> </activity> </application> <!-- END - APP --> </manifest> 

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

EDITAR

He actualizado el manifest.xml con todas las otras actividades y de alguna manera, que resolvió el problema. La actividad de intención se inicia sin errores. PERO , esto es sólo en AVD. En el dispositivo real, sigue lanzando el mismo error. He desinstalado la aplicación del dispositivo completamente y vuelve a instalar, pero el mismo error.

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

Editar

 <activity android:name="com.example.lib.MainActivity" android:label="LibMain" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" > </action> </intent-filter> </activity> 

Esto es sólo para el estudio de Android

Así que me encontré con este problema recientemente. El problema estaba en la configuración de compilación / ejecución. Al parecer, el estudio de android había elegido una actividad en mi proyecto como la actividad de lanzamiento, desatendiendo así 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 "Activar inicio predeterminado" esté seleccionado.

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

Seleccione la configuración adecuada para iniciar Application.

En mi caso encontré el error como abajo imagen:

Introduzca aquí la descripción de la imagen

Yo acababa de cambiar como:

Introduzca aquí la descripción de la imagen

Que ayude a alguien, gracias 🙂

Agregue android: exportado = "true" en su etiqueta de actividad 'com.example.lib.MainActivity'.

Desde el androide: documentación exportada,

Android: exportado Si la actividad puede ser lanzada por componentes de otras aplicaciones – "true" si puede ser, y "false" si no. Si es "false", la actividad sólo puede ser iniciada por componentes de la misma aplicación o aplicaciones con el mismo ID de usuario.

De su salida logcat, claramente una falta de coincidencia en uid está causando el problema. Así que agregar el android: exportado = "true" debería hacer el truco.

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

Estoy trabajando a través de un tutorial que me hizo cambiar la actividad inicial de MyActivity a MyListActivity (que es una lista de MyActivity ). Comencé a obtener la negación de permisos.

Después de mucho juicio, trabajo y dolor: En .idea \ workspace.xml:

 ... <configuration default="false" name="MyApp" type="AndroidRunConfigurationType" factoryName="Android Application"> <module name="MyApp" /> <option name="ACTIVITY_CLASS" value="com.domain.MyApp.MyActivity" /> ... </configuration> ... 

Cambié el MyActivity a MyListActivity , MyListActivity cargar el proyecto y estoy de nuevo a rodar de nuevo.

¿No está seguro de qué IDE está utilizando, pero quizás su IDE está reemplazando o forzando una actividad de inicio específica?

Si estás intentando probar tu aplicación codificada en android studio a través de tu teléfono android, generalmente es el problema de tu teléfono. Simplemente desmarque todas las opciones de depuración USB y cambie las opciones de desarrollador a OFF. A continuación, reinicie el teléfono y cambie el desarrollador y la depuración USB. Usted está listo para ir!

En mi caso, este error se debió a rutas incorrectas utilizadas para especificar intents en mi archivo xml de preferencias después de cambiar el nombre del proyecto. Por ejemplo, donde yo tenía:

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <Preference android:key="pref_edit_recipe_key" android:title="Add/Edit Recipe"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.ssimon.olddirectory" android:targetClass="com.ssimon.olddirectory.RecipeEditActivity"/> </Preference> </PreferenceScreen> 

Necesitaba lo siguiente:

 <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"> <Preference android:key="pref_edit_recipe_key" android:title="Add/Edit Recipe"> <intent android:action="android.intent.action.VIEW" android:targetPackage="com.ssimon.newdirectory" android:targetClass="com.ssimon.newdirectory.RecipeEditActivity"/> </Preference> 

La corrección de los nombres de ruta resolvió 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 "Launch default Activity" button "Launch default Activity" esté seleccionado.

  • No se puede resolver el error de superclase al hacer referencia a la biblioteca .jar
  • ¿Cómo implementar la función .get con FutureTask o BackgroundTask usando android?
  • Biblioteca de clientes API de REST para Android
  • No se puede ejecutar dex: varios archivos dex definen Lcom / nineoldandroids / animation / Animator $ AnimatorListener;
  • Reemplazar (o "Anular") cadena en el proyecto de la biblioteca de Android
  • Cómo importar la biblioteca github en eclipse
  • ¿Cómo evitar que los recursos y el código no utilizados de un proyecto de una biblioteca de Android entren en mi APK?
  • Clases de utilidad comunes para proyectos de prueba de Android
  • Actividad de anulación del proyecto de la Biblioteca de Android
  • Convertir proyecto existente en proyecto de biblioteca en Android Studio
  • Diferencia entre la biblioteca de Android y la biblioteca de Java en Android Studio
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.