提问者:小点点

在android 10(Q)上是否可以从小部件(后台)启动activity


我想启动我的应用程序(如果它以前关闭过)或将它带到前台,当用户在我的小部件上选择一个操作时
它在android 10之前的版本上工作得很好,但在android 10上什么都没有发生
这是我的代码:

Intent intent = new Intent();
intent.setClass(context, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
context.startActivity(intent);

我知道android 10对从后台开始活动的限制,但我想知道是否有任何变通方法来实现这一点?


共1个答案

匿名用户

在小部件类中声明

private var remoteView: RemoteViews? = null

然后打电话

  val intent = Intent(applicationContext, MainActivity::class.java)
  val stackBuilder = TaskStackBuilder.create(applicationContext)
  stackBuilder.addNextIntentWithParentStack(intent)
  val resultPendingIntent = stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT)

  remoteView = RemoteViews(packageName, R.layout.my_widget)
  remoteView!!.setOnClickPendingIntent(R.id.app_widget, resultPendingIntent)

如果单击了小部件,则应启动MainActivity。 我在一个前台服务中使用它,但是我认为如果小部件不在一个运行的服务中,即使服务停止,它也可以正常工作。