有什么办法从偏好向额外的意图?

嗨,我从偏好屏幕启动活动。 活动由三个偏好共享。 我不知道我是否可以在xml中为这个活动设置额外的

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

我不知道我能不能做点什么

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

我所需要做的只是传递一个整数。 我可以采取不同的行动,并检查行动,而不是额外的。

由于你的附加组件不是常量,你应该把它们传递给java代码而不是xml。

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

我得到了答案,你可以像这样使用它:

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

将preference添加到preference.xml文件中:

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

然后你可以使用setOnPreferenceClickListener来启动额外的Intent。

 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; } }); 

这里有一个文档描述的数据字段。

它在API演示应用程序中用于XML首选项,以便在“Intent首选项”示例中启动一个意图。

在preferences.xml中的相关示例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> 

也许这种方法可以为你工作?

为我工作。

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

要发送电子邮件或在市场上率您需要使用类似的东西

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

您可以使用

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

发送意图数据。 然后在您的活动中,只需使用:

 getIntent().getDataString() 

不是你的问题的答案,但非常相关。 也许有人会觉得它有用。 对于较新的API(> 11),您有一个首选项标题文件,您可以为其中一个标题定义自定义意图。 我试图添加一个自定义额外的头部和我find的解决scheme是这样的:

在你的preference-headers.xml中:

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

在你的“MyPreference”类(扩展PreferenceActivity)中你有:

 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(); } }