使用配置 Activity 将小部件添加到屏幕

Adding widget to screen using configuration Activity

目前,在用户将小部件拖放到他们的屏幕上后,我的配置 Activity 就会启动。现在要将小部件实际添加到屏幕上,在配置中 activity 我这样做:

Intent resultValue = new Intent();
resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, mAppWidgetId);
setResult(RESULT_OK, resultValue);
finish();

基本上,我不确定如何在不调用 finish(); 的情况下将 setResult() 中的 RESULT_OK 结果集 return 返回给调用者。目前这是在 Activities onCreate() 中,因此 Activity 一启动就关闭。我不想添加一个 "Ok" 按钮让用户按下然后调用 finish() 所以结果是 returned。

我需要将小部件添加到屏幕,无论用户将其拖放到屏幕上后发生什么。我该怎么做?

您不必立即调用finish(),您可以将结果设置在onCreate()中,然后让Activity继续运行。我不确定会有什么好处,但完全没问题。

编辑

由于您无法捕获主页按钮的按下,也无法阻止用户切换应用程序,因此我仅有的其他建议如下:

  1. 不要在 <appqidget-provider> 中使用配置 activity。而是使用一些默认配置将小部件放在屏幕上,让用户单击它以启动 Activity 以修改配置。
  2. onStop() 中调用 finish()。如果用户导航离开或按下 Home,你应该得到 onStop() 回调,你可以简单地关闭 activity。不过,用户可能会尝试返回它,所以也许值得在您的清单中为 activity 使用 android:excludeFromRecents="true"