Android:Gtalk(显示好友列表)

本文介绍了一个基于Android的应用程序如何实现显示Google Talk (GTalk) 的好友列表功能。通过具体的代码示例展示了如何查询联系人信息并展示其在线状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Android<操练>:Gtalk(显示好友列表)

截图:   此处注意:     在操作这个之前,要在先前<登录>程序里面修改两处:      1.  mGtalkSession = xmppservice.createGTalkSession(login_User.getText().toString(),login_Pwd.getText().toString());           mGtalkSession.requestRoster();                 2.  case 5:                                 mGtalkSession.setPresence(new Presence(Im.PresenceColumns.AVAILABLE, "Am here now!"));                                 createContact();                                 logMessage("the client requested roster from the server.");
代码:

import android.app.Activity;

import android.database.Cursor;

import android.graphics.Typeface;

import android.os.Bundle;

import android.provider.Im;

import android.util.Log;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.ImageView;

import android.widget.TableLayout;

import android.widget.TableRow;

import android.widget.TextView;



public class ContactsActivity extends Activity {

         private static final String TAG="microChat.ContactsView";

          private static final boolean DEBUG=true;        

        @Override

        protected void onCreate(Bundle icicle) {

                super.onCreate(icicle);

                setContentView(R.layout.contacts);

               

            // Run a query against CONTENT_URI = "content://im/contacts"

            Cursor cursor=managedQuery(Im.Contacts.CONTENT_URI, null,null, null, null);



            TableLayout layout=(TableLayout)findViewById(R.id.contacts_table_layout);

            int PRESENCE_STATUS=cursor.getColumnIndex(Im.PresenceColumns.PRESENCE_STATUS);

            int NICKNAME=cursor.getColumnIndex(Im.ContactsColumns.NICKNAME);

            int USERNAME=cursor.getColumnIndex(Im.ContactsColumns.USERNAME);

            int numRows=cursor.count();

            cursor.first();

            for(int i=0;i<numRows;i++)

            { int presence=(int)cursor.getLong(PRESENCE_STATUS);

              String name=cursor.getString(NICKNAME);

              String jid=cursor.getString(USERNAME);

              if(presence>0) layout.addView(row(new Contact(name,jid,presence)));



              cursor.next();

            }

          }



          class Contact

          { String name;

            String jid;

            int icon;

            TextView text=null; // TODO: TEST

                Contact(int i) // TEST

                { name="My Buddy "+i;

                  jid="Buddy"+i+"@jabber.net";

                  icon=R.drawable.icon;

                }

                Contact(String name,String jid,int presence)

                { this.name=" ("+presence+") "+name;

                  this.jid=jid;

                  switch(presence)

                  {

                    case Im.Presence.OFFLINE: icon=R.drawable.icon; break;

                    case Im.Presence.INVISIBLE: icon=R.drawable.icon; break;

                    case Im.Presence.DO_NOT_DISTURB: icon=R.drawable.icon; break;

                    case Im.Presence.AWAY: icon=R.drawable.icon; break;

                    case Im.Presence.IDLE: icon=R.drawable.icon; break;

                    case Im.Presence.AVAILABLE: icon=R.drawable.icon; break;

                  }

                }

          }



          private TableRow row(final Contact contact)

          {

                TableRow template=(TableRow)findViewById(R.id.contacts_row_layout);

                android.view.ViewGroup.LayoutParams layoutParams=template.getLayoutParams();

                TableRow layout=new TableRow(this);

                layout.setLayoutParams(layoutParams);



                ImageView imageView=new ImageView(this);

                imageView.setImageResource(contact.icon);

                imageView.setPadding(2,6,2,0); // left, top, right, bottom

            layout.addView(imageView);//,layoutParams);



            final TextView text=new TextView(this);

            text.setTag(contact); contact.text=text;

            text.setText(contact.name);

            text.setTypeface(Typeface.DEFAULT_BOLD);

            text.setFocusable(true);

            text.setOnClickListener(textClickListener);

            layout.addView(text);//,layoutParams);

                return(layout);

          }



          private OnClickListener textClickListener=new OnClickListener()

          { public void onClick(View view)

            { Contact contact=(Contact)view.getTag();

              if(DEBUG) Log.d(TAG,"row: onClick: contactName="+contact.name);

            }

          };



}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值