Android 在listview适配器中从我的应用打开电子邮件应用
我试图从我的应用程序打开电子邮件应用程序,但出现错误Android 在listview适配器中从我的应用打开电子邮件应用,android,listview,android-intent,Android,Listview,Android Intent,我试图从我的应用程序打开电子邮件应用程序,但出现错误 Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. 问题是,我设置了FLAG\u ACTIVITY\u NEW\u TASK。 我还尝试添加标志 context.startActivity(Intent.createChooser(i, "")); 这是我的代码: private vo
Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag.
问题是,我设置了FLAG\u ACTIVITY\u NEW\u TASK。
我还尝试添加标志
context.startActivity(Intent.createChooser(i, ""));
这是我的代码:
private void mailTo(String mail) {
Intent i = new Intent(Intent.ACTION_SEND).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{mail});
try {
context.startActivity(Intent.createChooser(i, ""));
} catch (ActivityNotFoundException ex) {
Toast.makeText(context, ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void smsTo(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
Intent tmp = Intent.createChooser(i, "").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(tmp);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
我必须注意,在同一个班级中,我有更多的工作意图动作。
private void callTo(String number) {
Intent callIntent = new Intent(Intent.ACTION_CALL).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
callIntent.setData(Uri.parse("tel:" + number));
context.startActivity(callIntent);
}
和:
private void mailTo(String mail) {
Intent i = new Intent(Intent.ACTION_SEND).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{mail});
try {
context.startActivity(Intent.createChooser(i, ""));
} catch (ActivityNotFoundException ex) {
Toast.makeText(context, ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void smsTo(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
Intent tmp = Intent.createChooser(i, "").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(tmp);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
您是否尝试过调用
startActivity()
,而没有从context()
对象获取它context()
具有应用程序的当前状态,因此您可能无法确定从何处开始意图。因此,这将是:
startActivity(Intent.createChooser(i, ""));
这样,就可以移除旗帜了
Intent i = new Intent(Intent.ACTION_SEND);
编辑
由于您是从非MainActivity()
的Activity()
调用intent()
,请尝试将context()
参数传递给类的构造函数
Context context;
public MyAdapaterClass(Context context) {
this.context=context;
}
然后启动intent()
,如下所示:
Intent i = new Intent(context, MainActivity.class);
有人告诉我,意图。createChooser没有处理这些标志 因此我需要遵循Intent tmp=Intent.createChooser…并在tmp上重新设置标志 我替换了:
context.startActivity(Intent.createChooser(i, ""));
至:
private void mailTo(String mail) {
Intent i = new Intent(Intent.ACTION_SEND).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{mail});
try {
context.startActivity(Intent.createChooser(i, ""));
} catch (ActivityNotFoundException ex) {
Toast.makeText(context, ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void smsTo(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
Intent tmp = Intent.createChooser(i, "").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(tmp);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
并删除:
private void mailTo(String mail) {
Intent i = new Intent(Intent.ACTION_SEND).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
i.setType("message/rfc822");
i.putExtra(Intent.EXTRA_EMAIL , new String[]{mail});
try {
context.startActivity(Intent.createChooser(i, ""));
} catch (ActivityNotFoundException ex) {
Toast.makeText(context, ex.getMessage(), Toast.LENGTH_LONG).show();
}
}
private void smsTo(String phoneNumber) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber)).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
Intent tmp = Intent.createChooser(i, "").setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(tmp);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
我不明白你的答案。这个类从BaseAdapter扩展而来,因此我从父类获取上下文。不知怎的,我知道您是从MainActivity类调用Intent的,我将发布我的更改。正如我所说,我已经从perent获取了上下文。关于意图的例子,这不是我需要的。在我看到你的帖子之前,我在其他地方找到了答案,