Hallo, ich starte die Aktivität vom Bildschirm "Einstellungen" aus. Die Aktivität wird von drei Präferenzen geteilt. Ich frage mich, ob ich für diese Aktivität Extras in xml einstellen kann
<Preference
Android:key="action_1"
Android:title="@string/action_1_title"
>
<intent
Android:action="com.package.SHAREDACTION"
>
</intent>
</Preference>
ich frage mich, ob ich sowas machen kann
<extras>
<item
Android:name=""
Android:value=""/>
</extras>
Alles was ich tun muss, um wirklich eine ganze Zahl zu übergeben. Ich kann verschiedene Aktionen anstelle von Extras überprüfen.
Da Ihre Extras keine Konstanten sind, sollten Sie sie anstelle von XML im Java-Code übergeben.
Intent intent = new Intent( this, YourTargetActivity.class );
intent.putExtra( EXTRAS_KEY, extras );
yourPref.setIntent( intent );
Ich habe eine Antwort, du kannst sie so verwenden:
<Preference
Android:key="xxx"
Android:title="xxx"
Android:summary="xxx">
<intent Android:action="xxx" >
<extra Android:name="xxx" Android:value="xxx" />
</intent>
</Preference>
In der Dokumentation hier ist ein Datenfeld für Absichten beschrieben.
Sie wird in der API-Demoanwendung für die XML-Voreinstellungen verwendet, um eine Absicht im Intent-Voreinstellungsbeispiel zu starten.
Verwandte Beispiel-XML aus dieser Demo in 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>
Vielleicht könnte dieser Ansatz für Sie funktionieren?
Fügen Sie die Voreinstellung zur Datei preference.xml hinzu:
<Preference Android:title="user" Android:key="user"/>
Und dann können Sie einen setOnPreferenceClickListener verwenden, um einen Intent mit Extras zu starten.
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;
}
});
für mich arbeiten.
<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>
Um E-Mails zu senden oder auf dem Markt zu bewerten, müssen Sie so etwas wie verwenden
<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>
Sie können verwenden
<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>
um die Absichtsdaten zu senden. Dann verwenden Sie in Ihrer Aktivität einfach:
getIntent().getDataString()
Nicht wirklich eine Antwort auf Ihre Frage, aber sehr verwandt. Vielleicht wird es für jemanden nützlich sein .. Für neuere APIs (> 11) haben Sie eine Preferences-Header-Datei und können benutzerdefinierte Intents für einen der Header definieren. Ich habe versucht, einer Kopfzeile ein benutzerdefiniertes Extra hinzuzufügen, und die gefundene Lösung sieht folgendermaßen aus:
In Ihrer Einstellung-headers.xml:
<header
Android:fragment="com.mypackage.MyPreference$Prefs1Fragment"
Android:title="Intent"
Android:summary="Launches an Intent.">
</header>
In Ihrer "MyPreference" -Klasse (erweitert PreferenceActivity) haben Sie:
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();
}
}