2011-03-22 71 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); 

我認爲它應該工作,但我還沒有測試它...