从小部件中检索额外的意图

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。希望这对其他人有帮助!