¿Hay alguna manera de agregar extras a Intent de preferencias?

Hola estoy iniciando la actividad desde la pantalla de preferencias. La actividad se comparte entre tres preferencias. Me pregunto si puedo establecer extras para esta actividad en xml

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

Me pregunto si puedo hacer algo como

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

Todo lo que necesito hacer para pasar un entero realmente. Puedo diferentes acciones y comprobar la acción en lugar de extras.

Como sus extras no son constantes, debe pasarlos en el código java en lugar de xml.

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

Tengo una respuesta, puedes usarla así:

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

Hay un campo de datos para las intenciones descritas en la documentación aquí .

Se utiliza en la aplicación de demostración de API para las preferencias XML para iniciar una intención en el ejemplo Preferencias de intención.

Ejemplo relacionado xml de esa demo en 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> 

Tal vez este enfoque podría trabajar para usted?

Agregue la preferencia al archivo preference.xml:

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

Y entonces usted puede usar un setOnPreferenceClickListener para lanzar un Intent con 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; } }); 

Trabajando para mi

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

Para enviar correo electrónico o tasa en el mercado es necesario utilizar algo como

 <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:[email protected]" /> </Preference> 

Puedes usar

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

Para enviar los datos de intención. Luego en su actividad simplemente use:

 getIntent().getDataString() 

No es realmente una respuesta a su pregunta, pero muy relacionado. Tal vez alguien lo encontrará útil. Para API más reciente (> 11) tiene un archivo de encabezados de preferencia y puede definir intentos personalizados para uno de los encabezados. Estaba tratando de agregar una costumbre extra a uno de los encabezados y la solución que encontré va como esto:

En tu preferencia-headers.xml:

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

En su clase "MyPreference" (extends PreferenceActivity) tiene:

 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(); } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.