2010-01-16 11 views
7

Tengo un problema aquí. Lo que quiero hacer es lanzar una actividad dentro de la actividad de preferencia. Así que mi preference.xml que mantiene la disposición preferencia es el siguiente:La actividad de inicio de la actividad de preferencias causa la excepción de denegación de permiso

<Preference android:title="Launch Activity" > 
    <intent android:action="org.momo.SOME_ACTIVITY" /> 
</Preference> 

El manifiesto está al tanto de la actividad Quiero lanzar ..

<activity android:label="@string/app_name" android:name="SomeActivity"> 
     <intent-filter> 
      <category android:name="android.intent.category.DEFAULT" /> 

      <action android:name="org.momo.SOME_ACTIVITY" /> 
     </intent-filter> 
    </activity> 

adivina qué, estoy recibiendo un Valor Excepción (denegación de permiso) cuando quiero iniciarlo. ¿Me estoy perdiendo de algo? Mi comprensión de las intenciones todavía está un poco incompleta, sin embargo, pensé que debe funcionar de esa manera.

¡Gracias por cualquier ayuda!

+0

¿Podría publicar el seguimiento de pila por favor? –

+0

lo siento, me di cuenta por mi cuenta. corte de eclipse maldito de mensajes de error, maldito auto no darse cuenta. gracias por echar un vistazo de todos modos! – moritz

+6

Si lo ha descubierto, puede publicar la solución como respuesta. Alguien con el mismo problema que tú probablemente terminará aquí a través de Google, por lo que sería genial si pudiéramos tener la solución en la página también. –

Respuesta

20

Hacer un intento de filtro parece una manera indirecta de hacer esto. Este es un enfoque más simple:

<PreferenceScreen 
    android:title="@string/settings.title" 
    android:summary="@string/settings.summary"> 
    <intent 
     android:targetPackage="com.companyname.appname" 
     android:targetClass="com.companyname.appname.classname"/> 
</PreferenceScreen> 
+0

Esto debería ser aceptado como respuesta. Funciona perfecto en todas las versiones de Android. – tomrozb

2

Completamente trabajo ejemplo En su preference.xml

<Preference 
     android:title="@string/settings_title_notification_silent_mode" 
     android:summary="@string/settings_title_notification_silent_mode_summary"> 
    <intent 
    android:action="com.activity.SilentModeList"/> <!-- SilentModeList its activity --> 
    </Preference> 

En su manifest.xml

 <activity android:name="com.activity.SilentModeList" 
      android:label="@string/ac_settings_description"> 
      <intent-filter> 
       <action android:name="com.activity.SilentModeList" /> 
       <category android:name="android.intent.category.DEFAULT" /> 
      </intent-filter> 
     </activity> 
0

que mi caso todos los ajustes mis xml eran correctas .

Pero la actividad que puso en marcha (llamado AppPreferences) debido al mal refractoring existía en los lugares: [package].AppPreferences y [[package].commmon.Preferences Debido a un import common._, que estaba tomando esto como la actividad y, por supuesto, que no estaba declarado en el manifiesto de Android . ¡Solo tuve que eliminar la segunda actividad de mi código y voilà!

Cuestiones relacionadas