版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Android2013-09-0616:2912133(65)發(fā)一個(gè)Android的客戶端,本篇的重點(diǎn)在實(shí)踐,講解和原理環(huán)節(jié),大家可以參考前兩篇的文章manager包留下主要是一些管理組件,包括聯(lián)系人管理,消息管理,提醒管理,離線消息管理,用戶管理,xmpp連接service中存放一些android后臺(tái)的核心服務(wù),主要包括聊天服務(wù),聯(lián)系人服務(wù),系統(tǒng)消息服務(wù),重連接改這里的配置才可以使用其他的xmpp服務(wù)器[html]view<!--缺省的服務(wù)器配<integer<string<string<bool<bool<bool[html]view<!--Internet<uses-permissionandroid:name="android.permission.INTERNET"[html]view<!--Internet<uses-permissionandroid:name="android.permission.INTERNET"<!---訪問(wèn)網(wǎng)絡(luò)狀<!--SDCard寫入數(shù)據(jù)權(quán)<uses-permission </span><!--SDCardstyle="WHITE-</span><uses- </span><!--SDCardstyle="WHITE-</span><uses-1.ActivitySupport類[java]viewpackageimportandroid.app.Activity;importimportandroid.app.PendingIntent;importandroid.app.ProgressDialog;importandroid.content.Context;importandroid.content.Intent;importandroid.location.LocationManager;import.ConnectivityManager;import.NetworkInfo;importandroid.os.Bundle;importandroid.os.Environment;importandroid.widget.Toast;importimportm.Constant;importcsdn.shimiso.eim.model.LoginConfig;importimportimportActity*@authorimportActity*@author*publicclassActivitySupportextendsActivityimplementsIActivitySupportprotectedContextcontext=null;protectedSharedPreferencespreferences;protectedProgressDialogpg=null;protectedNotificationManagerprotectedvoidonCreate(Bundlecontext=this;preferences=getSharedPreferences(Constant.LOGIN_SET,pg=newProgressDialog(context);}protectedvoid{}protectedvoid{}protectedvoid{}protectedvoid{}{}publicProgressDialog{return}publicvoidstartService()//Intentserver=newIntent(context,IMContactService.class);//IntentchatServer=newIntent(context,IMChatService.class);//IntentreConnectService=newIntent(context,ReConnectService.class);//IntentimSystemMsgService=newIntent(context,}**@author*@update2012-5-16publicvoidstopService()//Intentserver=newIntent(context,IMContactService.class);////IntentreConnectService=newIntent(context,//IntentimSystemMsgService//IntentimSystemMsgService=newIntent(context,}publicvoidisExit().setNeutralButton("確定",new{publicvoidonClick(DialogInterfacedialog,int{stopService();}.setNegativeButton("取消",new{publicvoidonClick(DialogInterfacedialog,int{}}publicbooleanhasInternetConnected()ConnectivityManagermanager=(ConnectivityManager)if(manager!=null){NetworkInfonetwork=if(network!=null&&{return}}return}publicbooleanvalidateInternet()ConnectivityManagermanager=(ConnectivityManager)if(manager==null){return}else}elseif(info!=null){for(inti=0;i<info.length;i++)if(info[i].getState()=={return}}}}returnfalse;}publicbooleanhasLocationGPS()LocationManagermanager=(LocationManager)if(manager{return}elsereturn}}publicbooleanhasLocationNetWork()LocationManagermanager=(LocationManager)if(manager{return}elsereturn}}publicvoidcheckMemoryCard()if{new.setMessage("請(qǐng)檢查內(nèi)存卡new{new{intwhich){Intentintent=new}.setNegativeButton("退出new{intwhich){}}}publicvoidopenWirelessSet()new{intwhich){Intentintent=new}new{intwhichButton){}}*顯示*@param@param@author}*顯示*@param@param@author*@update2012-6-28publicvoidshowToast(Stringtext,int}**@author*@update2012-7-4publicvoid{=if(inputMethodManager!=null&&this.getCurrentFocus()!={}}**@param**@param**@param*@param@author**@param@author*@update2012-5-14publicvoidsetNotiType(inticonId,StringcontentTitle,StringcontentText,Classactivity,Stringfrom){IntentnotifyIntent=newIntent(this,activity);notifyIntent.putExtra("to",from);///*創(chuàng)建PendingIntent作為設(shè)置遞延運(yùn)行的Activity*/PendingIntentappIntentPendingIntent.getActivity(this,0,notifyIntent,/*Notication*/NotificationmyNotinew//myNoti.flags=myNoti.icon=iconId;/*statusbar*/myNoti.tickerText=contentTitle;/*notification發(fā)生時(shí)同時(shí)發(fā)出默認(rèn)聲音*//*設(shè)置Notification留言條的參數(shù)*//*Notification}publicContext{return}publicSharedPreferences{return}publicvoidsaveLoginConfig(LoginConfigloginConfig).putString(Constant.USERNAME,.putBoolean(Constant.IS_NOVISIBLE,}publicLoginConfig{LoginConfigloginConfig=newStringb=getResources().getString(R.string.xmpp_host);loginConfig.setPassword(preferences.getString(Constant.PASSWORD,null));T,true));return}publicT,true));return}publicbooleangetUserOnlineState()returnpreferences.getBoolean(Constant.IS_ONLINE,true);}publicvoidsetUserOnlineState(booleanisOnline)//preferences=getSharedPreferences(Constant.LOGIN_SET,0);}{return}}android最優(yōu)雅的,spring和hibernate[java]viewpackageimportimportimportimportimportimport**@seepublicclassSQLiteTemplate*DefaultPrimaryprotectedStringmPrimaryKey=privateDBManagerprivatebooleanisTransaction=privateSQLiteDatabasedataBase=privateSQLiteTemplate()}privateSQLiteTemplate(DBManagerdBManager,boolean{this.dBManager=dBManager;}isTransaction:一旦isTransaction*booleanisTransaction){returnnewSQLiteTemplate(dBManager,}*@param*@param@parampublicvoidexecSQL(String{try}catch(Exception{}finallyif{;}}*@param@parampublicvoidexecSQL(Stringsql,Object[]{trydataBase.execSQL(sql,bindArgs);}catch(Exception{}finallyif{}}}*@param**@param*publicpubliclonginsert(Stringtable,ContentValues{trydataBase=returndataBase.insert(table,null,}catch(Exception{}finallyif{}}return}*@parampublicvoiddeleteByIds(Stringtable,Object...{tryif(primaryKeys.length>0)StringBuildersb=newStringBuilder();for(@SuppressWarnings("unused")Objectid:primaryKeys){}sb.deleteCharAt(sb.length()-1);dataBase.execSQL("deletefrom"+table+"where+mPrimaryKey+"in("+sb+")",(Object[])primaryKeys);}}catch(Exception{}finallyif{}}}根據(jù)某一個(gè)字段和值刪除一行數(shù)據(jù),*@param@param根據(jù)某一個(gè)字段和值刪除一行數(shù)據(jù),*@param@param@param@return0publicintdeleteByField(Stringtable,Stringfield,String{trydataBase=returndataBase.delete(table,field+"=?",newString[]{value}catch(Exception{}finallyif{}}return}*@param**@param**@param**publicintdeleteByCondition(Stringtable,StringwhereClause,String[]whereArgs){trydataBase=returndataBase.delete(table,whereClause,}catch(Exception{}finallyif{}}return}**@param@param@return0publicintdeleteById(Stringtable,String{trydataBase=dBManager.openDatabase();}catch(Exception{}finallyif{}}return}*@param@param@param@return0publicintupdateById(Stringtable,Stringid,ContentValues{trydataBase=returndataBase.update(table,values,mPrimaryKey+"=?",newString[]{id});}catch(Exception{}finallyif{}}return}*@param*@param@param@param@param@return0publicintupdate(Stringtable,ContentValuesvalues,StringwhereClause,String[]whereArgs){trydataBase=returndataBase.update(table,values,whereClause,}catch(Exception{}finallyif{}}return}*@param@parampublicBooleanisExistsById(Stringtable,String{trydataBase=}catch(Exception{}finallyif{}}return}*根據(jù)某字段/*@param*@parampublicBooleanisExistsByField(Stringtable,Stringfield,String{StringBuildersql=newsql.append("SELECTCOUNT(*)FROM").append(table).append("WHERE.append(field).append("trydataBase=returnisExistsBySQL(sql.toString(),newString[]{value}catch(Exception{}finallyif{}}return}*@param@parampublicBooleanisExistsBySQL(Stringsql,String[]{Cursorcursor=null;try{dataBase=if(cursor.moveToFirst()){return(cursor.getInt(0)>}elsereturn}}catch(Exception{}finallyif{}}return}*@param@param}*@param@param@parampublic<T>TqueryForObject(RowMapper<T>rowMapper,Stringsql,String[]args){Tobject=null;trycursor=dataBase.rawQuery(sql,args);if(cursor.moveToFirst()){object=rowMapper.mapRow(cursor,}}finallyif{}}return}*@param@param@param**@param**public<T>List<T>queryForList(RowMapper<T>rowMapper,Stringsql,String[]selectionArgs){List<T>list=null;try{dataBase=list=newArrayList<T>();while}list=newArrayList<T>();while}}finallyif{}}}*@param@param@param**@param**public<T>List<T>queryForList(RowMapper<T>rowMapper,Stringsql,intstartResult,intmaxResult){List<T>list=null;try{dataBase=cursor=dataBase.rawQuery(sql+"limit?,?",new{String.valueOf(startResult),String.valueOf(maxResult)list=newArrayList<T>();}}finallyif{}}return***publicIntegergetCount(Stringsql,String[]{Cursorcursor=null;try{**publicIntegergetCount(Stringsql,String[]{Cursorcursor=null;try{dataBase=cursor=dataBase.rawQuery("selectcount(*)from("+sql+")",if{return}}catch(Exception{}finallyif{}}return}*@param@param**@param**@param*查詢條件子句,相當(dāng)于select語(yǔ)句where關(guān)鍵字后面的部分,在條件子句允許使用占位符*@param**@param*組*@param**@param*@param*public<T>public<T>List<T>queryForList(RowMapper<T>rowMapper,Stringtable,String[]columns,Stringselection,String[]selectionArgs,StringgroupBy,Stringhaving,StringorderBy,String{List<T>list=null;Cursorcursor=null;try{dataBase=cursor=dataBase.query(table,columns,selection,selectionArgs,groupBy,having,orderBy,limit);list=newArrayList<T>();}}finallyif{}}return}GetPrimary*{return}SetPrimary*@parampublicvoidsetPrimaryKey(String{this.mPrimaryKey=}*@author*@parampublicinterfaceRowMapper<T>**@param*publicinterfaceRowMapper<T>**@param**@param**publicTmapRow(Cursorcursor,int}*{if(null!=dataBase){}{}}}這里我封裝了很多sqlite常用的工具,大家可以借鑒使用。[java]viewpackageimportimportorg.jivesoftware.smack.Roster;importimportvider.ProviderManager;importorg.jivesoftware.smackx.GroupChatInvitation;importorg.jivesoftware.smackx.PrivateDataManager;importorg.jivesoftware.smackx.packet.LastActivity;importorg.jivesoftware.smackx.packet.OfflineMessageInfo;importimportimportvider.DiscoverInfoProvider;importvider.DiscoverItemsProvider;importvider.MUCAdminProvider;importvider.MUCOwnerProvider;importvider.MUCUserProvider;importvider.MessageEventProvider;importimportvider.DiscoverInfoProvider;importvider.DiscoverItemsProvider;importvider.MUCAdminProvider;importvider.MUCOwnerProvider;importvider.MUCUserProvider;importvider.MessageEventProvider;importvider.RosterExchangeProvider;importvider.StreamInitiationProvider;importvider.VCardProvider;importimportimport*XMPP服務(wù)器連接工具類*@authorpublicclass{privateXMPPConnectionprivatestaticConnectionConfigurationprivatestaticXmppConnectionManagerprivateXmppConnectionManager()}{if(xmppConnectionManager==null){}return}//publicXMPPConnectioninit(LoginConfig{Connection.DEBUG_ENABLED=false;connectionConfig=new;//;////////manual表示需要經(jīng)過(guò)同意,accept_allconnection=newXMPPConnection(connectionConfig);return}**@author*@update2012-7-4publicXMPPConnection{if(connec
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版?zhèn)€人信用卡債務(wù)代償協(xié)議書3篇
- 2024年版農(nóng)田堰塘建設(shè)協(xié)議模板版B版
- 二零二五年度鋼筋加工廠勞務(wù)分包合同范本6篇
- 武漢紡織大學(xué)外經(jīng)貿(mào)學(xué)院《分子模擬的原理和應(yīng)用》2023-2024學(xué)年第一學(xué)期期末試卷
- 二零二五版公墓環(huán)境維護(hù)與生態(tài)保護(hù)合作協(xié)議3篇
- 2024版影視制作與版權(quán)轉(zhuǎn)讓合同
- 2024英倫游學(xué)夏令營(yíng)青少年領(lǐng)袖培養(yǎng)與團(tuán)隊(duì)建設(shè)服務(wù)合同3篇
- 二零二五年度城市更新項(xiàng)目舊房收購(gòu)合同細(xì)則3篇
- 太原幼兒師范高等??茖W(xué)校《公共藝術(shù)項(xiàng)目實(shí)踐》2023-2024學(xué)年第一學(xué)期期末試卷
- 蘇州工藝美術(shù)職業(yè)技術(shù)學(xué)院《物聯(lián)網(wǎng)與云計(jì)算》2023-2024學(xué)年第一學(xué)期期末試卷
- 工程款支付報(bào)審表
- 《項(xiàng)目施工組織設(shè)計(jì)開題報(bào)告(含提綱)3000字》
- ICU常見藥物課件
- CNAS實(shí)驗(yàn)室評(píng)審不符合項(xiàng)整改報(bào)告
- 農(nóng)民工考勤表(模板)
- 承臺(tái)混凝土施工技術(shù)交底
- 臥床患者更換床單-軸線翻身
- 計(jì)量基礎(chǔ)知識(shí)培訓(xùn)教材201309
- 中考英語(yǔ) 短文填詞、選詞填空練習(xí)
- 阿特拉斯基本擰緊技術(shù)ppt課件
- 新課程理念下的班主任工作藝術(shù)
評(píng)論
0/150
提交評(píng)論