从小部件启动的活动中获取结果。

时间:2013-03-04 07:00:38

标签: android android-widget

我需要在启动活动的小部件中使用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) {

}

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

请参阅教程here.

答案 2 :(得分:0)

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

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

    }

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