startActivity()函数在Android 8+中的服务类内不起作用

问题描述 投票:0回答:1

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

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

我也将此标志包含在我的Intent中,但仍显示相同的错误。

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

                    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..."));

java android android-intent service
1个回答
0
投票

Intent.createChooser创建一个Intent,因此您需要在that意向上设置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);

您也叫startService而不是startActivity-请确保也要更正。

© www.soinside.com 2019 - 2024. All rights reserved.