我想开始向客户发送电子邮件的意图。但是context.startActivity
在图书馆项目中不起作用。你能帮助我吗?感谢
public class email {
private Context context;
public email(Context context) {
this.context = context;
}
public void send(String to, String subject, String body) {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("message/rfc822");
intent.putExtra(Intent.EXTRA_EMAIL, to);
intent.putExtra(Intent.EXTRA_SUBJECT, subject);
intent.putExtra(Intent.EXTRA_TEXT, body);
try {
context.startActivity(Intent.createChooser(intent, "sending..."));
}
catch (ActivityNotFoundException e) {
}
}
行。 Logcat说:
java.lang.RuntimeException:无法启动活动ComponentInfo {com.example.test.MainActivity}:android.util.AndroidRuntimeException:从Activity上下文外部调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。这真的是你想要的吗?
答案 0 :(得分:0)
通常我使用
getActivity().getBaseContext()
在大多数情况下,如果你遇到困难,可采用另一种方式。
您可以定义抽象基本活动,然后让所有活动实现它,或者至少是您需要在其中使用上下文引用的活动。
`public abstract class BaseActivity extends Activity ... private static Context baseContext; ...
@Override
public void onCreate() {
super.onCreate();
BaseApplication.baseContext = getApplicationContext();
...
public static Context getMyContext() {
return BaseApplication.baseContext;
}
`
然后你可以更容易地在其他地方调用getMyContext(),但是如果getActivity()。getBaseContext()不起作用,FIRST只使用它。
我需要更多关于您的代码的详细信息,例如要调用的活动类型等,以提供准确的答案。
答案 1 :(得分:0)
在开始活动之前添加intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
。每当您尝试切换到活动时,您需要设置此标记,但您的原始位置不是活动本身。
答案 2 :(得分:0)
我自己找到了一个解决方案:
当我想将context
传递给我使用email
的{{1}}类的构造函数时,当我将其更改为getApplicationContext()
时,它就有用了。