Question

Je vais avoir un peu d'un problème. Ce que je veux faire est de lancer une activité à l'intérieur du PreferenceActivity. Donc, mon preference.xml qui détient la mise en page de préférence ressemble à ceci:

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

Le manifeste est au courant de l'activité que je veux lancer ..

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

devinez quoi, je reçois une exception de sécurité (Permission refusée) quand je veux lancer. Est-ce que je manque quelque chose? Ma compréhension des intentions est encore un peu incomplet, mais je me suis dit que doit travailler de cette façon.

Merci pour toute aide!

Était-ce utile?

La solution

Faire un filtre l'intention semble être d'une manière légèrement rond-point de le faire. Ceci est une approche plus 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>

Autres conseils

jouer pleinement exemple Dans votre 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>

Dans votre 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>

Je mon cas tous mes paramètres xml étaient corrects.

Mais l'activité que je lançais (nommé AppPreferences) en raison de la mauvaise refractoring existait dans des endroits: [package].AppPreferences et [[package].commmon.Preferences En raison d'un import common._, il prenait ce que l'activité et bien sûr, il n'a pas été déclarée dans le manifeste Android. Je viens de supprimer la deuxième activité de mon code et le tour est joué!

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top