Y a-t-il un moyen de mettre des extras à l'intention des préférences?

Salut je lance l'activité à partir de l'écran des préférences. L'activité est partagée entre trois préférences. Je me demande si je peux définir des extras pour cette activité dans xml

<Preference android:key="action_1" android:title="@string/action_1_title" > <intent android:action="com.package.SHAREDACTION" > </intent> </Preference> 

Je me demande si je peux faire quelque chose comme

 <extras> <item android:name="" android:value=""/> </extras> 

Tout ce que je dois faire pour passer un entier vraiment. Je peux des actions différentes et vérifier les actions au lieu des extras.

8 Solutions collect form web for “Y a-t-il un moyen de mettre des extras à l'intention des préférences?”

Comme vos extras ne sont pas des constantes, vous devriez les passer dans le code java au lieu de xml.

 Intent intent = new Intent( this, YourTargetActivity.class ); intent.putExtra( EXTRAS_KEY, extras ); yourPref.setIntent( intent ); 

J'ai une réponse, vous pouvez l'utiliser comme ceci:

 <Preference android:key="xxx" android:title="xxx" android:summary="xxx"> <intent android:action="xxx" > <extra android:name="xxx" android:value="xxx" /> </intent> </Preference> 

Il existe un champ de données pour les intentions décrites dans la documentation ici .

Il est utilisé dans l'application de démonstration API pour les préférences XML pour lancer une intention dans l'exemple Préférences d'intention.

Exemple connexe xml de cette démo dans preferences.xml:

  <PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="http://www.android.com" /> </PreferenceScreen> 

Peut-être que cette approche pourrait fonctionner pour vous?

Ajoutez la préférence au fichier preference.xml:

 <Preference android:title="user" android:key="user"/> 

Et puis vous pouvez utiliser un setOnPreferenceClickListener pour lancer une intention avec des extras.

 Preference userButton = (Preference) findPreference("user"); userButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { @Override public boolean onPreferenceClick(Preference arg0) { Intent intent = new Intent(getActivity(), YourTargetActivity.class); intent.putExtra(EXTRA, mUser); startActivity(intent); return true; } }); 

Travaillant pour moi.

 <shortcut android:enabled="true" android:icon="@mipmap/xxx" android:shortcutDisabledMessage="@string/xxx" android:shortcutId="xxxx" android:shortcutLongLabel="xxx" android:shortcutShortLabel="xxx"> <intent android:action="android.intent.action.VIEW" android:targetClass="xxx" android:targetPackage="xxx"> <extra android:name="intent_name" android:value="true" /> </intent> </shortcut> 

Pour envoyer un email ou un taux sur le marché, vous devez utiliser quelque chose comme

 <Preference android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="market://details?id=com.your_package" /> </Preference> <Preference android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="mailto:your_email@gmail.com" /> </Preference> 

Vous pouvez utiliser

 <PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="android.intent.action.VIEW" android:data="hello world" /> </PreferenceScreen> 

Pour envoyer les données d'intention. Ensuite, dans votre activité, utilisez simplement:

 getIntent().getDataString() 

Pas vraiment une réponse à votre question, mais très liée. Peut-être que quelqu'un le trouvera utile. Pour une API plus récente (> 11), vous avez un fichier d'en-tête de préférence et vous pouvez définir des intentions personnalisées pour l'un des en-têtes. J'essayais d'ajouter un Extra personnalisé à l'un des en-têtes et la solution que j'ai trouvée va comme ceci:

Dans votre préférence-headers.xml:

 <header android:fragment="com.mypackage.MyPreference$Prefs1Fragment" android:title="Intent" android:summary="Launches an Intent."> </header> 

Dans votre classe "MyPreference" (extends PreferenceActivity), vous avez:

 public static class Prefs1Fragment extends PreferenceFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Intent intent = new Intent(getActivity(), MyTargetActivity.class); // set the desired extras, flags etc to the intent intent.putExtra("customExtra", "Something that I used to know"); // starting our target activity startActivity(intent); // ending the current activity, which is just a redirector to our end goal getActivity().finish(); } } 
coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.