Почта из настроек xml возможна? - PullRequest
15 голосов
/ 12 июня 2011

Я пытаюсь создать настройки для своего приложения, и я надеялся создать область «Связаться с разработчиком», где при нажатии на нее откроется электронное письмо, направленное мне.Можно ли это сделать только из файла xml или мне нужно что-то делать в главном классе?

Я немного искал здесь, но ничего не видел в этом из XML, так что, возможно, это невозможно?Думал, что я бы выбросил этот вопрос.

Спасибо!

РЕДАКТИРОВАТЬ: Вот как я на самом деле заставил его работать для любого в будущем, кто ищет код:

import android.content.Intent;
import android.os.Bundle;
import android.preference.Preference;
import android.preference.Preference.OnPreferenceClickListener;
import android.preference.PreferenceActivity;

public class Prefs extends PreferenceActivity {

@Override

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.layout.prefs);
    Preference mailTo = (Preference) findPreference("mailTo");


    mailTo.setOnPreferenceClickListener(new OnPreferenceClickListener() 
  {
   public boolean onPreferenceClick(Preference preference) 
   {
        // Preferences

        Intent mailto = new Intent(Intent.ACTION_SEND); 
        mailto.setType("message/rfc822") ; // use from live device
        mailto.putExtra(Intent.EXTRA_EMAIL, new String[]{"test@gmail.com"});
        mailto.putExtra(Intent.EXTRA_SUBJECT,"Subject Here");
        mailto.putExtra(Intent.EXTRA_TEXT,"Body Here");
        startActivity(Intent.createChooser(mailto, "Select email application."));
    return true;
   }
  });

}

}

Ответы [ 2 ]

31 голосов
/ 21 декабря 2011

Вы можете сделать это прямо из настроек:

<Preference
        android:key="contactDevKey"
        android:title="Contact developer"
        android:summary="Tell me all about your problems">
    <intent android:action="android.intent.action.VIEW"
            android:data="@string/contact_developer_uri"/>
</Preference>

Где @string/contact_developer_uri:

<string name="contact_developer_uri">mailto:my@email.address</string>

Ограничением является отсутствие предопределенного субъекта / тела, которое возможно при использовании метода Java вместе с дополнительными функциями. Добавление extra с к <intent> с поддерживается с 4.0 Ice Cream Sandwich благодаря this commit (см. теги commit). Это побочный эффект от добавления дополнений для фрагментов. Таким образом, вы можете предоставить шаблон как Андрей , предложенный в комментариях:

<intent android:action="android.intent.action.VIEW"
        android:data="@string/contact_developer_uri">
    <extra android:name="android.intent.extra.TEXT"
           android:value="What can I help you with?" />
    <extra android:name="android.intent.extra.SUBJECT"
           android:value="Feedback about World Changing App" />
</intent>

Использование ссылок на ресурсы рекомендуется, но не обязательно для data и value s.

К сожалению, вы не можете использовать Intent.ACTION_SEND таким образом, потому что EXTRA_EMAIL должен быть String[], и это не поддерживается как <extra android:value=.

0 голосов
/ 12 июня 2011

Это невозможно из xml. Однако это не так много работы из-за того, как работает Android. Единственное, что нужно сделать - это отправить намерение, уведомляющее систему о том, что вы хотите отправить электронное письмо, с указанием предоставленных вами данных. Приложения, которые в состоянии сделать это, ответят на это намерение и позаботятся об остальном для вас. См. http://snipplr.com/view/19973/send-email-from-android-using-intent/

...