云信IM一个有点bug的单聊和群聊

MainActivity类

public class MainActivity extends AppCompatActivity {
    EditText editTextOne;
    EditText editTextTwo;
    Button buttonOne;
    String groupId = "";
    String groupName = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        editTextOne = findViewById(R.id.Edit_One);
        editTextTwo = findViewById(R.id.Edit_Two);
        buttonOne = findViewById(R.id.Btn_One);
        //点击登录
        buttonOne.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //根据输入框得到用户名和密码,判断是否有该用户
                NimUIKit.login(new LoginInfo(editTextOne.getText().toString(), editTextTwo.getText().toString()), new RequestCallback<LoginInfo>() {
                    @Override
                    public void onSuccess(LoginInfo loginInfo) {
                        //登录成功,跳转页面,把群聊ID和Name传到下一页面中去
                        NimUIKit.getAccount();
                        Intent intent = new Intent(MainActivity.this, WelcomeActivity.class);
                        intent.putExtra("groupId",groupId);
                        intent.putExtra("groupName",groupName);
                        startActivityForResult(intent,0);
                    }

                    @Override
                    public void onFailed(int i) {

                    }

                    @Override
                    public void onException(Throwable throwable) {

                    }
                });
            }
        });
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0&&resultCode == RESULT_OK){
            //通过回传,等到群聊的ID和Name
            groupId = data.getStringExtra("groupId");
            groupName = data.getStringExtra("groupName");
        }
    }
}

MainActivity的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:orientation="horizontal"
        android:paddingLeft="20dp"
        android:paddingRight="20dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="帐号:"
            android:textColor="@color/colorAccent" />

        <EditText
            android:id="@+id/Edit_One"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的帐号!" />
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="20dp"
        android:orientation="horizontal"
        android:paddingLeft="20dp"
        android:paddingRight="20dp">

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="密码:"
            android:textColor="@color/colorAccent" />

        <EditText
            android:id="@+id/Edit_Two"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入您的帐号!" />
    </LinearLayout>

    <Button
        android:id="@+id/Btn_One"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="60dp"
        android:text="登录!" />

</LinearLayout>

WelcomeActivity类

public class WelcomeActivity extends AppCompatActivity {
    ListView listViewOne;
    Button buttonOne;
    List<String> list = new ArrayList<>();
    List<String> arrayList = new ArrayList<>();
    String groupId = "";
    String groupName = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_welcome);
        listViewOne = findViewById(R.id.List_One);
        buttonOne = findViewById(R.id.Btn_Two);
        Intent intent = getIntent();
        //从上一页面获得群聊的ID和Name
        groupId = intent.getStringExtra("groupId");
        groupName = intent.getStringExtra("groupName");
        //所有用户的集合
        final List<String> users = new ArrayList<>();
        users.add("asd");
        users.add("123456");
        users.add("2396779313");
        buttonOne.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                //点击退出登录按钮,返回登录页面
                Intent intent1 = new Intent(WelcomeActivity.this, MainActivity.class);
                //退出同时把本也页面创建的群聊ID和Name回传到登录页面
                intent1.putExtra("groupId",groupId);
                intent1.putExtra("groupName",groupName);
                setResult(RESULT_OK,intent1);
                finish();
            }
        });
        //如果上一页面得到的ID为空,代表我们所有用户并没有创建过群聊
        if (groupId.equals("")){
            //创建群聊
            HashMap<TeamFieldEnum, Serializable> fields = new HashMap<TeamFieldEnum, Serializable>();
            fields.put(TeamFieldEnum.Name, "xxx最美");
            fields.put(TeamFieldEnum.VerifyType, VerifyTypeEnum.Free);
            NIMClient.getService(TeamService.class)
                    .createTeam(fields, TeamTypeEnum.Normal,"",users)
                    .setCallback(new RequestCallback<CreateTeamResult>() {
                        @Override
                        public void onSuccess(CreateTeamResult createTeamResult) {
                            Toast.makeText(WelcomeActivity.this, "成功创建群组"+ createTeamResult.toString(), Toast.LENGTH_SHORT).show();
                            //创建成功后获得ID和Name
                            groupId = createTeamResult.getTeam().getId();
                            groupName = createTeamResult.getTeam().getName();
                            //list是为了判断群聊还是单聊
                            list.add(groupId+"&2");
                            //arrayLisy是显示listView的数据
                            arrayList.add(groupName);
                            //适配器
                            ArrayAdapter<String> adapter = new ArrayAdapter<>(WelcomeActivity.this,R.layout.support_simple_spinner_dropdown_item,arrayList);
                            listViewOne.setAdapter(adapter);
                            Toast.makeText(WelcomeActivity.this, "成功创建群组id" + groupId+ createTeamResult.toString(), Toast.LENGTH_SHORT).show();
                        }

                        @Override
                        public void onFailed(int i) {

                        }

                        @Override
                        public void onException(Throwable throwable) {

                        }
                    });
        }
        else {
            //如果ID有值代表我们曾经创建过群聊,我们再把Name添加到集合中去
            list.add(groupName+"&2");
            arrayList.add(groupName);
            ArrayAdapter<String> adapter = new ArrayAdapter<>(WelcomeActivity.this,R.layout.support_simple_spinner_dropdown_item,arrayList);
            listViewOne.setAdapter(adapter);
        }
        //单聊
        NIMClient.getService(UserService.class).fetchUserInfo(users)
                .setCallback(new RequestCallback<List<NimUserInfo>>() {
                    @Override
                    public void onSuccess(List<NimUserInfo> nimUserInfos) {
                        //获得所有用户的名称
                        for (int i = 0; i < nimUserInfos.size(); i++) {
                            list.add(nimUserInfos.get(i).getName()+"&1");
                            arrayList.add(nimUserInfos.get(i).getName());
                        }
                        Toast.makeText(WelcomeActivity.this, "1111", Toast.LENGTH_SHORT).show();
                        //得到名称后,设置适配器
                        ArrayAdapter<String> adapter = new ArrayAdapter<>(WelcomeActivity.this,R.layout.support_simple_spinner_dropdown_item,arrayList);
                        listViewOne.setAdapter(adapter);

                    }

                    @Override
                    public void onFailed(int i) {

                    }

                    @Override
                    public void onException(Throwable throwable) {

                    }
                });
        listViewOne.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //点击listViewd的每一行时获得list集合中该下标的内容
                String s = list.get(position);
                //根据&分割
                String[] split = s.split("&");
                //判断split[i],如果为1,便是单聊,如果为2,便是群聊
                if(split[1].equals("1")){
                    String name = users.get(position);
                    NimUIKit.startP2PSession(WelcomeActivity.this,name);
                }
                else {
                    NimUIKit.startTeamSession(WelcomeActivity.this, groupId);
                }
            }
        });

    }
}

WelcomeActivity的xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".WelcomeActivity">
    <Button
        android:id="@+id/Btn_Two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="退出登录"
        android:textSize="20dp"/>
    <ListView
        android:id="@+id/List_One"
        android:layout_width="match_parent"
        android:layout_height="match_parent"></ListView>
</LinearLayout>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值