0

我有自定义应用程序类

public class MyApp extends Application {

    public static Context application_context;

 @Override
    public void onCreate() {
        super.onCreate();
application_context=getApplicationContext();
    }

    public static void startShareIntent() {
        Intent shareIntent = new Intent(Intent.ACTION_SEND);
        shareIntent.setType("text/plain");
        shareIntent.putExtra(Intent.EXTRA_TEXT, "some text");

        shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        shareIntent.putExtra(Intent.EXTRA_SUBJECT, "subject");
        application_context.startActivity(Intent.createChooser(shareIntent, 
                                                                  "Share with"));
    }
}

当我调用此方法时,我收到此错误消息

“从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?”

是的,这就是我真正想要的,但为什么我做不到呢?

4

1 回答 1

0

当您调用 Intent.createChooser() 时,这将返回一个新的 ACTION_CHOOSER Intent,它没有设置 FLAG_ACTIVITY_NEW_TASK。这就是您收到此错误的原因。也许你想要这样的东西:

public static void startShareIntent() {
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("text/plain");
    shareIntent.putExtra(Intent.EXTRA_TEXT, "some text");

    shareIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "subject");
    Intent chooserIntent = Intent.createChooser(shareIntent, "Share with");
    chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    application_context.startActivity(ChooserIntent);
}
于 2012-04-27T10:40:30.367 回答