Есть ли какой-нибудь способ добавить дополнения к намерению из настроек?

StackOverflow https://stackoverflow.com/questions/2082640

Вопрос

Привет, я запускаю действие с экрана настроек.Активность распределяется между тремя предпочтениями.Интересно, могу ли я установить дополнительные параметры для этого действия в 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.xml :

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

И затем вы можете использовать setOnPreferenceClickListener для запуска намерения с дополнительными функциями.

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 для запуска намерения в примере настроек намерения.

Связанный пример xml из этой демонстрации в 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>

Может быть, этот подход мог бы сработать для вас?

работаешь на меня.

<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) у вас есть файл preference-headers, и вы можете определить пользовательские намерения для одного из заголовков.Я пытался добавить пользовательское дополнение к одному из заголовков, и решение, которое я нашел, выглядит следующим образом:

В вашем 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();
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top