如何从Android AppWidget开始活动?(How to start Activity fr

2019-06-25 21:44发布

这样的代码效果很好。

    Intent configIntent = new Intent (context, WidgetConfigActivity.class);
    configIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);
    PendingIntent pIntent = PendingIntent.getActivity(context, 0, configIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    remoteView.setOnClickPendingIntent(R.id.btn, pIntent);

但我想隐藏按钮befor活动会出现,所以我triing在发送意图的小部件本身,进行隐藏组件onReceive()方法,然后开始活动。 问题是,我不能使用startActivity()在AppWidget功能。

有没有什么解决办法吗?

Answer 1:

问题是,我不能在AppWidget使用startActivity()函数。

是的你可以。 您在传递Context对象进入onUpdate()onReceive()你的) AppWidgetProvider -调用startActivity()上。



Answer 2:

由于2 CommonsWare

还有一两件事要做。 context.startActivity(); 抛出RuntimeException在这种情况下。

从一个活动上下文之外调用startActivity()需要FLAG_ACTIVITY_NEW_TASK标志。 这真的是你想要的吗?

所以,你需要设置标志

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

之前。



Answer 3:

   // on receive function use this for new activity start
               Intent intent = new Intent (context, AppWdget.class);
               intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);
               context.startActivity (intent);


文章来源: How to start Activity from Android AppWidget?