Возможно ли Mailto из настроек xml?
Я пытаюсь создать настройки для своего приложения, и я надеялся создать область "Связаться с разработчиком", где при нажатии она откроет мне электронное письмо. Можно ли это сделать только из xml файла или мне нужно делать вещи в основном классе?
Я немного искал здесь, но ничего не видел о том, чтобы делать это из XML, так что, возможно, это невозможно? Думал, что я брошу этот вопрос там.
Спасибо!
EDIT:
Вот как я на самом деле получил его для работы в будущем в поисках некоторого кода:
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[]{"[email protected]"});
mailto.putExtra(Intent.EXTRA_SUBJECT,"Subject Here");
mailto.putExtra(Intent.EXTRA_TEXT,"Body Here");
startActivity(Intent.createChooser(mailto, "Select email application."));
return true;
}
});
}
}
Ответы
Ответ 1
Это невозможно из xml. Однако это не так много работы из-за того, как работает андроид. Единственное, что нужно сделать, это отправить намерение, которое уведомляет систему, по которой вы хотите отправить электронное письмо, с подробной информацией, которую вы предоставляете. Приложения, которые могут это сделать, будут реагировать на это намерение и обрабатывать остальное для вас. См. http://snipplr.com/view/19973/send-email-from-android-using-intent/
Ответ 2
Вы можете сделать это непосредственно из настроек:
<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:[email protected]</string>
Ограничение не является предопределенным субъектом/телом, которое возможно с использованием метода Java вместе с дополнительными функциями. Добавление extra
в <intent>
поддерживается с 4.0 сэндвич с мороженым благодаря this commit (см. теги фиксации). Это побочный эффект от предоставления дополнительных функций для фрагментов. Таким образом, вы можете предоставить шаблон Andrew в комментариях:
<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=
.