Android Studio -使用腾讯即时通信

记录

在引入的腾讯第三方插件中自定义弹窗

如题,因为项目中引入了腾讯即时通信模块,但主要的功能都在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();
    }
}

猜你喜欢

转载自blog.csdn.net/pure81/article/details/128224970
今日推荐