0

我需要onActivityResult在启动活动的小部件中使用

public class MainActivity extends AppWidgetProvider implements
    OnActivityResultListener {
Context context;

@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager,
        int[] appWidgetIds) {
    super.onUpdate(context, appWidgetManager, appWidgetIds);
    this.context = context;
    for (int i = 0; i < appWidgetIds.length; i++) {
        int appWidgetId = appWidgetIds[i];
        Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
        intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
        PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 1);
        RemoteViews views = new RemoteViews(context.getPackageName(),
                R.layout.activity_main);

        views.setOnClickPendingIntent(R.id.imageButton1, pending);
        appWidgetManager.updateAppWidget(appWidgetId, views);
    }

}

@Override
public boolean onActivityResult(int requestCode, int resultCode, Intent data) {

}

我需要当我选择联系人时可以在小部件上获得结果

4

3 回答 3

1

在您的清单中,在您的应用小部件的广播中添加一个新的意图过滤器,并向其中添加一个个人操作,例如“GET_RESULT_FROM_ACTIVITY”,然后启动您想要结果的活动。完成代码后,在此活动中调用 sendBroadcast(your_intent) 方法,并在其中放置额外内容并设置操作“GET_RESULT_FROM_ACTIVITY”。在 appwidget 的 onReceive() 方法中,检查 if intent.getAction().equals("GET_RESULT_FROM_ACTIVITY") 并在 if 语句中执行您想要的操作。

于 2014-04-01T20:57:36.460 回答
0

假设您通过从第二个活动传回数据,您可以通过调用您的方法Intent.putExtra()来访问您传递的任何内容。data.getExtras()onActivityResult

请参阅此处的教程

于 2013-03-04T07:10:08.360 回答
0

这是错误的,因为 AppWidgetProvider 没有 onActivityResult 方法。

 @Override
    public boolean onActivityResult(int requestCode, int resultCode, Intent data) {

    }

如果您想从活动中获取结果,您可以使用发送广播来更新 appwidget 视图

于 2013-03-04T07:38:03.680 回答