嗨,在下面我正在创建组,因为我传递的组名与该组中的朋友没有。
现在我的问题是friendAdapter.getCheckedItems()
使用这种方法我得到唯一的选中值。现在,我想将通知发送给组消息中只有已检查的朋友,应该是带有用户名的组名。
的java
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
.permitAll().build();
StrictMode.setThreadPolicy(policy);
}
setContentView(R.layout.group_list_screen);
Button create=(Button)findViewById(R.id.create);
friendAdapter = new FriendListAdapter(this);
create.setOnClickListener(new OnClickListener() {
@SuppressWarnings({ "unused", "unchecked" })
@Override
public void onClick(View v) {
String groupname = getIntent().getStringExtra("nick");
try {
imService=Login.imService;
String result1 = imService.CreateGroup(groupname,imService.getUsername(),friendAdapter.getCheckedItems());
System.out.println(result1);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
Toast.makeText(getApplicationContext(), "Group Created Sucessfully",Toast.LENGTH_LONG).show();
}
});
imService.CreateGroup()。java
public String CreateGroup(String groupname,String username,
ArrayList<FriendInfo> result) throws UnsupportedEncodingException {
this.groupname=groupname;
List<String> usersName = new ArrayList<String>();
for (int i = 0; i < result.size(); i++) {
usersName.add(result.get(i).userName);
}
String params = "groupname="+ URLEncoder.encode(this.groupname,"UTF-8") +
"&username="+ URLEncoder.encode(this.username,"UTF-8") +
"&password="+ URLEncoder.encode(this.password,"UTF-8") +
"&friendUserName=" +usersName.toString().replaceAll(" ","")+
"&action=" + URLEncoder.encode("CreateGroup","UTF-8")+
"&";
Log.i("PARAMS", params);
return socketOperator.sendHttpRequest(params);
}
的SendMessage()
public void sendmessage(FriendInfo[] result)
{
if (result != null)
{
NotificationManager NM = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
if (result.length > 0)
{
String tmp = new String();
for (int j = 0; j < result.length; j++) {
tmp = tmp.concat(result[j].userName).concat(",");
}
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.stat_sample)
.setContentTitle(getText(R.string.new_friend_request_exist));
@SuppressWarnings("unused")
Notification notification = new Notification(R.drawable.stat_sample,
getText(R.string.new_friend_request_exist),
System.currentTimeMillis());
String groupname = getIntent().getStringExtra("nick");
Intent i = new Intent(this, FriendList.class);
i.putExtra(FriendInfo.FRIEND_LIST, tmp);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
i, 0);
mBuilder.setContentText("You have new Group request"+groupname);
mBuilder.setContentIntent(contentIntent);
NM.notify(R.string.new_group_request_exist, mBuilder.build());
}
else
{
NM.cancel(R.string.new_group_request_exist);
}
}
}
答案 0 :(得分:0)
&#34;组&#34;消息被发送给个人,而不是&#34;组&#34;个人在您的消息传递协议中,您可以(并且应该)包括组参与者列表(针对用户以及&#34;回复&#34;目的)。
但是如果你想&#34;发送给一个团体&#34;那么你正在使用的消息服务需要支持它。此外,&#34; GroupNames&#34;消息传递协议通常不支持 - 名称对用户而不是其他组成员来说是方便的。
您没有指定发送信息的方式 - 短信,聊天等
如果您想知道哪些用户已经过检查&#34;你只需要遍历适配器(它应该包含所有数据)或者在检查项目时维护一个列表。
编辑:
您的sendMessage
方法正在通知设备用户 - 它不会发送&#34;通知&#34;到其他设备。您需要使用SMS,Google云消息传递(GCM),亚马逊通知或其他一些方式来发送&#34;消息(然后设备和/或应用程序将在收到消息时通知)。