我正在尝试将数据从小部件传递到活动,并且我总是收到null。 这是小部件类的onUpdate:
@Override
public void onUpdate(final Context context, final AppWidgetManager appWidgetManager, int[] appWidgetIds) {
ComponentName thisWidget = new ComponentName(context, MyWidgetProvider.class);
int[] allWidgetIds = appWidgetManager.getAppWidgetIds(thisWidget);
for (int widgetId : allWidgetIds) {
RemoteViews remoteViews = new RemoteViews(context.getPackageName(), R.layout.appwidget);
Intent configIntent = new Intent(context, WebViewActivity.class);
configIntent.putExtra("URL", "Content");
PendingIntent configPendingIntent = PendingIntent.getActivity(context, 0, configIntent, 0);
remoteViews.setOnClickPendingIntent(R.id.buttonOpen, configPendingIntent);
appWidgetManager.updateAppWidget(widgetId, remoteViews);
}
第二活动:
public class WebViewActivity extends AppCompatActivity {
WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_web_view);
String sessionId = getIntent().getStringExtra("URL");
Log.d("DTAG","URL: "+sessionId); //Is null
webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(sessionId);
}
}
答案 0 :(得分:1)
如果您想替换PendingIntent
中的附加内容,则需要使用FLAG_UPDATE_CURRENT
作为PendingIntent.getActivity()
的最终参数。否则,新Intent
中的附加功能将被忽略。
并且,如果您希望对不同的PendingIntent
对象具有不同的附加功能(例如,每个小部件ID),则需要将唯一的ID作为第二个参数传递给PendingIntent.getActivity()
。如果您一直使用0
,那么您会得到一个PendingIntent
和一组附加功能。