Android 从通过intent启动的活动将小部件添加到主屏幕

Android 从通过intent启动的活动将小部件添加到主屏幕,android,widget,android-intent,Android,Widget,Android Intent,我试图让我的主屏幕小部件触发新小部件的配置类,但遇到了一个问题 当用户第一次尝试将my widget添加到主屏幕时,它会启动一个线程,该线程下载一个包含传感器列表的文件,然后退出。下载完成后,下载任务将触发通知。当用户点击通知时,它应该启动dataWidgetConfig活动。在某种程度上,这是有效的,使用这段代码 mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); final N

我试图让我的主屏幕小部件触发新小部件的配置类,但遇到了一个问题

当用户第一次尝试将my widget添加到主屏幕时,它会启动一个线程,该线程下载一个包含传感器列表的文件,然后退出。下载完成后,下载任务将触发通知。当用户点击通知时,它应该启动dataWidgetConfig活动。在某种程度上,这是有效的,使用这段代码

mNotificationManager = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);
final Notification notifyDetails = new Notification(R.drawable.icon,"Sensor list downloaded.",System.currentTimeMillis());

CharSequence contentTitle = "Notification Details...";
CharSequence contentText = "Sensor list has downloaded, tap to add widget.";

Intent notifyIntent = new Intent(self, dataWidgetConfig.class);
notifyIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
notifyIntent.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId);

PendingIntent pendingIntent = PendingIntent.getActivity(self, appWidgetId, notifyIntent, 0);

notifyDetails.setLatestEventInfo(self, contentTitle, contentText, pendingIntent);
mNotificationManager.notify(SIMPLE_NOTFICATION_ID, notifyDetails);
我的问题是,我没有appWidgetId。当我在主屏幕上长按添加一个小部件时,我获得了一个appWidgetId,我如何向主屏幕请求一个?我猜我不能只是编一个,因为它可能已经在使用中,或者以后被分配

此时,我的活动启动正常,但退出,因为我故意将我的appWidgetId设置为:

AppWidgetManager.INVALID_APPWIDGET_ID;

有人能给我一些建议吗?

我已经尝试为appWidgetId生成一个随机数。config类启动正常,但保存时小部件未添加到主屏幕。我真的不希望它能工作,但我想值得添加一个注释,说明我已经尝试过。用户将指定的设置是否取决于下载中的数据?是的,下载的数据在配置视图上用传感器名称填充其中一个微调器。然后,用户可以选择一个和几个其他的位和块,并在主屏幕上创建小部件。您不能以编程方式添加应用程序小部件实例。用户必须启动该操作。因此,看起来下载必须在用户最初配置应用程序小部件时进行,或者您必须通知用户当前的应用程序小部件配置在下载时被取消,他们应该在通知说下载完成后再次尝试添加应用程序小部件。你找到通过编程方式添加应用程序小部件的方法了吗?我被困在那上面了。