我们需要的完成的功能有:
第一:根据是否公开的CheckBox的状态来判断开放群成员邀请的布局是否可见;
第二:当点击保存按钮的时候,判断群的名称是否为空,如果为空,则进行提示,否则进入选择群聊联系人的界面(将群组名称传进去)勾选联系人;
第三:当在选择联系人界面勾选好了联系人之后,将这些数据返回给本Activity,然后进行创建群组;
第四:根据CheckBox的选中状态判断是创建公开群还是私有群;
第五:创建群组失败则进行提示用户创建群组失败了;
第六:返回按钮的点击事件。
我们一一解决:
第一:根据是否公开的CheckBox的状态来判断开放群成员邀请的布局是否可见:
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
openInViteContainer.setVisibility(View.INVISIBLE);
} else {
openInViteContainer.setVisibility(View.VISIBLE);
}
}
});
选中的时候是创建公开群,那么此时默认支持群成员邀请:
第二:当点击保存按钮的时候,判断群的名称是否为空,如果为空,则进行提示,否则进入选择群聊联系人的界面(将群组名称传进去)勾选联系人;
/**
*
* 保存按钮的点击事件
*
* @param view
*/
public void save(View view) {
String name = groupNameEditText.getText().toString().trim();
// 群名称为空的情况下
if (TextUtils.isEmpty(name)) {
Intent intent = new Intent(this, AlertDialog.class);
intent.putExtra("msg", "群聊名称不能为空");
startActivity(intent);
} else {
// 进通讯录选择联系人
startActivityForResult(
new Intent(this, GroupPickContactsActivity.class).putExtra(
"groupName", name), 0);
}
}
第三:当在选择联系人界面勾选好了联系人之后,将这些数据返回给本Activity,然后进行创建群组;
// 进通讯录选择联系人
startActivityForResult(
new Intent(this, GroupPickContactsActivity.class).putExtra(
"groupName", name), 0);
第四:根据CheckBox的选中状态判断是创建公开群还是私有群;
// 选中状态,创建公开群
if (checkBox.isChecked()) {
// 创建公开群,此种方式创建的群,用户需要申请,等群主同意后才能加入此群
EMGroupManager.getInstance().createPublicGroup(
groupName, desc, members, true);
} else {
// 创建不公开的群
EMGroupManager.getInstance().createPrivateGroup(
groupName, desc, members,
memberCheckBox.isChecked());
}
第五:创建群组失败则进行提示用户创建群组失败了;
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
Toast.makeText(NewGroupActivity.this,
"创建群组失败:" + e.getLocalizedMessage(),
Toast.LENGTH_LONG).show();
}
});
第六:返回按钮的点击事件。
public void back(View view) {
finish();
}
整个的代码如下:
package com.dy.ustc.im.ui;
import com.dy.ustc.im.GroupPickContactsActivity;
import com.dy.ustc.im.R;
import com.dy.ustc.im.R.layout;
import com.easemob.chat.EMGroupManager;
import com.easemob.exceptions.EaseMobException;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.Intent;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.CompoundButton.OnCheckedChangeListener;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.Toast;
public class NewGroupActivity extends Activity {
private EditText groupNameEditText;// 群聊名称
private ProgressDialog progressDialog;// 创建群聊时的pd
private EditText introductionEditText;// 群聊简介
private CheckBox checkBox;// 是否公开群
private CheckBox memberCheckBox;// 是否开放群成员邀请
private LinearLayout openInViteContainer;// 开放群成员邀请的线性布局
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_new_group);
groupNameEditText = (EditText) findViewById(R.id.edit_group_name);
introductionEditText = (EditText) findViewById(R.id.edit_group_introduction);
checkBox = (CheckBox) findViewById(R.id.cb_public);
memberCheckBox = (CheckBox) findViewById(R.id.cb_member_inviter);
openInViteContainer = (LinearLayout) findViewById(R.id.ll_open_invite);
checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
if (isChecked) {
openInViteContainer.setVisibility(View.INVISIBLE);
} else {
openInViteContainer.setVisibility(View.VISIBLE);
}
}
});
}
/**
*
* 保存按钮的点击事件
*
* @param view
*/
public void save(View view) {
String name = groupNameEditText.getText().toString().trim();
// 群名称为空的情况下
if (TextUtils.isEmpty(name)) {
Intent intent = new Intent(this, AlertDialog.class);
intent.putExtra("msg", "群聊名称不能为空");
startActivity(intent);
} else {
// 进通讯录选择联系人
startActivityForResult(
new Intent(this, GroupPickContactsActivity.class).putExtra(
"groupName", name), 0);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode,
final Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
// 新建群组
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("正在创建群聊...");
progressDialog.setCanceledOnTouchOutside(false);
progressDialog.show();
new Thread(new Runnable() {
@Override
public void run() {
String groupName = groupNameEditText.getText().toString()
.trim();
String desc = introductionEditText.getText().toString();
String[] members = data.getStringArrayExtra("newmembers");
try {
// 选中状态,创建公开群
if (checkBox.isChecked()) {
// 创建公开群,此种方式创建的群,用户需要申请,等群主同意后才能加入此群
EMGroupManager.getInstance().createPublicGroup(
groupName, desc, members, true);
} else {
// 创建不公开的群
EMGroupManager.getInstance().createPrivateGroup(
groupName, desc, members,
memberCheckBox.isChecked());
}
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
setResult(RESULT_OK);
finish();
}
});
} catch (final Exception e) {
runOnUiThread(new Runnable() {
@Override
public void run() {
progressDialog.dismiss();
Toast.makeText(NewGroupActivity.this,
"创建群组失败:" + e.getLocalizedMessage(),
Toast.LENGTH_LONG).show();
}
});
}
}
}).start();
}
}
/**
*
* 返回按钮的点击事件
*
* @param view
*/
public void back(View view) {
finish();
}
}