コード例 #1
0
        /** {@inheritDoc} */
        public override void onHttpStatusOK(QQHttpResponse response)
        {
            // {"retcode":0,"result":{"gmasklist":[{"gid":1000,"mask":0},{"gid":1638195794,"mask":0},{"gid":321105219,"mask":0}],
            // "gnamelist":[{"flag":16777217,"name":"iQQ","gid":1638195794,"code":2357062609},{"flag":1048577,"name":"iQQ核心开发区","gid":321105219,"code":640215156}],"gmarklist":[]}}
            QQStore    store = getContext().getStore();
            JSONObject json  = new JSONObject(response.getResponseString());

            int retcode = json.getInt("retcode");

            if (retcode == 0)
            {
                // 处理好友列表
                JSONObject results           = json.getJSONObject("result");
                JSONArray  groupJsonList     = results.getJSONArray("gnamelist");       // 群列表
                JSONArray  groupMaskJsonList = results.getJSONArray("gmasklist");       //禁止接收群消息标志:正常 0, 接收不提醒 1, 完全屏蔽 2

                for (int i = 0; i < groupJsonList.length(); i++)
                {
                    JSONObject groupJson = groupJsonList.getJSONObject(i);
                    QQGroup    group     = new QQGroup();
                    group.setGin(groupJson.getLong("gid"));
                    group.setCode(groupJson.getLong("code"));
                    group.setFlag(groupJson.getInt("flag"));
                    group.setName(groupJson.getString("name"));
                    //添加到Store
                    store.addGroup(group);
                }

                for (int i = 0; i < groupMaskJsonList.length(); i++)
                {
                    JSONObject maskObj = groupMaskJsonList.getJSONObject(i);
                    long       gid     = maskObj.getLong("gid");
                    int        mask    = maskObj.getInt("mask");
                    QQGroup    group   = store.getGroupByGin(gid);
                    if (group != null)
                    {
                        group.setMask(mask);
                    }
                }

                notifyActionEvent(QQActionEvent.Type.EVT_OK, store.getGroupList());
            }
            else
            {
                notifyActionEvent(QQActionEvent.Type.EVT_ERROR, null);
            }
        }
コード例 #2
0
        /**
         * <p>
         * processGroupMsg.
         * </p>
         *
         * @param pollData
         *            a {@link org.json.JSONObject} object.
         * @throws org.json.JSONException
         *             if any.
         * @throws iqq.im.QQException
         *             if any.
         * @return a {@link iqq.im.event.QQNotifyEvent} object.
         */
        public QQNotifyEvent processGroupMsg(JSONObject pollData)
        {
            // {"retcode"in0,"result"in[{"poll_type"in"group_message",
            // "value"in{"msg_id"in6175,"from_uin"in3924684389,"to_uin"in1070772010,"msg_id2"in992858,"msg_type"in43,"reply_ip"in176621921,
            // "group_code"in3439321257,"send_uin"in1843694270,"seq"in875,"time"in1365934781,"info_seq"in170125666,"content"in[["font",{"size"in10,"color"in"3b3b3b","style"in[0,0,0],"name"in"\u5FAE\u8F6F\u96C5\u9ED1"}],"eeeeeeeee "]}}]}
            QQStore store = getContext().getStore();
            QQMsg   msg   = new QQMsg();

            msg.setId(pollData.getLong("msg_id"));
            msg.setId2(pollData.getLong("msg_id2"));
            int     msgType   = pollData.getInt("msg_type");
            long    gin       = pollData.getLong("from_uin");
            long    fromUin   = pollData.getLong("send_uin");
            long    groupCode = pollData.getLong("group_code");
            QQGroup group     = store.getGroupByCode(groupCode);
            long    groupID   = -1;

            if (group == null)
            {
                group = new QQGroup();
                group.setGin(gin);
                group.setCode(groupCode);
                // put to store
                store.addGroup(group);
            }
            switch (msgType)
            {
            case 32: {
                // 魔法、超级、涂鸦表情
                groupID = pollData.getLong("t_gcode");         // 真实群号码
                break;
            }

            case 43:
                // 一般消息
                groupID = pollData.getLong("info_seq");         // 真实群号码


                msg.parseContentList(pollData.getJSONArray("content").ToString());
                msg.setType(QQMsg.Type.GROUP_MSG);
                msg.setDate(new DateTime(pollData.getLong("time") * 1000));
                break;

            default:
                break;
            }
            if (group.getGid() <= 0)
            {
                group.setGid(groupID);
            }
            msg.setGroup(group);
            if (group != null)
            {
                msg.setFrom(group.getMemberByUin(fromUin));
            }
            msg.setTo(getContext().getAccount());
            if (msg.getFrom() == null)
            {
                QQGroupMember member = new QQGroupMember();
                member.setUin(fromUin);
                msg.setFrom(member);
                if (group != null)
                {
                    group.getMembers().Add(member);
                }
            }

            return(new QQNotifyEvent(QQNotifyEvent.Type.CHAT_MSG, msg));
        }