使用 Intent.createChooser 并收到错误:从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志

Jai*_*ray 2 java service android android-intent android-activity

我想从服务类中打开共享通过选项。它在 Android 7 中工作正常,但在 8+ 操作系统中它开始显示

android.util.AndroidRuntimeException:从 Activity 上下文外部调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志。这真的是你想要的吗?

我也已将此标志包含在我的意图中,但它仍然显示相同的错误。

还有其他方法可以通过服务类的选项打开共享吗?

                    Intent i = new Intent(Intent.ACTION_SEND);
                    i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    i.putExtra(Intent.EXTRA_STREAM, rasta);  //rasta -> Uri obj
                    i.setType("image/*");
                    getApplicationContext().startService(Intent.createChooser(i,"Share karna..."));

Run Code Online (Sandbox Code Playgroud)

Rya*_*ley 6

Intent.createChooser创建一个Intent,因此您需要FLAG_ACTIVITY_NEW_TASK意图上设置标志,例如,

                    Intent i = new Intent(Intent.ACTION_SEND);
                    i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                    i.putExtra(Intent.EXTRA_STREAM, rasta);  //rasta -> Uri obj
                    i.setType("image/*");
                    Intent chooserIntent = Intent.createChooser(i,"Share karna...");
                    chooserIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                    getApplicationContext().startActivity(chooserIntent);

Run Code Online (Sandbox Code Playgroud)

您还打电话startService而不是startActivity- 请确保也更正该问题。