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'.
- Actividad de Android ClassNotFoundException - probado todo
- Compartir código en Android Studio
- ProGuard en AndroidStudio: ¿Cómo obtener archivos .aar de biblioteca ofuscada de una versión de lanzamiento de proyecto de varios módulos?
- Cómo enviar la biblioteca para Android
- NoClassDefFoundError cuando la versión descendente Androod admite lib de 23.2.0 a 23.1.1
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.
- El proyecto de la biblioteca de Android no se registra en Google Map
- Requiere el proyecto Gradle desde otro directorio
- ¿Cómo "instalar" Action Bar Sherlock?
- Cómo crear una versión de paquete de biblioteca de Android (aar) en Android Studio (no depurar)
- ¿Cómo agrego un proyecto de biblioteca a Android Studio?
- Conversión al formato de Dalvik Failed facebook / AccessToken $ SerializationProxyV1;
- ¿Cuál es el propósito de las bibliotecas privadas de Android, las bibliotecas de referencia y Android dependies en la jerarquía de proyectos de Android?
- Proyecto de la biblioteca de Android con Android Studio
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:
Yo acababa de cambiar como:
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.
- Permiso de negación: esto requiere android.permission.INTERACT_ACROSS_USERS_FULL
- ¿Cómo estructura el directorio de prueba del proyecto en Android Studio?