关于app小部件与集合的两个问题

时间:2016-10-27 03:19:37

标签: android android-widget android-appwidget

目前我正在研究带有集合的app小部件,有两点我很困惑,见下面的代码

onUpdate代码

        Intent serviceIntent=new Intent(context,StackService.class);
        serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME)));
        RemoteViews remoteViews=new RemoteViews(context.getPackageName(),R.layout.stack_widget);
        remoteViews.setRemoteAdapter(R.id.stack_widget,serviceIntent);
        remoteViews.setEmptyView(R.id.stack_widget,R.id.stack_empty);

        Intent toastIntent = new Intent(context, StackWidget.class);
        toastIntent.setAction(StackWidget.TOAST_ACTION);
        toastIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetIds[i]);
        PendingIntent toastPendingIntent = PendingIntent.getBroadcast(context, 0, toastIntent, PendingIntent.FLAG_UPDATE_CURRENT);
        remoteViews.setPendingIntentTemplate(R.id.stack_widget, toastPendingIntent);

        appWidgetManager.updateAppWidget(appWidgetIds[i],remoteViews);

getViewAt代码

public RemoteViews getViewAt(int position) {
        RemoteViews remoteViews=new RemoteViews(getPackageName(),R.layout.stack_item);
        remoteViews.setImageViewResource(R.id.item_image,R.raw.logo);
        remoteViews.setTextViewText(R.id.item_text,list.get(position));

        Bundle extras = new Bundle();
        extras.putInt(StackWidget.EXTRA_ITEM, position);

        Intent fillIntent=new Intent();
        fillIntent.putExtras(extras);

        remoteViews.setOnClickFillInIntent(R.id.item_button,fillIntent);
        return remoteViews;
    }

第一个问题是下面代码的目的是什么, 的 serviceIntent.setData(Uri.parse(serviceIntent.toUri(Intent.URI_INTENT_SCHEME))); 我通过google api doc阅读,但无法找到答案。

第二个问题是关于toastIntent,为什么在onUpdate方法而不是getViewAt方法中设置intent动作?为什么在按下按钮时会触发具有名为TOAST_ACTION的自定义操作的待定意图?

感谢您提前回答我的问题。

1 个答案:

答案 0 :(得分:0)

Intent.toUri()可以将此Intent转换为String,其中包含URI表示形式。

setDate经常在未声明的Intent中使用,可以启动与日期相关的组件。