可以通过首选项xml发送邮件



我正在尝试为我的应用程序构建首选项,我希望创建一个"联系开发人员"区域,当单击该区域时,它会打开一封指向我的电子邮件。这是否可以单独从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;
   }
  });
}

}

您可以直接从首选项进行操作:

<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方法about和额外功能由于此提交,从4.0 Ice Cream Sandwich开始支持将extra s添加到<intent> s(请参阅提交标记)。这是允许为碎片添加额外内容的副作用。因此,您可以提供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>

鼓励使用资源参考,但对于datavalue s而言并非必要。

遗憾的是,您不能以这种方式使用Intent.ACTION_SEND,因为EXTRA_EMAIL需要是String[],而这不受<extra android:value=的支持。

这在xml中是不可能的。然而,由于android的工作方式,这并不是很多工作。唯一需要做的就是发送一个意向,通知系统你想发送一封电子邮件,并提供详细信息。能够做到这一点的应用程序将响应这一意图,并为您处理其余部分。提到http://snipplr.com/view/19973/send-email-from-android-using-intent/

最新更新