刚刚接到这个需求,感受应该特别简单,看了下,网上有例子,可是说的不是特别详细,在官网上看了一下,而后总结了一下,终于也是被搞定,android

不得不说官网也是比较坑,官网上给的例子的一些方法好多都已通过期了,一开始写的时候,发现长按事件以后怎么也出发不了回调,后来找到了融云官方的jdk,才发现已通过期了,新的融云列表事件监听用的是ide

RongIM.setConversationListBehaviorListener();

一共有四个回调方法分别是:布局

头像点击事件ui

@Override

public boolean onConversationPortraitClick(Context context, Conversation.ConversationType conversationType, String s) {

return false;

}

spa

头像长按事件xml

@Override

public boolean onConversationPortraitLongClick(Context context, Conversation.ConversationType conversationType, String s) {

return false;

}

对象

消息点击事件blog

@Override

public boolean onConversationClick(Context context, View view, UIConversation uiConversation) {

return false;

}

事件

消息长按事件utf-8

@Override

public boolean onConversationLongClick(final Context context, View view, final UIConversation uiConversation) {

return false;

}

咱们须要处理的就是onConversationLongClick()方法,首先把返回值更改成true,调用的时候就会调用咱们自定义的弹框,而不是融云提供的

首先咱们须要先自定好弹窗代码以下:

/*聊天浮层*/public static voidChatshow(finalContext mContext,String title,finalOnFloatingLayerClickLisenter onOKClickLisenter) {

AlertDialog.Builder builder = newAlertDialog.Builder(mContext);finalAlertDialog alertDialog = builder.create();alertDialog.show();alertDialog.getWindow().setContentView(R.layout.chatlist_dia);TextView closeBtn = (TextView) alertDialog.getWindow().findViewById(R.id.btn_delete);TextView upgradeText = (TextView) alertDialog.getWindow().findViewById(R.id.nomsg);upgradeText.setText(title);upgradeText.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View v) {

alertDialog.dismiss();onOKClickLisenter.onOkClick();}

});closeBtn.setOnClickListener(newView.OnClickListener() {

@Overridepublic voidonClick(View view) {

alertDialog.dismiss();onOKClickLisenter.onDismiss();}

});alertDialog.setCancelable(true);alertDialog.setCanceledOnTouchOutside(true);alertDialog.show();}

布局文件:

效果图就是这样子:

接下来咱们须要在长按事件中处理咱们的操做了,首先第一步,咱们须要获取到当前消息是否免打扰

RongIM.getInstance().getConversationNotificationStatus(Conversation.ConversationType.PRIVATE,

uiConversation.getConversationTargetId(), new RongIMClient.ResultCallback() {

@Override

public void onSuccess(final Conversation.ConversationNotificationStatus conversationNotificationStatus) {

}

@Override

public void onError(RongIMClient.ErrorCode errorCode) {

}

});

成功以后返回了一个conversationNotificationStatus对象,这个对象是干吗用的呢,里面就包含了当前的是否免打扰的信息,他有一个getvalue()方法,返回值是一个int型的,1=未开启免打扰,0=开启免扰,也就是说是1的时候点击出现弹窗显示的是开启免打扰,0的时候关闭免打扰。可是此处有一个小坑就是,你获取到这个值以后,点击设置免打扰,会发现无效,先来看看若是设置免打扰的方法吧;

RongIM.getInstance().setConversationNotificationStatus(Conversation.ConversationType.PRIVATE,

uiConversation.getConversationTargetId(), conversationNotificationStatus1, new RongIMClient.ResultCallback() {

@Override

public void onSuccess(Conversation.ConversationNotificationStatus conversationNotificationStatus) {

showToast("设置成功");

}

@Override

public void onError(RongIMClient.ErrorCode errorCode) {

showToast("设置失败");

}

});

调用此方法后会发现结果一直不变,这是为何呢;后来查看了源码以后,才发现融云会把conversationNotificationStatus对象里面的getValue()的值拿出来,可是值一直都是1,因此会没有效果,此时此刻或许你就会明白了,我们能够手动给他设置,

这个对象既然有gevalue方法,那么久会有setvalue方法,并且这个方法又会返回一个conversationNotificationStatus对象,因而咱们再把这个对象设置进去,运行代码,ok没问题啦。贴出此处总体代码吧:

RongIM.getInstance().getConversationNotificationStatus(Conversation.ConversationType.PRIVATE,uiConversation.getConversationTargetId(), newRongIMClient.ResultCallback() {

@Overridepublic voidonSuccess(finalConversation.ConversationNotificationStatus conversationNotificationStatus) {

final intvalue = conversationNotificationStatus.getValue();String title;finalConversation.ConversationNotificationStatus conversationNotificationStatus1;if(value==1){

conversationNotificationStatus1=conversationNotificationStatus.setValue(0);title="免打扰";}else{

conversationNotificationStatus1=conversationNotificationStatus.setValue(1);title="取消免打扰";}

AgreementDialog.Chatshow(context,title, newOnFloatingLayerClickLisenter() {

@Overridepublic voidonOkClick() {

RongIM.getInstance().setConversationNotificationStatus(Conversation.ConversationType.PRIVATE,uiConversation.getConversationTargetId(),conversationNotificationStatus1, newRongIMClient.ResultCallback() {

@Overridepublic voidonSuccess(Conversation.ConversationNotificationStatus conversationNotificationStatus) {

showToast("设置成功");}

@Overridepublic voidonError(RongIMClient.ErrorCode errorCode) {

showToast("设置失败");}

});}

@Overridepublic voidonDismiss() {

RongIM.getInstance().getRongIMClient().removeConversation(Conversation.ConversationType.PRIVATE,uiConversation.getConversationTargetId(), newRongIMClient.ResultCallback() {

@Overridepublic voidonSuccess(Boolean aBoolean) {

showToast("删除成功");}

@Overridepublic voidonError(RongIMClient.ErrorCode errorCode) {

showToast("删除失败");}

});}

});}

@Overridepublic voidonError(RongIMClient.ErrorCode errorCode) {

}

});好了,这个功能到这里也就结束了,仍是比较简单的,可是没作过的,可能就会采一些坑,但愿这篇博客会对大家开发有帮助。

android融云自定义通知,android融云消息免打扰相关推荐

  1. Android 融云单聊与群聊消息免打扰功能设置与消息删除功能实现

    一.设置群聊与单聊消息免打扰功能: 1.下面直接进入逻辑代码: 实现监听事件: /*** 设置会话列表界面操作的监听器.*/RongIM.setConversationListBehaviorList ...

  2. android融云自定义通知,Android SDK 体系架构 - 融云 RongCloud

    Android SDK 体系架构和消息体系 本文档将详细介绍融云的 SDK 产品架构和消息体系,以便于您更深入的了解融云并更快速的开发自己的产品. 融云 SDK 系统架构 IMKit IMKit 的功 ...

  3. Android 融云IM设置消息免打扰无效

    Android集成融云以后,设置会话消息免打扰所需要的方法无需多说: RongIM.getInstance().setConversationNotificationStatus(conversati ...

  4. JAVA中调用阿里云语音通知Api并接收消息回执

    JAVA中调用阿里云语音通知Api并接收消息回执 配置文件 需要的包 <dependency><groupId>com.aliyun</groupId><ar ...

  5. Android集成环信IM,实现为某一个好友设置消息免打扰

    环信SDK中是没有提供直接为某一个好友设置消息免打扰的api,其实,所谓的消息免打扰,无非就是在收到好友的消息时,不进行通知,在会话列表中,不显示未读消息数量,因此,我们可以将是否开启免打扰的的状态保 ...

  6. android融云消息免打扰

    刚刚接到这个需求,感觉应该特别简单,看了下,网上有例子,但是说的不是特别详细,在官网上看了一下,然后总结了一下,终于也是被搞定, 不得不说官网也是比较坑,官网上给的例子的一些方法好多都已经过期了,一开 ...

  7. android notification 自定义声音,Android和iOS自定义通知声音

    Android 自定义通知声音 在安卓开发中.很多时候要使用通知提醒用户.那么使用通知就会设计到通知的提示音.那么这篇文章就和大家一起讨论一下提示音的问题 1.自定义声音  声音文件放在ram目录下, ...

  8. cordova自定义android插件,Cordova 自定义插件(Android版本)

    Cordova 自定义插件(android) 特别注意 android 项目的包名 必须为 com.example.hello,否则编译不会通过. 1.安装命令工具 $ npm i plugman - ...

  9. android官网自定义相机,android native.js camera自定义相机

    //js代码 //用代码渲染页面 let activity = plus.android.runtimeMainActivity(); let SurfaceView = plus.android.i ...

  10. android简单登录自定义密码,Android自定义UI手势密码简单版

    先看看效果图: ImageLockActivity package com.example.imagelock; import com.example.view.NinePointLineView; ...

最新文章

  1. css盒子教程,彻底弄懂css盒子模式(div布局快速入门)_css教程
  2. 安卓在线按钮设计网站
  3. boost::flyweight模块实现自定义工厂模式的示例
  4. 第 8 章:管理模式对象
  5. 周五怎么表示 mysql_完美起航-MySQL找每个月最后一个星期五--函数定义与使用
  6. CollapsiblePanel控件
  7. CSS的50个代码片段
  8. dBeaver sql格式化配置-v1.5
  9. PPC软件字体太小的调整
  10. Nodejs 中文分词
  11. php摇骰子源码,HTML5 掷骰子游戏 源码下载
  12. 周末闲来——2048游戏开发
  13. 高德Mapabc地图标注 基础篇
  14. VisualC++6.0如何打开之前的程序
  15. JSON格式校验工具
  16. matlab离散系统的频率响应,离散系统的频率响应分析
  17. android widget的中文文档
  18. C#工具栏的各种工具
  19. Java 14:JDK 14进入GA时的所有新功能
  20. Unity 中 print 和 Debug.Log 的区别

热门文章

  1. 多个excel工作簿合并_Microsoft Excel如何快速合并多个工作簿至一个工作簿中?
  2. 数学基础——数理逻辑
  3. codelite14中文语言包_CodeLite中文语言包
  4. 浅析dToF和iToF
  5. mysql截取邮箱后缀_截取邮箱格式以及统计邮箱总数
  6. 支付宝小程序访问浙里办应用,提示页面访问受限,IOS无法访问
  7. 用php上传头像的步骤,php怎么上传头像
  8. 常见的java开发面试题整理
  9. Win7+Ubuntu 16.04LTS 双系统安装
  10. 【Hadoop】Hadoop Snappy 安装 (Ubuntu 16.04)