来自偏好xml的Mailto可能吗?

时间:2011-06-12 00:25:42

标签: android android-intent preferences mailto

我正在尝试构建我的应用程序的首选项,我希望能够“联系开发人员”区域,在点击时,它会打开一封指向我的电子邮件。这可以单独从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 个答案:

答案 0 :(得分:31)

您可以直接从偏好设置中执行此操作:

<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方法和附加内容。自{4.0}冰淇淋以来,支持向extra添加<intent> s感谢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>

鼓励使用资源引用,但对datavalue都不是必需的。

遗憾的是,您无法以这种方式使用Intent.ACTION_SEND,因为EXTRA_EMAIL必须是String[],并且不支持<extra android:value=

答案 1 :(得分:0)

xml无法实现。然而,由于android的工作方式,这不是很多工作。唯一需要做的就是发送一个意图,通知您要发送电子邮件的系统,以及您提供的详细信息。能够执行此操作的应用程序将响应此意图并为您处理剩余的事情。请参阅http://snipplr.com/view/19973/send-email-from-android-using-intent/