字符串参数未从本地通知发送到活动

Posted

技术标签:

【中文标题】字符串参数未从本地通知发送到活动【英文标题】:String parameters not sending to activity from local notification 【发布时间】:2019-06-28 14:22:49 【问题描述】:

我目前正在尝试发送带有操作的本地通知。选择时,该操作会将字符串推送到活动。不幸的是,当我尝试传递一个字符串时,我无法在活动中接收它,我有多个带有不同对象的日志语句,以查看系统是否可能将其识别为其他东西,但没有运气。当我尝试将其作为捆绑发送时的事件,发送的是捆绑包而不是字符串!如果我通过一个 int 效果很好!任何帮助将不胜感激,是的,我一直在为此研究并尝试了多种解决方案。

代码:

Intent intent = new Intent(context, MainActivity.class);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
        intent.setAction("action");

        intent.putExtra("idforaction", 12345);
        //intent.putExtra("test", "test message");
        Bundle bundle = new Bundle();
        bundle.putString("othertest","test message 2");
        intent.putExtra("test", bundle);
        PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);

主活动:

int notificationNum = getIntent().getIntExtra(idfoaction, -1);
        Log.e(TAG, "get Extras " + notificationNum);

        Log.e(TAG, "STRING? " + getIntent().getStringExtra("test"));
        Log.e(TAG, "CHARSEQ? " + getIntent().getCharSequenceExtra("test"));
        Log.e(TAG, "CHARS?" + (getIntent().getCharArrayExtra("test") != null ? getIntent().getCharArrayExtra("test").length + "" : "null"));
        Log.e(TAG, "PARCELABLE?" + (getIntent().getParcelableExtra("test") != null ? getIntent().getParcelableExtra("test").toString(): "null"));
        Log.e(TAG, "BUNDLE?" + (getIntent().getBundleExtra("test") != null ? "not null" : "null"));
        Log.e(TAG, "BUNDLE?" + (getIntent().getExtras() != null ? "not null" : "null"));
        if (getIntent().getExtras() != null) 
            Log.e(TAG, "bundle " + getIntent().getExtras().getString("othertest", ""));
            Log.e(TAG, "bundle " + getIntent().getExtras().get("othertest"));
        

【问题讨论】:

检查这个库。基于注解,还涉及 Intent 数据绑定:github.com/kostasdrakonakis/android_navigator 【参考方案1】:

试试这个:

Intent intent = new Intent(context, MainActivity.class);
intent.putExtra("my_key", "my_key_value");

然后阅读:

Intent intent = getIntent()
String myValue = intent.getStringExtra("my_key"); // "my_key_value"

【讨论】:

感谢您的帮助!不幸的是,我尝试了这种方法,但字符串显示为空白。 @paul590 检查你用这个键放在那里的东西

以上是关于字符串参数未从本地通知发送到活动的主要内容,如果未能解决你的问题,请参考以下文章

我可以在后台收听 CMPedometer 并在不同情况下发送本地推送通知吗?

使用firebase发送静默推送通知,以便在应用程序被杀死时唤醒它

发送少量通知后未从 GCM 收到推送通知

在 ios 中获取活动的本地通知警报类型或本地通知警报视图按钮单击事件

iOS推送通知未从服务器发送(Jetpack)

iPhone本地通知不会出现[重复]