当前位置: 首页 > 知识库问答 >
问题:

Android触发通知代码,即使用户只点击app按钮

严远
2023-03-14

下面是我的代码,它设置了一个通知,即用户是通过zoom服务被bieng调用的。但是,如果用户不点击通知,而是直接点击应用程序图标,则无法正确捕获额外内容。我对如何从简历中的这个悬而未决的意图中提取额外的内容有点迷茫。

notificationcompat.builder mBuilder=new notificationcompat.builder(this);//构建新的通知mbuilder.setsmallicon(r.drawable.ic_launcher);mbuilder.setContentTitle(getString(r.string.incoming_zoom_meeting_title));mbuilder.setContentText(string.format(getString(r.string.incoming_zoom_meeting_message),pushobject.getZoomCall().get(ciconstants.zoom_title)));mbuilder.setsound(uri.parse(“Android.resource://”+this.getPackageName()+“/”+r.raw.Constellation));//这将声音设置为播放

                            Intent resultIntent = new Intent(this, MainActivity.class); //set notification click behavior
                            resultIntent.putExtra(CIConstants.ZOOM_MEETING_ID, pushObject.getZoomCall().getString(CIConstants.ZOOM_MEETING_ID).trim());
                            resultIntent.putExtra(CIConstants.ZOOM_USER_ID,pushObject.getZoomCall().get(CIConstants.ZOOM_TITLE).toString());

                            PendingIntent resultPendingIntent = PendingIntent.getActivity(this, 0, resultIntent, PendingIntent.FLAG_UPDATE_CURRENT);
                            mBuilder.setContentIntent(resultPendingIntent);

                            int mNotificationId = 001;
                            NotificationManager mNotifyMgr = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
                            mNotifyMgr.notify(mNotificationId, mBuilder.build());

然后在主活动中通过。

    if (savedInstanceState == null) {
        Bundle extras = getIntent().getExtras();
        mMeetingNumber = extras != null ? extras.get(CIConstants.ZOOM_MEETING_ID).toString() : null;
        mMeetingCallerName = extras != null ? extras.get(CIConstants.ZOOM_USER_ID).toString() : null;
        //if there is a meeting id in the intent
        mZoomCallIncoming = mMeetingNumber != null && !mMeetingNumber.isEmpty();
    }

非常感谢您的帮助。

共有1个答案

方风华
2023-03-14

如果有人遇到这个问题,最简单的方法就是继续将它放入一个静态变量中,稍后在onResume中检索,以防用户没有单击通知,它无论如何都将在onResume中填充。

    Intent i = getIntent();

    String meetingId = i.getStringExtra(CIConstants.ZOOM_MEETING_ID_KEY);
    String userId = i.getStringExtra(CIConstants.ZOOM_USER_ID_KEY);
    if (meetingId != null && !meetingId.isEmpty()) {
        CIConstants.ZOOM_MEETING_ID = meetingId;
        CIConstants.ZOOM_CALL_INCOMING = true;
        i.putExtra(CIConstants.ZOOM_MEETING_ID_KEY, "");
        i.putExtra(CIConstants.ZOOM_USER_ID_KEY, "");
    }
    if (userId != null && !userId.isEmpty())
        CIConstants.ZOOM_USER_ID = userId;

    if (CIConstants.ZOOM_CALL_INCOMING) {
        if(!CIConstants.ZOOM_CALL_NOTIFICATION_SOUND_PLAYING) {
            NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
            NotificationCompat.Builder builder = new NotificationCompat.Builder(this);
            builder.setSound(Uri.parse("android.resource://" + this.getPackageName() + "/" + R.raw.constellation));
            manager.notify("", CIUtility.NOTIFICATION_ZOOM, builder.build());
        }

        createZoomCallDialogue(CIConstants.ZOOM_MEETING_ID, CIConstants.ZOOM_USER_ID);
        CIConstants.ZOOM_CALL_INCOMING  = false; //reset the zoom uri so that it is not called again when activity is resumed from zoom
        CIConstants.ZOOM_CALL_NOTIFICATION_SOUND_PLAYING = false;
        CIConstants.ZOOM_MEETING_ID = null;
        CIConstants.ZOOM_USER_ID = null;
    }
 类似资料:
  • 我想在记录器服务运行时显示通知。用户应该能够在通知中直接暂停或停止记录器。所以我在通知中添加了两个按钮,并实现了一个BroadcastReceiver来处理按钮点击。 它几乎像我想要的那样工作,但有一个问题我无法解决。当用户单击按钮时,我想显示活动。这是我的代码: 目前执行每个按钮的正确操作,但如果用户单击时应用程序不可见,则不显示该应用程序。如何实现这一点? 有必要在这里实现BroadcastR

  • 本文向大家介绍JS通用方法触发点击事件代码实例,包括了JS通用方法触发点击事件代码实例的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了JS通用方法触发点击事件代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 最简单的触发单击事件肯定是elem.click(),平时在不需要考虑兼容性的场合我都是这么干的,但是毕竟这个方法有兼容性(

  • 如何指定用户点击通知包时要使用的意图?

  • 我有一个应用程序与推送通知挂钩。当用户点击通知时,我希望一个广播接收器被触发,而不是一个活动。 我看了这些线程,看起来这是完全可能和常见的。 Android通知动作未触发(PendingIntent) > 我创建了一个自定义接收器: 我在全局应用程序上动态注册了这个接收器(而不是活动) 过滤器只是一个字符串常量(我想知道这是不是问题所在)

  • 我正在尝试使用AccessibilityManager和TalkBack触发自定义。 该事件的用例是,当用户单击操作栏时,片段会轮询对象列表,然后根据列表的大小调整其 AccessibilityEvent 内容。 当我尝试运行它时,我没有收到预期的Talkback消息。我很确定我在实例化AccessibilityEvent时错过了一些基本的东西。 我也不确定我是否需要使用,或者如何在这里应用s,因

  • 本文向大家介绍Android点击按钮返回顶部实现代码,包括了Android点击按钮返回顶部实现代码的使用技巧和注意事项,需要的朋友参考一下 点击按钮返回顶部,直接上代码吧 布局文件 按钮点击事件 附带一个跳到底部 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。