Android 即时通讯软件 IM 的实现
2010-03-13 17:11:00 来源:WEB开发网在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());
}
更多精彩
赞助商链接