我正在尝试为我的应用程序构建首选项,我希望创建一个"联系开发人员"区域,当单击该区域时,它会打开一封指向我的电子邮件。这是否可以单独从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>
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>
鼓励使用资源参考,但对于data
和value
s而言并非必要。
遗憾的是,您不能以这种方式使用Intent.ACTION_SEND
,因为EXTRA_EMAIL
需要是String[]
,而这不受<extra android:value=
的支持。
这在xml中是不可能的。然而,由于android的工作方式,这并不是很多工作。唯一需要做的就是发送一个意向,通知系统你想发送一封电子邮件,并提供详细信息。能够做到这一点的应用程序将响应这一意图,并为您处理其余部分。提到http://snipplr.com/view/19973/send-email-from-android-using-intent/