Domanda

Sto avendo un po 'di un problema qui. Quello che voglio fare è avviare un'attività all'interno del PreferenceActivity. Quindi il mio preference.xml che detiene il layout preferenza è simile al seguente:

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

Il manifesto è a conoscenza delle attività che voglio lanciare ..

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

indovinate un po ', sto diventando un'eccezione di sicurezza (Permission Denial) quando voglio lanciarlo. Mi sto perdendo qualcosa? La mia comprensione di intenti è ancora un po 'incompleta, ma ho pensato che deve lavorare in questo modo.

Grazie per tutto l'aiuto!

È stato utile?

Soluzione

Fare una intent-filtro sembra un modo un po 'rotonda di fare questo. Si tratta di un approccio più semplice:

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

Altri suggerimenti

Completamente lavorare esempio Nel vostro 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>

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

Ho il mio caso tutte le mie impostazioni xml erano corrette.

Ma l'attività ho lanciato (chiamato AppPreferences) a causa di cattiva refractoring esisteva in luoghi: [package].AppPreferences e [[package].commmon.Preferences A causa di un import common._, si stava prendendo questo come l'attività e, naturalmente, non era stato dichiarato nel manifesto di Android. Ho dovuto cancellare la seconda attività dal mio codice e voilà!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top