WEB开发网
开发学院手机开发Android 开发 Android 即时通讯软件 IM 的实现 阅读

Android 即时通讯软件 IM 的实现

 2010-03-13 17:11:00 来源:WEB开发网   
核心提示:在CSDN看到有人发了这个源码,这个可是找了好久了,Android 即时通讯软件 IM 的实现,由于手机都是在移动网关之前,所以一直想不通怎么实现即时通迅,//字面理解是查account吧,一个本地的数据库查询mAdapter = new ProviderAdapter(this, mProviderCursor);s

在CSDN看到有人发了这个源码,这个可是找了好久了。由于手机都是在移动网关之前,所以一直想不通怎么实现即时通迅。因为下载下好决心好好研究一下。

解压后得到两个文件夹,一名:IM,二名:ImProvider。至今两个包分别有什么作用还不知道不过,在ImProvider里面找到了一个为 android.intent.category.LAUNCHER 的activity。所以我就重这里开始了。

在package com.android.providers.im;包下找到了LandingPage这个主类,继成自ListActivity。即然是个activity,那什么都不想,先找onCreate,看看他做了什么。

protected void onCreate(Bundle icicle) {

super.onCreate(icicle);

setTitle(R.string.landing_page_title);

if (!loadPlugins()) {

Log.e(TAG, “[onCreate] load plugin failed, no plugin found!”);

finish();

return;

} //加载插件,若失败结束。

startPlugins();

mProviderCursor = managedQuery(Im.Provider.CONTENT_URI_WITH_ACCOUNT,

PROVIDER_PROJECTION,

null /* selection */,

null /* selection args */,

Im.Provider.DEFAULT_SORT_ORDER);

//这里其实好多不明白了,看了好久,

//Im这个对象,应该是数据表的一个mapping。因为源码里实在找不到这个类。

//字面理解是查account吧,一个本地的数据库查询

mAdapter = new ProviderAdapter(this, mProviderCursor);

setListAdapter(mAdapter);

rebuildAccountToPluginMap();

//建立account与plugin的mapping;原来上面的查询是做这个的。

mBrandingResources = new HashMap();

loadDefaultBrandingRes();

loadBrandingResources();

//加载一些资源。

registerForContextMenu(getListView());

}

Tags:Android 即时 通讯

编辑录入:coldstar [复制链接] [打 印]
赞助商链接