Lanzamiento de la Actividad Actividad Preferencia causa de denegación de permiso de excepción
-
21-09-2019 - |
Pregunta
Estoy teniendo un poco de un problema aquí. Lo que quiero hacer es poner en marcha una actividad dentro de la PreferenceActivity. Así que mi preference.xml que mantiene la disposición preferencia es el siguiente:
<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>
adivinar lo que, me estoy haciendo una excepción de seguridad (denegación de permiso) cuando quiero lanzarlo. ¿Me estoy perdiendo de algo? Mi comprensión de las intenciones es todavía un poco incompleta, pero pensé que debe funciona de esa manera.
Gracias por cualquier ayuda!
Solución
Cómo hacer una filtro intención parece ser una manera ligeramente 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>
Otros consejos
trabajar completamente 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>
I 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 lugares a: [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.
Sólo tenía que eliminar la segunda actividad de mi código y voilà!