`
xsuo
  • 浏览: 123336 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

Android:Gtalk(显示好友列表)

阅读更多

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);

            }

          };



}
分享到:
评论

相关推荐

    ch25_gtalk.rar_android_ch25_gtalk_gtalk_gtalk andro

    3. 联系人管理:Android系统的ContactsProvider接口被用于存储和检索联系人信息,GTalk客户端会利用这些信息建立和维护好友列表。 4. 事件通知:GTalk实现了推送通知服务,当有新消息到来时,系统会通过...

    asp.net获取MSN、Gtalk好友列表例子

    4. **展示好友列表**:在ASP.NET页面中,创建一个接口来显示这些好友。这可以通过创建一个简单的HTML列表或者使用ASP.NET的GridView控件来实现。 5. **处理用户交互**:添加按钮或其他UI元素,允许用户选择他们想要...

    android Gtalk.apk

    Google Talk(Gtalk)是Google公司开发的即时通讯工具,Gtalk除了具备一般IM功能外,还加上了Viop功能,Gtalk界面清晰大方,可直接链接Gmail,轻松接受邮件。欢迎下载最新版google talk。

    gtalk.apk-android

    gtalk.apk-android

    gtalk-robot:gtalk 机器人

    【gtalk-robot: Python构建的GTalk机器人】 在IT领域,尤其是自动化和通信技术方面,GTalk(Google Talk)机器人是一种使用编程语言与GTalk服务进行交互的应用程序。在这个案例中,我们关注的是"gtalk-robot",一个...

    Gtalk C# 开发

    本文将深入探讨“Gtalk C# 开发”这一主题,以帮助你理解如何利用C#来构建一个GTalk客户端,并探索可能的高级功能开发。 GTalk(Google Talk)是Google推出的一款即时通讯服务,它提供了文字聊天、语音通话和视频...

    安卓gtalk安装文件

    android4.0以上,给没有装google服务包的人。

    GTalkSMS源码

    然后你就可以用你的主控端发送消息的方式控制你的手机 "&gt;GTalkSMS实现了一个xmpp机器人 只要你在自己的gtalk(xmpp)上增加这个机器人为好友 就能像聊天一样远程操作自己的android手机了 使用简单就像是在即时聊天...

    gtalk样式自定义方法

    5. **测试和调整**:启动GTalk后,检查界面是否按预期显示,如有必要,可进一步微调主题文件,直至达到满意的视觉效果。 通过上述步骤,无论是Vista还是XP用户,都可以轻松地自定义GTalk的界面样式,享受更加个性化...

    和gtalk一样的聊天工具

    标题中的“和gtalk一样的聊天工具”指的是寻找与Google Talk(简称gtalk)类似功能的即时通讯软件。Google Talk是一款由Google推出的即时通讯服务,它允许用户进行文字聊天、语音通话,并与其他Google服务(如Gmail...

    vb.net Gtalk机器人

    这个机器人不仅能够自动发送预设的消息给指定的好友,还能接收并响应用户的输入,实现一定的智能对话功能。这种技术在自动化通知、客户服务、信息推送等方面有广泛应用。 首先,让我们深入了解一下VB.NET。VB.NET是...

    android-a programmer's guide

    1 What Is Android? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 Brief History of Embedded Device Programming . . . . . . . . . . . . . . . . . . . . ...

    Android入门到精通源代码.

    第12章 Android的搜索引擎和Gtalk开发 12.1 搜索引擎在手机中的应用 12.1.1 本地搜索 12.1.2 Web搜索 12.2 Android搜索引擎API简介 12.3 应用实例详解:过滤式搜索 引擎程序 12.3.1 实例分析 12.3.2 实例实现 12.4 ...

    GTalk 绿色单文件版

    GTalk 绿色单文件版

    android系统广播

    Android 系统广播大全 Android 系统广播是 Android 操作系统中的一种机制,用于在应用程序之间进行通信和交互。它允许不同的应用程序和系统组件之间进行通信,实现了数据的共享和交互。 Android 系统广播大全涵盖了...

    华为C8500 (gtalk)google_talk apk android 2.1平台

    难得资源,gtalk是google聊天工具,挂着几乎没有流量,发消息与接消息占多少用多少流浪,飞信比QQ省流量,精简飞信比飞信省流量,gtalk比精简飞信还省流量。挂着用吧。热爱网络,珍惜收藏

    完美解决android电子市场不能下载,Gtalk、Gmail不能正常使用

    完美解决android电子市场不能下载,Gtalk、Gmail不能正常使用……弄法见内部操作指南

    gtalk接口二次开发告警平台

    标题中的“gtalk接口二次开发告警平台”指的是基于Google Talk (gtalk) 的API进行的二次开发项目,主要用于创建一个告警系统。这个系统能够通过gtalk接口发送通知,以便在特定事件或异常发生时及时提醒用户。下面将...

    本人整理的android开发文档 第9章 P2P

    #### 知识点一:Android的P2P通信基础 在Android开发中,P2P(点对点)通信是一种重要的技术,允许设备之间直接进行通信,而无需通过中央服务器。在第九章中,详细介绍了如何利用Android的P2P通信协议,具体指的是...

Global site tag (gtag.js) - Google Analytics