【发布时间】:2015-07-01 22:00:49
【问题描述】:
此代码在 Activity 类中完美运行,但如果我将此代码移至 Common(非 Activity)类,我会收到此错误:
从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?
代码如下:
public static void emailIntend(Context context) {
Intent emailIntent = new Intent(Intent.ACTION_SENDTO, null);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, context.getString(R.string.string_email_send_feedback_subject));
String[] receipients = new String[1];
receipients[0] = context.getString(R.string.string_email);
emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, receipients);
emailIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(Intent.createChooser(emailIntent, "Send email to the developer..."));
}
这就是我从 Activity 调用的方式:
Common.emailIntend( getApplicationContext() );
我尝试将getApplicationContext() 替换为this,但没有任何帮助。
如果我做的不对,请告诉我。
【问题讨论】:
-
请解释“这不起作用”是什么意思。另外,AFAIK,您需要
mailto:Uri而不是ACTION_SENDTO上的EXTRA_EMAIL。 -
@CommonsWare 这是我收到
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?的错误,否则 Activity 类中的代码正常。 -
@DanielNugent 是的,已更新。谢谢。