锘??xml version="1.0" encoding="utf-8" standalone="yes"?> 澶у鏁版搷浣滅郴緇燂紝鍦ㄥ簲鐢ㄧ▼搴忔墍瀵勫瓨鐨勫彲鎵ц紼嬪簭鏄犲儚錛堝Windows緋葷粺閲岀殑.exe錛夈佸畠鎵榪愯鐨勮繘紼嬩互鍙婂拰鐢ㄦ埛浜や簰鐨勫浘鏍囧拰搴旂敤涔嬮棿鏈変竴縐嶄弗鏍肩殑1瀵?鍏崇郴銆傚湪Android緋葷粺閲岋紝榪欎簺鍏寵仈瑕佹澗鏁e緱澶氥傚茍涓旈噸瑕佺殑鏄鐞嗚В鍚勭姒傚康鎬庝箞鏍風粍鎴愭暣浣撱?/p>
鐢變簬Android搴旂敤鍥烘湁鐨勭伒媧繪э紝褰撳疄鐜拌繖浜涗笉鍚屾柟闈㈢殑鏃跺欐湁涓浜涘熀鏈湳璇渶瑕佸姞浠ョ悊瑙o細 涓涓狝ndroid鍖?錛?apk錛夋枃浠訛紝鍏朵腑鍖呭惈涓涓簲鐢ㄧ▼搴忕殑浠g爜鍜岃祫婧愩傝繖鏄簲鐢ㄧ▼搴忓垎鍙戝拰涓嬭澆鐨勬枃浠訛紝鐢ㄦ埛鐢ㄦ潵瀹夎璇ュ簲鐢ㄧ▼搴忓湪浠栦滑鐨勮澶囦笂銆? 榪欓噷鐨勪竴涓叧閿偣鏄細褰撶敤鎴風湅鍒頒竴涓?#8220;搴旂敤”鏃訛紝浠栦滑瀹為檯涓婂湪鍜屼換鍔℃墦浜ら亾銆傚鏋滄偍鍒氬垰鍒涘緩涓涓寘鍚嫢騫叉椿鍔ㄧ殑.apk錛屽叾涓箣涓鏄《灞傚叆鍙g偣錛堥?榪囧姩浣渁ndroid.intent.action.MAIN鐨勬剰鍥捐繃婊ゅ櫒intent-filter鍜岀被鍒?android.intent.category.LAUNCHER錛夛紝閭d箞榪欎簨瀹炰笂灝嗕負鎮ㄧ殑.apk鍒涘緩涓涓換鍔★紝騫朵笖鎮ㄤ粠閭e効璧峰姩鐨勪換浣曟椿鍔ㄩ兘灝嗕綔涓?閭d釜浠誨姟鐨勪竴閮ㄥ垎榪愯銆?/p>
涓涓換鍔★紝閭d箞錛屼粠鐢ㄦ埛鐨勮搴︽潵鐪嬫槸鎮ㄧ殑搴旂敤紼嬪簭;鑰屼粠搴旂敤紼嬪簭寮鍙戣呯殑瑙掑害鏉ョ湅錛屽畠鏄竴涓垨澶氫釜鐢ㄦ埛鍦ㄩ偅涓換鍔′腑宸茬粡緇忓巻榪囦笖鏈叧闂殑媧誨姩錛屾垨鑰?璇存槸涓涓椿鍔ㄦ爤銆備竴涓柊鐨勪換鍔¢氳繃浠ntent.FLAG_ACTIVITY_NEW_TASK鏍囧織璧峰姩涓涓椿鍔ㄦ剰鍥炬潵鍒涘緩;榪欎竴鎰忓浘灝嗚鐢ㄦ潵浣滀負浠誨姟 鐨勬牴鎰忓浘錛屽畾涔変換鍔℃槸浠涔堛備換浣曚笉浠ヨ繖涓爣蹇楄搗鍔ㄧ殑媧誨姩灝嗗拰璧峰姩瀹冪殑媧誨姩鍦ㄧ浉鍚岀殑浠誨姟涓繍琛岋紙闄ら潪璇ユ椿鍔ㄥ凡璇鋒眰鐗瑰埆鍚姩妯″紡錛岀◢鍚庝細璁ㄨ錛夈備換鍔″彲浠ヨ閲?鏂板畨鎺掞細濡傛灉鎮ㄤ嬌鐢‵LAG_ACTIVITY_NEW_TASK鏍囧織浣嗗凡緇忔湁涓涓換鍔′互榪欎釜鎰忓浘榪愯錛屽垯褰撳墠浠誨姟鐨勬椿鍔ㄦ爤灝嗚鍒囨崲鍒板墠鍙拌屼笉鏄紑濮嬩竴涓?鏂扮殑浠誨姟銆?/p>
FLAG_ACTIVITY_NEW_TASK蹇呴』璋ㄦ厧浣跨敤錛氫嬌鐢ㄥ畠鎰忓懗鐫錛屽湪鐢ㄦ埛鐪嬫潵錛屼竴涓柊鐨勫簲鐢ㄧ▼搴忕敱姝よ搗鍔ㄣ傚鏋滆繖涓嶆槸浣犳墍鏈熸湜鐨勮涓猴紝浣?灝變笉璇ュ幓鍒涘緩涓涓柊鐨勪換鍔°傚彟澶栵紝浠呭湪鐢ㄦ埛鍙互浠庢闈㈣繑鍥炲埌浠栧師鏉ョ殑鍦版柟鍜屼互涓涓柊浠誨姟鍚姩鐩稿悓鎰忓浘鐨勬儏鍐典笅錛屼綘鎵嶅簲璇ヤ嬌鐢ㄦ柊鐨勪換鍔℃爣璁般傚惁鍒欙紝濡傛灉鐢ㄦ埛 鍦ㄤ綘宸茬粡鍚姩鐨勪換鍔¢噷鎸夋闈紙HOME錛夐敭錛岃屼笉鏄繑鍥烇紙BACK錛夐敭錛屼綘鐨勪換鍔″強鍏舵椿鍔ㄥ皢琚斁緗埌妗岄潰鍚庨潰錛屾病鏈夊姙娉曞啀鍒囨崲鍥炲幓銆?/p>
浠誨姟鍏辯敤鎬ffinity 鍦ㄦ煇浜涙儏鍐典笅錛孉ndroid闇瑕佺煡閬撲竴涓椿鍔ㄥ睘浜庡摢涓換鍔″嵆浣垮畠娌℃湁琚惎鍔ㄥ埌涓涓叿浣撶殑浠誨姟閲屻傝繖鏄氳繃浠誨姟鍏辯敤鎬э紙Affinities錛夊畬鎴?鐨勩備換鍔″叡鐢ㄦэ紙Affinities錛変負榪欎釜榪愯涓涓垨澶氫釜媧誨姩鐨勪換鍔℃彁渚涗簡涓涓嫭鐗圭殑闈欐佸悕縐幫紝榛樿鐨勪竴涓椿鍔ㄧ殑浠誨姟鍏辯敤鎬э紙Affinity錛夋槸瀹?鐜頒簡璇ユ椿鍔ㄧ殑.apk鍖呯殑鍚嶅瓧銆傝繖鎻愪緵浜嗛鏈熺殑鏍囧噯鐗規э紝鍗蟲墍鏈夊湪涓涓壒瀹氱殑.apk鍖呴噷鐨勬椿鍔ㄦ槸鍗曚釜鐢ㄦ埛搴旂敤紼嬪簭鐨勪竴閮ㄥ垎銆?/p>
褰撳紑濮嬩竴涓病鏈塈ntent.FLAG_ACTIVITY_NEW_TASK鏍囧織鐨勬椿鍔ㄦ椂錛屼換鍔″叡鐢ㄦffinities涓嶄細褰卞搷灝嗕細榪愯璇ユ柊媧?鍔ㄧ殑浠誨姟:瀹冩繪槸榪愯鍦ㄥ惎鍔ㄥ畠鐨勪換鍔¢噷銆備絾鏄紝濡傛灉浣跨敤浜哊EW_TASK鏍囧織錛岄偅涔堝叡鐢ㄦэ紙affinity錛夊皢琚敤鏉ュ垽鏂槸鍚﹀凡緇忓瓨鍦ㄤ竴涓湁鐩稿悓鍏辯敤 鎬э紙affinity錛夌殑浠誨姟銆傚鏋滄槸榪欐牱錛岃繖欏逛換鍔″皢琚垏鎹㈠埌鍓嶉潰鑰屾柊鐨勬椿鍔ㄤ細鍚姩浜庤繖涓換鍔$殑欏跺眰銆?/p>
榪欑鐗規у湪鎮ㄥ繀欏諱嬌鐢∟EW_TASK鏍囧織鐨勬儏鍐典笅鏈鏈夌敤錛屽挨鍏舵槸浠庣姸鎬佹爮閫氱煡鎴栨闈㈠揩鎹鋒柟寮忓惎鍔ㄦ椿鍔ㄦ椂銆傜粨鏋滄槸錛屽綋鐢ㄦ埛鐢ㄨ繖縐嶆柟寮忓惎鍔ㄦ偍鐨勫簲鐢ㄧ▼搴忔椂錛屽畠鐨勫綋鍓嶄換鍔″皢琚垏鎹㈠埌鍓嶅彴錛岃屼笖鎯寵鏌ョ湅鐨勬椿鍔ㄨ鏀懼湪鏈涓婇潰銆?/p>
浣犲彲浠ュ湪紼嬪簭娓呭崟錛圡anifest錛夋枃浠剁殑搴旂敤紼嬪簭application鏍囩涓負.apk鍖呬腑鎵鏈夌殑媧誨姩鍒嗛厤浣犺嚜宸辯殑浠誨姟鍏辯敤鎬ffinites錛屾垨鑰呭湪媧誨姩鏍囪涓負鍚勪釜媧誨姩榪涜鍒嗛厤銆備竴浜涜鏄庡叾濡備綍浣跨敤鐨勪緥瀛愬涓嬶細 濡傛灉鎮ㄧ殑.apk鍖呭惈澶氫釜鐢ㄦ埛鍙互鍚姩鐨勯珮灞傚簲鐢ㄧ▼搴忥紝閭d箞鎮ㄥ彲鑳介渶瑕佸鐢ㄦ埛鐪嬪埌鐨勬瘡涓椿鍔ㄦ寚瀹氫笉鍚岀殑affinities銆備竴涓笉閿欑殑鍛藉悕鎯緥鏄?浠ラ檮鍔犱竴涓互鍐掑彿鍒嗛殧鐨勫瓧絎︿覆鏉ユ墿灞曟偍鐨?apk鍖呭悕銆備緥濡傦紝“ com.android.contacts ”.apk鍙互鏈塧ffinities:“com.android.contacts錛欴ialer”鍜?#8220; com.android.contacts錛欳ontactsList”銆? 鎮ㄦ帶鍒舵椿鍔ㄥ拰浠誨姟浜や簰鐨勪富瑕侀斿緞鏄氳繃媧誨姩鐨刲aunchMode 灞炴у拰鎰忓浘鐩稿叧鐨勬爣蹇梖lags銆傝繖涓や釜鍙傛暟鍙互浠ュ悇縐嶆柟寮忓悎浣滄潵鎺у埗媧誨姩鍚姩鐨勭粨鏋滐紝姝e瀹冧滑鐩稿叧鏂囨。涓弿榪扮殑閭f牱銆傚湪榪欓噷錛屾垜浠皢鐪嬬湅涓浜涘父瑙佺殑鐢ㄤ緥鍜屽弬鏁扮粍鍚堛?/p>
浣犲皢浣跨敤鐨勬渶甯歌鐨勫惎鍔ㄦā寮忥紙闄や簡榛樿鐨剆tandard妯″紡錛夋槸singleTop銆傝繖騫朵笉褰卞搷浠誨姟;瀹冨彧鏄伩鍏嶅嬈″湪涓涓爢鏍堥《閮ㄨ搗鍔ㄥ悓涓媧誨姩銆?/p>
singleTask鍚姩妯″紡瀵逛換鍔℃湁閲嶅ぇ鐨勫獎鍝嶏細瀹冧嬌媧誨姩濮嬬粓鏄紑濮嬩簬涓欏規柊鐨勪換鍔★紙鎴栧叾鐜版湁鐨勪換鍔¤甯﹀埌鍓嶅彴錛?銆備嬌鐢ㄨ繖縐嶆ā寮忛渶瑕佽皚鎱庡寰呬綘濡備綍涓庣郴緇熷叾浠栭儴鍒嗚繘琛屼氦浜掞紝鍥犱負榪欏獎鍝嶅埌榪欎釜媧誨姩涓殑姣忎竴涓礬寰勩傚畠搴斿綋浠呭湪媧誨姩澶勪簬搴旂敤紼嬪簭鍓嶅彴鏃朵嬌鐢紙涔熷氨鏄敮鎸?MAIN鍔ㄤ綔鍜孡AUNCHER綾誨埆錛夈?/p>
singleInstance鍚姩妯″紡鏇存槸涓撲笟錛屽茍搴斾粎鐢ㄤ簬鏁翠釜灝辨槸琚疄鐜頒負涓涓椿鍔ㄧ殑搴旂敤紼嬪簭涓?/p>
鏈変竴縐嶄綘浼氱粡甯擱亣鍒扮殑鎯呭喌鏄綋鍙︿竴涓疄浣擄紙濡係earchManager 鎴朜otificationManager錛夊紑濮嬫偍鐨勪竴涓椿鍔ㄣ傚湪榪欑鎯呭喌涓嬶紝蹇呴』浣跨敤Intent.FLAG_ACTIVITY_NEW_TASK 鏍囩錛屽洜涓鴻欏規椿鍔ㄦ槸鍦ㄤ換鍔′箣澶栬搗鍔ㄧ殑錛堣屼笖搴旂敤/浠誨姟鍙兘鏍規湰涓嶅瓨鍦級銆傛濡傚墠闈㈡墍榪幫紝榪欑鎯呭喌涓嬬殑鏍囧噯琛屼負鏄妸鍖歸厤鏂版椿鍔╝ffinity鐨勪換鍔″甫鍒?鍓嶅彴鍜屽湪姝や箣涓婅搗鍔ㄦ柊鐨勬椿鍔ㄣ備笉榪囷紝涔熸湁鍏朵粬鎮ㄥ彲浠ュ疄鏂界殑琛屼負綾誨瀷銆?/p>
鍏朵腑涓縐嶅父瑙佺殑鍋氭硶鏄紝榪樺彲浠ヤ嬌鐢↖ntent.FLAG_ACTIVITY_CLEAR_TOP 鍥芥棗涓嶯EW_TASK 銆傞氳繃榪欐牱鍋氾紝濡傛灉浣犵殑浠誨姟宸茬粡榪愯錛岄偅涔堝皢鎻愯鍓嶆櫙錛屾墍鏈夌殑媧誨姩錛屽叾鍫嗘爤娓呴櫎闄ゆ牴緋繪椿鍔涘拰鏍圭郴媧誨姏鐨刼nNewIntent 錛堟剰鍥撅級 鎵璋撶殑鎰忓浘姝e湪寮濮嬨傝娉ㄦ剰錛岃媧誨姩榪樺父甯鎬嬌鐢╯ingleTop 鎴杝ingleTask 鍙戝皠妯″紡鏃訛紝浣跨敤榪欑鏂規硶錛屽洜姝わ紝鐩墠鐨勬儏鍐墊槸鐢變簬鏂扮殑鎰忓浘鑰屼笉闇瑕佸皢瀹冩懅姣侊紝涓涓柊鐨勫疄渚嬪紑濮嬨?/p>
涓縐嶉氬父鐨勫姙娉曟槸鍜孨EW_TASK鑱斿悎璧鋒潵浣跨敤Intent.FLAG_ACTIVITY_CLEAR_TOP鏍囧織銆傝繖鏍鳳紝濡傛灉鎮ㄧ殑浠誨姟宸茬粡榪?琛岋紝閭d箞瀹冨皢浼氳甯﹀埌鍓嶅彴錛岄櫎鏍規椿鍔ㄥ鍏跺畠鎵鏈夊爢鏍堜腑鐨勬椿鍔ㄩ兘琚竻闄わ紝鑰屼笖榪欎釜鏍規椿鍔ㄧ殑鏂規硶onNewIntent(Intent)浼氬湪璇ユ剰鍥捐搗鍔ㄦ椂琚皟 鐢ㄣ傛敞鎰忚繖涓椿鍔ㄤ嬌鐢ㄨ繖涓柟娉曟椂緇忓父浣跨敤singleTop鎴栬卻ingleTask璧峰姩妯″紡錛岃繖鏍峰綋鍓嶅疄渚嬭璧嬩簣鏂扮殑鎰忓浘鑰屼笉鏄渶瑕侀攢姣佸畠鐒跺悗閲嶆柊璧峰姩 涓涓柊鐨勫疄渚嬨?/p>
鎮ㄨ兘閲囧彇鐨勫彟澶栫殑鏂規硶鏄緗氱煡媧誨姩鐨勪換鍔ffinity涓虹┖瀛楃涓?#8220;”錛堣〃紺烘病鏈塧ffinity錛夛紝騫惰緗?finishOnBackground灞炴с傝繖縐嶆柟娉曟槸鏈夌敤鐨勫鏋滀綘甯屾湜榪欎釜閫氱煡鎶婄敤鎴峰甫鍒頒竴涓崟鐙殑鎻忚堪瀹冪殑媧誨姩涓紝鑰屼笉鏄繑鍥炲埌搴旂敤紼嬪簭鐨勪換鍔°傞氳繃 鎸囧畾榪欎釜灞炴э紝璇ユ椿鍔ㄥ皢琚粨鏉熶笉綆$敤鎴烽氳繃BACK榪樻槸HOME紱誨紑瀹?濡傛灉榪欎釜灞炴ф病鏈夋寚瀹氾紝鎸夐欏靛皢瀵艱嚧榪欎釜媧誨姩鍙婂叾浠誨姟浠嶄繚鐣欏湪緋葷粺閲岋紝涓斿彲鑳芥病鏈?鍔炴硶榪斿洖瀹冦?/p>
璇峰姟蹇呴槄璇誨叧浜巐aunchMode灞炴у拰Intent鏍囧織鐨勬枃妗d互鑾峰彇榪欎簺閫夐」鐨勮緇嗚鏄庛?/p>
榪涚▼ 鍦ˋndroid閲岋紝榪涚▼瀹屽叏鏄簲鐢ㄧ殑瀹炵幇緇嗚妭錛岃屼笉鏄敤鎴烽氬父浜嗚В鐨勯偅鏍楓傚叾涓昏鐢ㄩ斿氨鏄細 閫氳繃瀹夌疆涓嶅彈淇′換鐨勬垨涓嶇ǔ瀹氱殑浠g爜鍒板彟涓涓繘紼嬫潵鎻愰珮紼沖畾鎬ф垨瀹夊叏鎬с? 鍙傝瀹夊叏 鏂囨。浠ヨ幏鍙栨洿澶氬叧浜庡畨鍏ㄩ檺鍒舵柟闈㈢殑淇℃伅銆?/p>
Android鐩稿叧鍐呭:
綰跨▼ 姣忎釜榪涚▼鍖呭惈涓涓垨澶氫釜綰跨▼銆傚鏁版儏鍐典笅錛孉ndroid閬垮厤鍦ㄨ繘紼嬮噷鍒涘緩棰濆鐨勭嚎紼嬶紝浠ヤ繚鎸佸簲鐢ㄧ▼搴忓崟綰跨▼錛岄櫎闈炲畠鍒涘緩鑷繁鐨勭嚎紼嬨備竴涓噸瑕佺殑緇?鏋滃氨鏄墍鏈夊媧誨姩Activity錛屽箍鎾帴鏀跺櫒BroadcastReceiver浠ュ強鏈嶅姟Service瀹炰緥鐨勮皟鐢ㄩ兘鏄敱榪欎釜榪涚▼鐨勪富綰跨▼鍒涘緩鐨勩?/p>
娉ㄦ剰鏂扮殑綰跨▼騫朵笉浼氫負姣忎釜媧誨姩錛屽箍鎾帴鏀跺櫒錛屾湇鍔℃垨鑰呭唴瀹規彁渚涘櫒錛圕ontentProvider錛夊疄渚嬭屽垱寤猴細榪欎簺搴旂敤紼嬪簭鐨勭粍浠跺湪榪涚▼閲岃瀹炰緥 鍖栵紙闄ら潪鍙︽湁璇存槑錛岄兘鍦ㄥ悓涓涓繘紼嬪鐞嗭級錛屽疄闄呬笂鏄繘紼嬬殑涓葷嚎紼嬨傝繖璇存槑褰撹緋葷粺璋冪敤鏃舵病鏈夊摢涓粍浠訛紙鍖呮嫭鏈嶅姟錛変細榪涜榪滅▼鎴栬呴樆濉炴搷浣滐紙灝卞儚緗戠粶璋冪敤鎴?鑰呰綆楀驚鐜級錛屽洜涓鴻繖灝嗛樆姝㈣繘紼嬩腑鐨勬墍鏈夊叾浠栫粍浠躲備綘鍙互浣跨敤鏍囧噯鐨勭嚎紼嬬被Thread鎴栬匒ndroid鐨凥andlerThread渚挎嵎綾誨幓瀵瑰叾瀹冪嚎 紼嬫墽琛岃繙紼嬫搷浣溿?/p>
榪欓噷鏈変竴浜涘叧浜庤繖涓嚎紼嬭鍒欑殑閲嶈鐨勪緥澶栵細 銉?瀵笽Binder鎴栬匢Binder瀹炵幇鐨勬帴鍙g殑璋冪敤鐢辮皟鐢ㄧ嚎紼嬫垨鏈湴榪涚▼鐨勭嚎紼嬫睜錛堝鏋滆鍛煎彨鏉ヨ嚜鍏朵粬榪涚▼錛夊垎鍙戯紝鑰屼笉鏄畠浠殑榪涚▼鐨勪富綰跨▼銆傜壒孌婃儏鍐?涓嬶紝涓涓湇鍔$殑IBinder鍙互榪欐牱璋冪敤銆傦紙灝界璋冪敤鏈嶅姟閲岀殑鏂規硶宸茬粡鍦ㄤ富綰跨▼閲屽畬鎴愩傦級榪欐剰鍛崇潃IBinder鎺ュ彛鐨勫疄鐜板繀欏昏鏈変竴縐嶇嚎紼嬪畨鍏ㄧ殑鏂?娉曪紝榪欐牱浠繪剰綰跨▼鎵嶈兘鍚屾椂璁塊棶瀹冦?br />
銉?瀵笴ontentProvider涓昏鏂規硶鐨勮皟鐢ㄧ敱璋冪敤綰跨▼鎴栬呬富綰跨▼鍒嗗彂,濡傚悓IBinder涓鏍楓傝鎸囧畾鐨勬柟娉曞湪鍐呭鎻愪緵鍣ㄧ殑綾婚噷鏈夎褰曘傝繖鎰忓懗鐫瀹炵幇榪欎簺鏂規硶蹇呴』瑕佹湁涓縐嶇嚎紼嬪畨鍏ㄧ殑妯″紡錛岃繖鏍蜂換鎰忓叾瀹冪嚎紼嬪彲浠ュ悓鏃惰闂畠銆?br />
銉?瑙嗗浘鍙婂叾瀛愮被涓殑璋冪敤鐢辨鍦ㄨ繍琛岀潃瑙嗗浘鐨勭嚎紼嬩駭鐢熴傞氬父鎯呭喌涓嬶紝榪欎細琚綔涓鴻繘紼嬬殑涓葷嚎紼嬶紝濡傛灉浣犲垱寤轟竴涓嚎紼嬪茍鏄劇ず涓涓獥鍙o紝閭d箞緇ф壙鐨勭獥鍙h鍥懼皢浠庨偅涓嚎紼嬮噷鍚姩銆?/p>
鐪嬩笅閿欒鎻忚堪錛屾槸 緙哄け榪欎袱涓紩鐢紝鍛靛懙錛屾槑鐧戒簡錛屽鍏ョ數璇濈紪璇戠敓鎴愮殑Jar鍖? out\target\common\obj\APPS\Phone_intermediates\classes.jar
03 intent.setType("image/*");
04 intent.putExtra("crop", "true");
05 intent.putExtra("aspectX", 1);
06 intent.putExtra("aspectY", 1);
07 intent.putExtra("outputX", 1000);
08 intent.putExtra("outputY", 1000錛?
09 intent.putExtra("scale", true);
10 intent.putExtra("return-data", false);
11 intent.putExtra(MediaStore.EXTRA_OUTPUT, getTempUri());
12 intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());
13 intent.putExtra("noFaceDetection", true);
14 startActivityForResult(intent, PHOTORESOULT);
15
16 //閫夋嫨瀛樺偍浣嶇疆
17 Uri tempPhotoUri;
18
19 private Uri getTempUri() {
20 Uri tempPhotoUri = Uri.fromFile(getTempFile());
21 return tempPhotoUri;
22 }
23
24 private File getTempFile() {
25 if (isSDCARDMounted()) {
26
27 File f = new File(Environment.getExternalStorageDirectory(),"temp.jpg");
28 try {
29 f.createNewFile();
30 } catch (IOException e) {
31 ...
32 }
33 return f;
34 }
35 return null;
36 }
37
38 // 娉ㄦ剰錛屽湪鎴戝仛鐨勬祴璇曚腑錛屼嬌鐢ㄥ唴閮ㄧ紦瀛樻槸鏃犳硶姝g‘鍐欏叆瑁佸垏鍚庣殑鍥劇墖鐨勩傝澶у鏈夊叴瓚g殑嫻嬭瘯涓鐣紝鐪嬫槸鍚︽湁鎰忓銆?br />
39 // 緋葷粺鏄敤鍏ㄥ眬鐨凜ontentResolver鏉ュ仛榪欎釜榪囩▼鐨勬枃浠秈o鎿嶄綔錛宎pp鍐呴儴鐨勫瓨鍌ㄨ蹇界暐銆傦紙鐚滄祴錛?br />
40 /*
41 File f = new File(getCacheDir(), "temp.jpg");
42 try {
43 f.createNewFile();
44 } catch (IOException e) {
45 ...
46 }
47 return f;
48 }
49 */
50
51 private boolean isSDCARDMounted(){
52 String status = Environment.getExternalStorageState();
53
54 if (status.equals(Environment.MEDIA_MOUNTED)){
55 return true;
56 }
57 return false;
58 }
59
60 // 澶勭悊緇撴灉
61 //
62 Bitmap bitmap = null;
63 try {
64 bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(tempPhotoUri));
65 } catch (FileNotFoundException e) {
66 e.printStackTrace();
67 }
Android鐩稿叧鍐呭:
]]>
涓涓換鍔′竴鑸岃█鏄寚鐢ㄦ埛瑙嗕負鐨勪竴涓彲鍚姩搴旂敤紼嬪簭錛氶氬父浠誨姟鍦ㄦ闈紙home screen錛夋湁涓涓彲璁塊棶鐨勫浘鏍囷紝涓斿彲浠ヨ鍒囨崲鍒板墠鍙般?
涓涓繘紼嬫槸涓涓繍琛岀潃搴旂敤紼嬪簭浠g爜鐨勫簳灞傛牳蹇冭繃紼嬨傞氬父鎵鏈?apk閲岀殑浠g爜榪愯鍦ㄤ竴涓笓鏈夌殑榪涚▼閲屻備笉榪囷紝榪涚▼鏍囪涔熷彲浠ョ敤鏉ラ檺瀹氫唬鐮佽繍琛屼綅緗紝鎴栬呬負鏁翠釜.apk鎴栬呬負涓埆鐨勬椿鍔╝ctivity錛屾帴鏀惰卹eceiver錛屾湇鍔℃垨鎻愪緵鑰卲rovider錛岀粍浠躲?
浠誨姟
濡傛灉鎮ㄦ鍦ㄦ浛鎹竴涓氱煡錛屽揩鎹鋒柟寮忥紝鎴栧叾浠栧彲浠ヤ粠澶栭儴鍙戣搗鐨勫簲鐢ㄧ▼搴?鐨?#8220;鍐呴儴”媧誨姩錛屼綘鍙兘闇瑕佹槑紜瀹氭偍鏇夸唬媧誨姩鐨則askAffinity鍜屾偍鍑嗗鏇夸唬鐨勫簲鐢ㄧ▼搴忎竴鏍楓備緥濡傦紝濡傛灉鎮ㄦ兂鏇挎崲contacts璇︾粏淇℃伅瑙嗗浘 錛堢敤鎴峰彲浠ュ垱寤哄茍璋冪敤蹇嵎鏂瑰紡錛夛紝浣犲緱鎶妕askAffinity璁劇疆鎴?#8220;com.android.contacts”銆?
鍚姩妯″紡鍜屽惎鍔ㄦ爣蹇?/p>
閫氳繃鍦ㄥ悓涓榪涚▼閲岃繍琛屽涓?apks鐨勪唬鐮佹潵鍑忓皯寮閿銆?
閫氳繃鎶婇噸閲忕駭浠g爜鏀懼湪鍗曠嫭鐨勮繘紼嬩腑鏉ュ府鍔╃郴緇熺鐞嗚祫婧愶紝璇ヨ繘紼嬪彲浠ュ湪涓嶅獎鍝嶅簲鐢ㄧ▼搴忓叾浠栭儴鍒嗙殑鎯呭喌涓嬭緇堟銆?
姝e鍓嶉潰鎵榪幫紝榪欎釜榪涚▼灞炴х敤鏉ユ帶鍒惰繍琛岀潃鐗瑰畾搴旂敤紼嬪簭緇勪歡鐨勮繘紼嬶紝娉ㄦ剰錛屾灞炴т笉鑳界敤浜庤繚鍙嶇郴緇熷畨鍏ㄦэ細濡傛灉鏈変袱涓笉鍏變韓鐩稿悓鐢ㄦ埛ID鐨?apks灝濊瘯榪愯鍦ㄥ悓涓榪涚▼涓紝榪欏皢涓嶄細琚厑璁革紝鐩稿弽浼氫負瀹冧滑姣忎竴涓垱寤轟笉鍚岀殑榪涚▼銆?/p>
棣栧厛鑾峰彇緗戠粶閫氳綾葷殑瀹炰緥
ConnectivityManager cwjManager=(ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 錛?br />
浣跨敤cwjManager.getActiveNetworkInfo().isAvailable(); 鏉ヨ繑鍥炴槸鍚︽湁鏁堬紝濡傛灉涓篢rue鍒欒〃紺哄綋鍓岮ndroid鎵嬫満宸茬粡鑱旂綉錛屽彲鑳芥槸WiFi鎴朑PRS銆丠SDPA絳夌瓑錛?br />
鍏蜂綋鐨勫彲浠ラ氳繃ConnectivityManager 綾葷殑getActiveNetworkInfo() 鏂規硶鍒ゆ柇璇︾粏鐨勬帴鍏ユ柟寮忥紝
闇瑕佹敞鎰忕殑鏄湁鍏寵皟鐢ㄩ渶瑕佸姞鍏?br />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> 榪欎釜鏉冮檺錛?br />
]]>
鎸夌収涓婇潰甯栧瓙鐨勬弿榪幫紝鏂板User Library鍚庯紝鏁翠釜宸ョ▼鍙墿涓嬫嫧鍙風洏欏甸潰榪樻湁15涓敊璇紱
import com.android.phone.CallLogAsync;
import com.android.phone.HapticFeedback;
Eclipse鐩稿叧鍐呭:
]]>
鍦板潃錛歨ttp://subclipse.tigris.org/servlets/ProjectDocumentList?folderID=2240 榪欓噷鏈夊緢澶氱増鏈紝璇瘋嚜宸遍夋嫨鍚堥傜殑錛?br />
浜屻佽В鍘嬶紝鍒犻櫎瑙e帇鍚庡緱鍒扮殑鏂囦歡涓櫎浜嗗悕鍙玣eatures鍜宲lugins鐨勪袱涓枃浠跺す浠ュ鐨勫叾浠栨墍鏈夋枃浠躲?br />
涓夈佸湪MyEclipse10.0鐨勫畨瑁呯洰褰曚腑鑷繁鏂板緩涓涓枃浠跺す錛堟垜鐨勫彨MyPlugins錛夌劧鍚庢妸瑙e帇騫跺垹闄よ繃鏂囦歡鍚庡緱鍒扮殑閭d釜SVN鏂囦歡澶?澶嶅埗鍒拌鐩綍錛?br />
鍥涖佸湪MyEclipse10.0鐨勫畨瑁呯洰褰曚笅鐨刣ropins鏂囦歡澶逛腑寤虹珛涓涓枃鏈枃浠訛紝鍐呭杈損ath=浣犵殑svn璺緞錛岋紙鎴戠殑鏄痯ath=E:\\MyEclipse\\MyEclipse 10\\MyPlugins\\SVN-1.8.3錛夛紝鐒跺悗淇濆瓨錛屼繚瀛樺悗灝嗚鏂囦歡鍚嶉噸鍛藉悕鎴怱VN.lnk(璁頒綇鎵╁睍鍚嶆槸鏄?lnk涓嶆槸緗戜笂鏈夌綉鍙嬭鐨刲ink).
浜斻佹帴涓嬫潵鍒犻櫎 MyEclipse10.0鐨勫畨瑁呯洰褰曚笅configuration鏂囦歡澶逛腑鐨刼rg.eclipse.update鏂囦歡澶廣?br />
鍏侀噸鍚紞銆塐K銆?br />
]]>
//file: lunarday.h
//author: cuichaox@gmail.com
//2007-02-13 11:22:04
#ifndef LUANR_CALENDAR_H
#define LUANR_CALENDAR_H
namespace lunar
{
//淇濆瓨涓涓啘鍘嗘棩鏈?br />
typedef struct T_Date
{
//騫?br />
int year;
//鏈?br />
int month;
//鏃?br />
int day;
//鏄惁闂版湀
bool leap;
} Date;
//鍏巻杞啘鍘?br />
Date LuanrDate(int solar_year,int solar_month,int solar_day);
}
//file: lunarday.cpp
//author: cuichao@gmail.com
//2007-02-13 11:22:48
#include "lunarday.h"
#include <ctime>
#include <cassert>
#include <cstring>
#include <iostream>
using namespace std;
using lunar::Date;
//浣跨敤姣旂壒浣嶈褰曟瘡騫寸殑鎯呭喌
//0~4 鍏?bit 鏄ヨ妭鏃ヤ喚
//5~6 鍏?bit 鏄ヨ妭鏈堜喚
//7~19 鍏?3bit 13涓湀鐨勫ぇ灝忔湀鎯呭喌(濡傛灉鏃犻棸鏈堬紝鏈鍚庝綅鏃犳晥)錛屽ぇ鏈堜負1,灝忔湀涓?
//20~23 鍏?bit 璁板綍闂版湀鐨勬湀浠斤紝濡傛灉娌℃湁闂版湀涓?
static const int BEGIN_YEAR = 1901;
static const int NUMBER_YEAR = 199;
static const unsigned int LUNAR_YEARS[199] = {
0x04AE53,0x0A5748,0x5526BD,0x0D2650,0x0D9544,
0x46AAB9,0x056A4D,0x09AD42,0x24AEB6,0x04AE4A, //1901-1910
0x6A4DBE,0x0A4D52,0x0D2546,0x5D52BA,0x0B544E,
0x0D6A43,0x296D37,0x095B4B,0x749BC1,0x049754, //1911-1920
0x0A4B48,0x5B25BC,0x06A550,0x06D445,0x4ADAB8,
0x02B64D,0x095742,0x2497B7,0x04974A,0x664B3E, //1921-1930
0x0D4A51,0x0EA546,0x56D4BA,0x05AD4E,0x02B644,
0x393738,0x092E4B,0x7C96BF,0x0C9553,0x0D4A48, //1931-1940
0x6DA53B,0x0B554F,0x056A45,0x4AADB9,0x025D4D,
0x092D42,0x2C95B6,0x0A954A,0x7B4ABD,0x06CA51, //1941-1950
0x0B5546,0x555ABB,0x04DA4E,0x0A5B43,0x352BB8,
0x052B4C,0x8A953F,0x0E9552,0x06AA48,0x7AD53C, //1951-1960
0x0AB54F,0x04B645,0x4A5739,0x0A574D,0x052642,
0x3E9335,0x0D9549,0x75AABE,0x056A51,0x096D46, //1961-1970
0x54AEBB,0x04AD4F,0x0A4D43,0x4D26B7,0x0D254B,
0x8D52BF,0x0B5452,0x0B6A47,0x696D3C,0x095B50, //1971-1980
0x049B45,0x4A4BB9,0x0A4B4D,0xAB25C2,0x06A554,
0x06D449,0x6ADA3D,0x0AB651,0x093746,0x5497BB, //1981-1990
0x04974F,0x064B44,0x36A537,0x0EA54A,0x86B2BF,
0x05AC53,0x0AB647,0x5936BC,0x092E50,0x0C9645, //1991-2000
0x4D4AB8,0x0D4A4C,0x0DA541,0x25AAB6,0x056A49,
0x7AADBD,0x025D52,0x092D47,0x5C95BA,0x0A954E, //2001-2010
0x0B4A43,0x4B5537,0x0AD54A,0x955ABF,0x04BA53,
0x0A5B48,0x652BBC,0x052B50,0x0A9345,0x474AB9, //2011-2020
0x06AA4C,0x0AD541,0x24DAB6,0x04B64A,0x69573D,
0x0A4E51,0x0D2646,0x5E933A,0x0D534D,0x05AA43, //2021-2030
0x36B537,0x096D4B,0xB4AEBF,0x04AD53,0x0A4D48,
0x6D25BC,0x0D254F,0x0D5244,0x5DAA38,0x0B5A4C, //2031-2040
0x056D41,0x24ADB6,0x049B4A,0x7A4BBE,0x0A4B51,
0x0AA546,0x5B52BA,0x06D24E,0x0ADA42,0x355B37, //2041-2050
0x09374B,0x8497C1,0x049753,0x064B48,0x66A53C,
0x0EA54F,0x06B244,0x4AB638,0x0AAE4C,0x092E42, //2051-2060
0x3C9735,0x0C9649,0x7D4ABD,0x0D4A51,0x0DA545,
0x55AABA,0x056A4E,0x0A6D43,0x452EB7,0x052D4B, //2061-2070
0x8A95BF,0x0A9553,0x0B4A47,0x6B553B,0x0AD54F,
0x055A45,0x4A5D38,0x0A5B4C,0x052B42,0x3A93B6, //2071-2080
0x069349,0x7729BD,0x06AA51,0x0AD546,0x54DABA,
0x04B64E,0x0A5743,0x452738,0x0D264A,0x8E933E, //2081-2090
0x0D5252,0x0DAA47,0x66B53B,0x056D4F,0x04AE45,
0x4A4EB9,0x0A4D4C,0x0D1541,0x2D92B5 //2091-2099
};
//璁$畻榪欎釜鍏巻鏃ユ湡鏄竴騫翠腑鐨勭鍑犲ぉ
static int DayOfSolarYear(int year, int month, int day )
{
//涓轟簡鎻愰珮鏁堢巼錛岃褰曟瘡鏈堜竴鏃ユ槸涓騫翠腑鐨勭鍑犲ぉ
static const int NORMAL_YDAY[12] = {1,32,60,91,121,152,
182,213,244,274,305,335};
//闂板勾鐨勬儏鍐?br />
static const int LEAP_YDAY[12] = {1,32,61,92,122,153,
183,214,245,275,306,336};
const int *t_year_yday_ = NORMAL_YDAY;
//鍒ゆ柇鏄惁鏄叕鍘嗛棸騫?br />
if( year % 4 ==0 )
{
if(year%100 != 0)
t_year_yday_ = LEAP_YDAY;
if(year%400 == 0)
t_year_yday_ = LEAP_YDAY;
}
return t_year_yday_[month -1] + (day -1);
}
Date lunar::LuanrDate(int solar_year,int solar_month,int solar_day)
{
Date luanr_date ;
luanr_date.year = solar_year;
luanr_date.month = 0;
luanr_date.day = 0;
luanr_date.leap = false;
//瓚婄晫媯鏌ワ紝濡傛灉瓚婄晫錛岃繑鍥炴棤鏁堟棩鏈?br />
if(solar_year <= BEGIN_YEAR || solar_year > BEGIN_YEAR + NUMBER_YEAR - 1 )
return luanr_date;
int year_index = solar_year - BEGIN_YEAR;
//璁$畻鏄ヨ妭鐨勫叕鍘嗘棩鏈?br />
int spring_ny_month = ( LUNAR_YEARS[year_index] & 0x60 ) >> 5;
int spring_ny_day = ( LUNAR_YEARS[year_index] & 0x1f);
//璁$畻浠婂ぉ鏄叕鍘嗗勾鐨勭鍑犲ぉ
int today_solar_yd = DayOfSolarYear(solar_year,solar_month,solar_day);
//璁$畻鏄ヨ妭鏄叕鍘嗗勾鐨勭鍑犲ぉ
int spring_ny_yd = DayOfSolarYear(solar_year,spring_ny_month,spring_ny_day);
//璁$畻浠婂ぉ鏄啘鍘嗗勾鐨勭鍑犲ぉ
int today_luanr_yd = today_solar_yd - spring_ny_yd + 1;
//濡傛灉浠婂ぉ鍦ㄦ槬鑺傜殑鍓嶉潰錛岄噸鏂拌綆梩oday_luanr_yd
if ( today_luanr_yd < 0)
{
//鍐滃巻騫存瘮褰撳墠鍏巻騫村皬1
year_index --;
luanr_date.year --;
//瓚婄晫錛岃繑鍥炴棤鏁堟棩鏈?br />
if(year_index <0)
return luanr_date;
spring_ny_month = ( LUNAR_YEARS[year_index] & 0x60 ) >> 5;
spring_ny_day = ( LUNAR_YEARS[year_index] & 0x1f);
spring_ny_yd = DayOfSolarYear(solar_year,spring_ny_month,spring_ny_day);
int year_total_day = DayOfSolarYear(luanr_date.year,12,31);
today_luanr_yd = today_solar_yd + year_total_day - spring_ny_yd + 1;
}
int luanr_month = 1;
//璁$畻鏈堜喚鍜屾棩鏈?br />
for(;luanr_month<=13;luanr_month++)
{
int month_day = 29;
if( (LUNAR_YEARS[year_index] >> (6 + luanr_month)) & 0x1 )
month_day = 30;
if( today_luanr_yd <= month_day )
break;
else
today_luanr_yd -= month_day;
}
luanr_date.day = today_luanr_yd;
//澶勭悊闂版湀
int leap_month = (LUNAR_YEARS[year_index] >>20) & 0xf;
if(leap_month > 0 && leap_month < luanr_month )
{
luanr_month --;
//濡傛灉褰撳墠鏈堜負闂版湀錛岃緗棸鏈堟爣蹇?br />
if( luanr_month == leap_month )
luanr_date.leap = true;
}
assert(leap_month <= 12);
luanr_date.month = luanr_month;
return luanr_date;
}
嫻嬭瘯涓誨嚱鏁幫紝鎵撳嵃褰撳墠鍐滃巻鏃ユ湡
//file: chdate.cpp
//author: cuichaox@gmail.com
//2007-02-13 11:21:45
#include <iostream>
#include <ctime>
#include "lunarday.h"
int main(int argc, char *argv[])
{
using namespace std;
using namespace lunar;
time_t current_time;
time(¤t_time);
tm *current_tm = localtime(¤t_time);
int year = current_tm->tm_year + 1900;
int month = current_tm->tm_mon +1;
int day = current_tm->tm_mday;
Date lunar_date = LuanrDate(year,month,day);
cout<<lunar_date.year<<"騫?;
if(lunar_date.leap)
cout<<"闂?;
cout<<lunar_date.month<<"鏈?;
cout<<lunar_date.day<<"鏃?;
cout<<endl;
return 0;
}
Makefile鏂囦歡錛屽涓?br />#makefile for chdate
CPP = g++
LD = g++
CC_FLAG =
LD_FLAG =
FILE_LIST = lunarday.cpp chdate.cpp
OBJ_LIST = $(FILE_LIST:%.cpp=%.o)
BIN = chdate
default: $(BIN)
$(BIN): $(OBJ_LIST)
$(LD) $(LD_FLAG) -o $(BIN) $(OBJ_LIST)
%.o : %.cpp
@$(CPP) $(CC_FLAG) -c $< -o $@
clean:
rm $(OBJ_LIST) $(BIN)
鎵ц鏁堟灉濡備笅
sideleft@doom:~/workspace/luanrday$ ./chdate
2006騫?2鏈?6鏃?/div>
]]>
Pre-processor commands
Operator Precedence
Escape Sequences
ASCII Chart
Data Types
Keywords
Standard C Library
Standard C I/O
Standard C String & Character
Standard C Math
Standard C Time & Date
Standard C Memory
Other standard C functions
All C Functions
C++
C++ I/O
C++ Strings
Miscellaneous C++
C++ Standard Template Library
C++ Algorithms
C++ Vectors
C++ Double-Ended Queues
C++ Lists
C++ Priority Queues
C++ Queues
C++ Stacks
C++ Sets
C++ Multisets
C++ Maps
C++ Multimaps
C++ Bitsets
]]>