使用腾讯即时通信
记录
在引入的腾讯第三方插件中自定义弹窗
如题,因为项目中引入了腾讯即时通信模块,但主要的功能都在app模块中,应用平台审核需要腾讯即时通信的模块中也要有举报的功能,然而用户的信息之类的基本都存在了app主模块中,因此需要做一个桥接
解决思路
1先完成两个模块之间的通信
我用的是网友推荐的appjoint
可参考
https://blog.csdn.net/qq_23018457/article/details/110469916
很简单,一遍就过了,在对应的build.gradle添加这个模块即可
然后写一个接口类,一个实现类,在app主模块中实现接口,在需要调用的副模块中通过反射调用接口中的方法即可
2如何自定义
项目中已经有activity的管理类了,不过没有对腾讯即时通信的activity进行添加,所以还需要在对应的activity(我这里的是chatactivity)中添加activty管理类的popactivity这个方法,记录当前所在的activity(在chatactivity中记得要添加一个外界可以访问当前activity的context的方法)
然后在activity管理类中调用currentactivity这个方法获得chatactivity,然后获得他的context,在这个context上添加dialog,以及里面一些对应的信息即可完成,时间关系就贴一下简单的代码吧
这是在app中实现接口类的实现类
@ServiceProvider
public class AppPublicInterface implements MyPublicInterface {
@Override
public void showJubakInfo(int type, String userTId, Object data) {
//这里要获得消息的内容和消息的发出者的id
//需要弹出一个确定框,让用户确认举报信息是否正确
ChatActivity currentActivity = (ChatActivity) ActivityManager.getInstance().currentActivity();
AlertDialog.Builder builder = new AlertDialog.Builder(currentActivity.getContext());
builder.setTitle("举报");
final EditText edit = new EditText(currentActivity.getContext());
builder.setView(edit);
if (type == 0) {
edit.setText("举报人: " + UserInfoInstance.getInstance().getRealName() + "\n举报内容: " + data.toString());
} else if (type == 32) {
edit.setText("举报人: " + UserInfoInstance.getInstance().getRealName() + "\n您举报的内容为图片,请耐心等待审核结果");
}else{
edit.setText("举报人: " + UserInfoInstance.getInstance().getRealName() + "\n您举报的内容为未知内容,请耐心等待审核结果");
}
edit.setFocusable(false);
edit.setEnabled(false);
edit.setTextAlignment(TEXT_ALIGNMENT_CENTER);
builder.setPositiveButton("提交", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ReportPresenter tem = new ReportPresenter();
tem.report(userTId, data.toString());
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.setCancelable(true); //设置按钮是否可以按返回键取消,false则不可以取消
AlertDialog dialog = builder.create(); //创建对话框
dialog.setCanceledOnTouchOutside(true); //设置弹出框失去焦点是否隐藏,即点击屏蔽其它地方是否隐藏
dialog.show();
}
}