2011-03-22 68 views
1

我想构建一个Android插件来扩展ACTION_SEND功能,但是当我试图调用活动共享纯文本使用:我怎样才能调用startActivity()使用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和作品,但即使我已经注意到,如果你只是做这些,你可以调用其他的活动,但我可以”弄清楚我怎么能通过静态意图。

在此先感谢。

+0

@MisterSquonk我能叫呢?我试过mIntent.addFlags(mIntent.FLAG_ACTIVITY_NEW_TASK);我得到这个警告“应该以静态方式访问静态字段Intent.FLAG_ACTIVITY_NEW_TASK”,并在运行时执行中得到相同的错误:)。 – 2011-03-22 01:45:26

回答

13

可能您呼叫从服务这个代码这是你creting新任务的警告(系列活动 - 用背部将只是回到发射器或前一个任务即)

意图退换从createChooser可是没有标志设置,所以你应该尽量做到:

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

我认为它应该工作,但我还没有测试它...