我正在为我的应用程序开发一个小部件,我想将小部件中的特定数据传递给应用程序.用户可以添加多个版本的小部件,我需要检测它来自哪个小部件,以便我可以在应用程序中显示特定信息.
到目前为止我的工作,但只有当我完全退出我的应用程序(反复按下后退按钮),否则它似乎没有检测到传入的数据.
这个代码我必须将数据从小部件传递到应用程序:
public class WidgetProvider extends AppWidgetProvider {
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
final int N = appWidgetIds.length;
for (int i=0; i<N; i++)
UpdateWidget(context, appWidgetManager, appWidgetIds[i]);
}
public static void UpdateWidget(Context context, AppWidgetManager appWidgetManager, int appWidgetId)
{
Intent intent = new Intent(context, Main.class);
final Bundle bun = new Bundle();
bun.putInt("widgetId", appWidgetId);
intent.setData(Uri.parse(intent.toUri(Intent.URI_INTENT_SCHEME)));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtras(bun);
PendingIntent pendingIntent = PendingIntent.getActivity(context, appWidgetId, intent, PendingIntent.FLAG_UPDATE_CURRENT);
RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.widget);
views.setOnClickPendingIntent(R.id.widgetText, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetId, views);
}
} …Run Code Online (Sandbox Code Playgroud)