从小部件中检索额外的意图
Retrieving intent extras from widget
我正在为我的 WebView
应用制作一个小部件,上面有一个按钮列表。目前,只要他们按下,它就会触发一个意图。在那个意图中,我放了一些额外的字符串,但是当 onNewIntent
收到意图时,额外的值是 NULL
。所以我坚持接收额外的实际字符串。
这是我列表提供商的代码:
override fun getViewAt(positionIndexNum: Int): RemoteViews {
........
val extrasObj = Bundle()
extrasObj.putString("shortcutUrl", listViewUrlArr[positionIndexNum]) // I've tried hardcoding this part and it still returns null.
extrasObj.putString("shortcutJs", listViewJsArr[positionIndexNum])
extrasObj.putString("shortcutId", listViewIdArr[positionIndexNum])
val fillInIntentObj = Intent()
fillInIntentObj.putExtras(extrasObj)
viewObj.setOnClickFillInIntent(listViewItemId, fillInIntentObj)
return viewObj
}
这是 onNewIntent
函数的代码:
override fun onNewIntent(intentObj: Intent) {
super.onNewIntent(intentObj)
val bundle = intentObj.extras
if (bundle != null) {
for (key in bundle.keySet()) {
Log.e("TAG", key + " : " + if (bundle[key] != null) bundle[key] else "NULL")
}
}
.....
}
在logcat中输出:
shortcutUrl : NULL
shortcutId : NULL
shortcutJs : NULL
我也尝试过:intentObj.getStringExtra("shortcutId")
仍然 returns NULL
编辑:
我在 updateAppWidget
函数中也有这个 PendingIntent
代码:
val clickIntent = Intent(contextObj, MainActivity::class.java)
val clickPI = PendingIntent.getActivity(contextObj, 0,
clickIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT);
viewsObj.setPendingIntentTemplate(R.id.widget_list, clickPI)
我终于找到了解决这个问题的方法,我不确定它是如何工作的,但我改变了:
PendingIntent.FLAG_IMMUTABLE
至
PendingIntent.FLAG_MUTABLE
在PendingIntent
。希望这对其他人有帮助!
我正在为我的 WebView
应用制作一个小部件,上面有一个按钮列表。目前,只要他们按下,它就会触发一个意图。在那个意图中,我放了一些额外的字符串,但是当 onNewIntent
收到意图时,额外的值是 NULL
。所以我坚持接收额外的实际字符串。
这是我列表提供商的代码:
override fun getViewAt(positionIndexNum: Int): RemoteViews {
........
val extrasObj = Bundle()
extrasObj.putString("shortcutUrl", listViewUrlArr[positionIndexNum]) // I've tried hardcoding this part and it still returns null.
extrasObj.putString("shortcutJs", listViewJsArr[positionIndexNum])
extrasObj.putString("shortcutId", listViewIdArr[positionIndexNum])
val fillInIntentObj = Intent()
fillInIntentObj.putExtras(extrasObj)
viewObj.setOnClickFillInIntent(listViewItemId, fillInIntentObj)
return viewObj
}
这是 onNewIntent
函数的代码:
override fun onNewIntent(intentObj: Intent) {
super.onNewIntent(intentObj)
val bundle = intentObj.extras
if (bundle != null) {
for (key in bundle.keySet()) {
Log.e("TAG", key + " : " + if (bundle[key] != null) bundle[key] else "NULL")
}
}
.....
}
在logcat中输出:
shortcutUrl : NULL
shortcutId : NULL
shortcutJs : NULL
我也尝试过:intentObj.getStringExtra("shortcutId")
仍然 returns NULL
编辑:
我在 updateAppWidget
函数中也有这个 PendingIntent
代码:
val clickIntent = Intent(contextObj, MainActivity::class.java)
val clickPI = PendingIntent.getActivity(contextObj, 0,
clickIntent, PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT);
viewsObj.setPendingIntentTemplate(R.id.widget_list, clickPI)
我终于找到了解决这个问题的方法,我不确定它是如何工作的,但我改变了:
PendingIntent.FLAG_IMMUTABLE
至
PendingIntent.FLAG_MUTABLE
在PendingIntent
。希望这对其他人有帮助!