Android如何在打开主屏幕小部件时打开Activity?

Nag*_*ddy 2 android widget

我正在实现一个与小部件相关的应用程序,我准备了一个小部件,并且工作正常,并且单击打开活动的视图以准备该小部件的设置.

但我的要求是点击主屏幕小部件我想直接打开活动然后小部件.

从上面的图片中点击自定义模拟时钟小部件打开我的应用程序中的第一个活动,然后我想显示小部件,因为从我的活动我将为该小部件设置一些设置.我怎样才能先开展活动?

vgg*_*onz 6

将小部件添加到主屏幕时,可以调用特殊活动.如果要阻止创建窗口小部件本身,该活动可以返回活动的"onCreate"方法中的窗口小部件ID接收的SUCCESS意图或RESULT_CANCELED.

您只需要android:configureappwidget-providerXML 的属性中添加configure活动类,并android.appwidget.action.APPWIDGET_CONFIGURE在AndroidManifest中为您的活动声明添加一个intent过滤器.它在http://developer.android.com/guide/topics/appwidgets/index.html#Configuring中有详细介绍

收到的意图有小部件ID:

public void onCreate(Bundle savedInstanceState) {
    ...
    int widgetID = getIntent().getIntExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID);
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后您可以使用以下方式完成活动setResult(RESULT_CANCELED);或确认小部件创建:

    Intent resultValue = new Intent();
    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, widgetID);
    setResult(RESULT_OK, resultValue);
Run Code Online (Sandbox Code Playgroud)

您可以从该活动中执行所有窗口小部件设置.

另一方面,如果要执行其他只需要对所有窗口小部件实例执行一次的设置,则可以onEnabled按照http://developer.android.com/guide/中的说明在AppWidgetProvider类的方法中进行设置.专题/ appwidgets/index.html的#的AppWidgetProvider