sirve que putextra para intent example developer activity android android-intent android-library

que - Android-java.lang.SecurityException: denegación de permiso: intento de inicio



intent uri example (8)

Tengo una biblioteca (jar) en la ruta de compilació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 etiquetas 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:

<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

Actualicé el manifest.xml con todas las demás actividades y de alguna manera, eso resolvió el problema. La actividad de intento 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.


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, 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.


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.


En mi caso, este error se debió a rutas incorrectas utilizadas para especificar intentos en mi archivo xml de preferencias después de renombrar el 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.


La excepción es clara. Debes 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>


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

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

Yo acababa de cambiar como:

Puede ayudar a alguien, gracias :)


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!


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:

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

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 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" .