Android-java.lang.SecurityException: Denegación de permiso: intención de inicio
Tengo una biblioteca (jar) en la ruta de compilación de mi proyecto. El proyecto accede a la MainActivity en el jar, usando la siguiente intent:
final Intent it = new Intent();
it.setClassName("com.example.lib", "com.example.lib.MainActivity");
startActivity(it);
Solía funcionar durante algún tiempo, pero de repente comenzó a obtener 'ActivityNotFoundException: No se encontró actividad para manejar Intent', que pude resolver. Pero ahora estoy atascado con un 'java.lang.SecurityException: Permission Denial: starting Intent'.
He probado todas las sugerencias hechas en stackoverflow (compruebe si hay duplicados en el manifiesto file; add android: exported = "true" to lib manifest; Eclipse > Project> Clean; adding / modifying 'intent-filter' tags; etc.). Incluso traté de reescribir 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)
XML de 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 manifiesto.xml con todas las demás actividades y de alguna manera, que resolvió el problema. La actividad intent arranca sin errores. PERO, esto es solo en AVD. En el dispositivo real, todavía está lanzando el mismo error. He desinstalado la aplicación del dispositivo por completo y reinstalado, pero el mismo error.
8 answers
La excepción es clara. Necesitas establecer android:exported="true"
en tu AndroidManifest.archivo xml donde se declara 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>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-11-07 07:01:02
Esto es solo para android studio
Así que me encontré con este problema recientemente. El problema estaba en la configuración de compilación / ejecución. Al parecer android studio había elegido una actividad en mi proyecto como la actividad de lanzamiento de descartando 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" Iniciar actividad predeterminada " está seleccionado.
Lo gracioso cuando obtuve este error fue que pude todavía inicie la aplicación desde el dispositivo y comienza con la actividad preferida. Pero el lanzamiento desde el IDE parecía imposible.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-08 06:21:35
Seleccione la configuración adecuada para iniciar la aplicación.
En mi caso, encontré un error como la siguiente imagen:
Yo acababa de cambiar como:
Que ayude a alguien, Gracias :)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-23 07:42:01
Agrega android:exported="true" en tu 'com.ejemplo.lib.Etiqueta de actividad de MainActivity.
Desde la documentación de android: exported,
Android: exportado Si la actividad puede ser lanzada o no por componentes de otras aplicaciones - "true" si puede ser, y "false" si no. Si es "false", la actividad solo puede ser iniciada por componentes de la misma aplicación o aplicaciones con el mismo ID de usuario.
Desde su salida logcat, claramente un desajuste en uid es causando el problema. Así que agregar el android: exported = "true" debería hacer el truco.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-15 12:39:31
Similar a la respuesta de Olayinka sobre el archivo de configuración para ADT: Acabo de tener el mismo problema en 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:
...
<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
, recargé el proyecto y estoy listo para comenzar de nuevo.
No estoy seguro de cuál IDE que está utilizando, pero tal vez su IDE está anulando o forzando una actividad de inicio específica?
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-20 18:42:20
Si está intentando probar su aplicación codificada en android Studio a través de su teléfono Android, generalmente es el problema de su teléfono. Simplemente desmarque todas las opciones de depuración USB y desactive las opciones de desarrollador. A continuación, reinicie su teléfono y active el desarrollador y la depuración USB. Usted está listo para ir!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-04 12:18:30
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 tuve:
<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 en su lugar:
<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 solucionó el problema.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-02 19:29:14
Si hacemos el particular activity
como
android:exported="true"
Será el lanzamiento activity
.
Haga clic en el nombre del módulo justo a la izquierda de la ejecución button
y haga clic en "Editar configuraciones..."Ahora asegúrese de que "Launch default Activity"
está seleccionado.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-16 20:30:13