如何调用startActivity()以使用来自其他类的ACTION_SEND

时间:2011-03-22 01:25:04

标签: android android-intent

我正在尝试构建一个Android插件来扩展ACTION_SEND功能,但是当我尝试使用以下命令调用活动来共享纯文本时:

context.startActivity(Intent.createChooser(mIntent, title));

我收到此错误:

ERROR/AndroidRuntime(838): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity  context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

问题是,在我的最后一行代码中,我实现了FLAG_ACTIVITY_NEW_TASK。 这是我的代码:

public class ShareMenu{
private Context context;


public ShareMenu(Context context){
    this.context = context;

}

public static void buildHomeShareMenu(Context context) {
    Intent mIntent = new Intent(android.content.Intent.ACTION_SEND);
    mIntent.setType("text/plain");
    mIntent.putExtra(Intent.EXTRA_TEXT, mtitle);
    mIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(Intent.createChooser(mIntent, mtitle));

}

我试图只调用startActivity传递实例mIntent,并且工作,但即使我已经注意到,如果你只是做这些你可以调用其他活动,但我无法弄清楚我怎么能通过静态意图。

提前致谢。

1 个答案:

答案 0 :(得分:14)

可能你是从服务中调用此代码,这是一个警告,你正在创建一个新任务(一系列活动 - 即使用back将返回启动器或之前的任务)

从createChooser返回的intent没有设置标志,所以你应该尝试这样做:

Intent i = createChooser(mIntent, mtitle);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);

我认为它应该可行,但我还没有测试过它......