锘??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲美女尤物影院,亚洲国产精品第一区二区,国产精品资源http://m.shnenglu.com/AutomateProgram/archive/2010/09/13/126503.html婕傛紓婕傛紓Mon, 13 Sep 2010 07:05:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/09/13/126503.htmlhttp://m.shnenglu.com/AutomateProgram/comments/126503.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/09/13/126503.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/126503.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/126503.html鍘熸枃鍦板潃錛?a >http://blog.csdn.net/liranke/archive/2009/10/24/4721954.aspx

ADB鍏ㄧОAndroid Debug Bridge, 鏄痑ndroid sdk閲岀殑涓涓伐鍏? 鐢ㄨ繖涓伐鍏峰彲浠ョ洿鎺ユ搷浣滅鐞哸ndroid妯℃嫙鍣ㄦ垨鑰呯湡瀹炵殑andriod璁懼(濡侴1鎵嬫満).

瀹冪殑涓昏鍔熻兘鏈?

 

•榪愯璁懼鐨剆hell(鍛戒護琛?
•綆$悊妯℃嫙鍣ㄦ垨璁懼鐨勭鍙f槧灝?
•璁$畻鏈哄拰璁懼涔嬮棿涓婁紶/涓嬭澆鏂囦歡
•灝嗘湰鍦癮pk杞歡瀹夎鑷蟲ā鎷熷櫒鎴朼ndroid璁懼


ADB鏄竴涓?瀹㈡埛绔?鏈嶅姟鍣ㄧ 紼嬪簭, 鍏朵腑瀹㈡埛绔槸浣犵敤鏉ユ搷浣滅殑鐢佃剳, 鏈嶅姟鍣ㄧ鏄痑ndroid璁懼.

鍏堣瀹夎鏂規硶, 鐢佃剳涓婇渶瑕佸畨瑁呭鎴風. 瀹㈡埛绔寘鍚湪sdk閲? 璁懼涓婁笉闇瑕佸畨瑁? 鍙渶瑕佸湪鎵嬫満涓婃墦寮閫夐」settings-applications-development-USB debugging.

瀵逛簬Mac鍜孡inux鐢ㄦ埛, 涓嬭澆濂界殑sdk瑙e帇鍚? 鍙互鏀緙鎴栬呬換鎰忕洰褰? 鐒跺悗淇敼~/.bash_profile鏂囦歡, 璁劇疆榪愯鐜鎸囧悜sdk鐨則ools鐩綍.
鍏蜂綋鏄墦寮~/.bash_profile鏂囦歡(濡傛灉娌℃湁姝ゆ枃浠朵篃鍙互鑷娣誨姞), 鍦ㄩ噷闈㈠姞鍏ヤ竴琛?

export PATH=${PATH}:<浣犵殑sdk鐩綍>/tools

渚嬪錛?/p>

 

鐒跺悗灝卞彲浠ヤ嬌鐢╝db鍛戒護浜?

瀚屽畨瑁呴夯鐑︾殑鍚屽鍏跺疄涔熷彲浠ョ渷鍘諱笂闈㈠畨瑁呮楠? 鐩存帴杈撳叆瀹屾暣璺緞鏉ヤ嬌鐢ㄥ懡浠? 渚嬪:

 

瀵逛簬windows xp鐢ㄦ埛, 闇瑕佸厛瀹夎usb椹卞姩, 鐒跺悗濡傛灉浣犲彧鎵撶畻浣跨敤adb鑰屼笉鎯充笅杞芥暣涓猻dk鐨勮瘽, 鍙互涓嬭澆榪欎釜鍗曠嫭鐨刟db宸ュ叿鍖?涓嬭澆鍚庤В鍘? 鎶婇噷闈?adb.exe 鍜?AdbWinApi.dll 涓や釜鏂囦歡鏀懼埌緋葷粺鐩樼殑 windows/system32 鏂囦歡澶歸噷灝卞彲浠ヤ簡.

 鐜板湪璇翠笅ADB甯哥敤鐨勫嚑涓懡浠?br>1. 鏌ョ湅璁懼

•adb devices
榪欎釜鍛戒護鏄煡鐪嬪綋鍓嶈繛鎺ョ殑璁懼, 榪炴帴鍒拌綆楁満鐨刟ndroid璁懼鎴栬呮ā鎷熷櫒灝嗕細鍒楀嚭鏄劇ず

2. 瀹夎杞歡

•adb install <apk鏂囦歡璺緞>
榪欎釜鍛戒護灝嗘寚瀹氱殑apk鏂囦歡瀹夎鍒拌澶囦笂

3. 鍗歌澆杞歡

•adb uninstall <杞歡鍚?gt;
•adb uninstall -k <杞歡鍚?gt;
濡傛灉鍔?-k 鍙傛暟,涓哄嵏杞借蔣浠朵絾鏄繚鐣欓厤緗拰緙撳瓨鏂囦歡.

4. 鐧誨綍璁懼shell

•adb shell
•adb shell <command鍛戒護>
榪欎釜鍛戒護灝嗙櫥褰曡澶囩殑shell.
鍚庨潰鍔?lt;command鍛戒護>灝嗘槸鐩存帴榪愯璁懼鍛戒護, 鐩稿綋浜庢墽琛岃繙紼嬪懡浠?/p>

5. 浠庣數鑴戜笂鍙戦佹枃浠跺埌璁懼

•adb push <鏈湴璺緞> <榪滅▼璺緞>
鐢╬ush鍛戒護鍙互鎶婃湰鏈虹數鑴戜笂鐨勬枃浠舵垨鑰呮枃浠跺す澶嶅埗鍒拌澶?鎵嬫満)

6. 浠庤澶囦笂涓嬭澆鏂囦歡鍒扮數鑴?

•adb pull <榪滅▼璺緞> <鏈湴璺緞>
鐢╬ull鍛戒護鍙互鎶婅澶?鎵嬫満)涓婄殑鏂囦歡鎴栬呮枃浠跺す澶嶅埗鍒版湰鏈虹數鑴?/p>

7. 鏄劇ず甯姪淇℃伅

•adb help
榪欎釜鍛戒護灝嗘樉紺哄府鍔╀俊鎭?/p>

8. 鏇村android鍛戒護浣跨敤鏂規硶,璇峰弬鑰冩垜鐨勫彟涓綃囧崥鏂?android鍛戒護瀹炴垬鎵嬪唽



婕傛紓 2010-09-13 15:05 鍙戣〃璇勮
]]>
android涓鍙栫煭淇?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/07/21/120930.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Wed, 21 Jul 2010 01:00:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/07/21/120930.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/120930.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/07/21/120930.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/120930.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/120930.html</trackback:ping><description><![CDATA[     鎽樿: 鍘熸枃鍦板潃錛歨ttp://hi.baidu.com/miuchen/blog/item/d5313b34bf35b887a61e1288.html import android.app.Activity;import android.content.ContentValues;import android.database.ContentObserver;import...  <a href='http://m.shnenglu.com/AutomateProgram/archive/2010/07/21/120930.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/AutomateProgram/aggbug/120930.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-07-21 09:00 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/07/21/120930.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>android涓瓀idgets寮鍙戝叆闂紙寮鍙戞樉紺虹數婧愮數閲弚idgets錛?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117782.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Sun, 13 Jun 2010 05:13:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117782.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/117782.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117782.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/117782.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/117782.html</trackback:ping><description><![CDATA[鍙傝冪綉绔欙細<a >http://www.eoeandroid.com/viewthread.php?tid=19709&highlight=widget</a><br>        Android<span id="hvzpftn" class=t_tag onclick=tagshow(event) href="tag.php?name=%E5%BC%80%E5%8F%91">寮鍙?/span>鐨?span class=t_tag onclick=tagshow(event) href="tag.php?name=%E5%BA%94%E7%94%A8">搴旂敤</span>闄や簡<span id="hvzpftn" class=t_tag onclick=tagshow(event) href="tag.php?name=%E7%A8%8B%E5%BA%8F">紼嬪簭</span>搴旂敤錛岃繕鏈夋槸<span id="hvzpftn" class=t_tag onclick=tagshow(event) href="tag.php?name=Widget">Widget</span>搴旂敤銆傚ソ澶氫漢浼氬紑鍙戠▼搴忓簲鐢ㄨ屼笉浼氬紑鍙慦idget搴旂敤銆?br>    <p style="TEXT-ALIGN: left; LINE-HEIGHT: 30px; TEXT-INDENT: 2em">鍏堢畝鍗曡璇碬idget鐨勫師鐞嗐俉idget鏄湪妗岄潰涓婄殑涓鍧楁樉紺轟俊鎭殑涓滆タ錛屼篃閫氳繃鍗曞嚮Widget璺寵漿鍒頒竴涓▼搴忛噷闈€傝?span class=t_tag onclick=tagshow(event) href="tag.php?name=%E7%B3%BB%E7%BB%9F">緋葷粺</span>鑷甫鐨勭▼搴忥紝鍏稿瀷鐨刉idget鏄痬usic錛岃繖涓狝ndroid鍐呯疆鐨勯煶涔?span class=t_tag onclick=tagshow(event) href="tag.php?name=%E6%92%AD%E6%94%BE">鎾斁</span>灝忕▼搴忋傝繖涓槸鍏稿瀷鐨刉idget+<span id="hvzpftn" class=t_tag onclick=tagshow(event) href="tag.php?name=app">app</span>搴旂敤銆傚氨鏄竴涓▼搴忔棦鍙互閫氳繃Widget鍚姩錛屼篃鍙互閫氳繃App鍚姩銆俉idget灝辨槸涓涓狝ppWidgetProvider+涓涓猆I<span id="hvzpftn" class=t_tag onclick=tagshow(event) href="tag.php?name=%E7%95%8C%E9%9D%A2">鐣岄潰</span>鏄劇ず錛堥鍏堢粦瀹氫簡濂藉<span id=ajaxid_0.2920319025179945 class=t_tag onclick=tagshow(event) unselectable="true" href="tag.php?name=Intent" overfunc="null" outfunc="null" initialized="true">Intent</span>錛夛紝鐣岄潰涓婄殑淇℃伅鍙互閫氳繃紼嬪簭鎺у埗鑰屾敼鍙橈紝鍗曞嚮Widget錛屼笂鐨?span class=t_tag onclick=tagshow(event) href="tag.php?name=%E6%8E%A7%E4%BB%B6">鎺т歡</span>鍙兘嬋鍙戝彂閫佷竴涓狪ntent錛屾垨鍙戝嚭涓涓?span class=t_tag onclick=tagshow(event) href="tag.php?name=Service">Service</span>鐨勫惎鍔ㄩ氱煡銆傝孉ppWidgetProvider鍙互鎷︽埅榪欎釜Intent錛岃岃繘琛岀浉搴旂殑澶勭悊錛堟瘮濡傛樉紺烘柊鐨勪俊鎭級銆?/p>     鎴戜滑鍏堟潵鐪嬬湅AndroidManifest.xml涓殑浠g爜錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="utf-8"</span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">manifest </span><span style="COLOR: #ff0000">xmlns:android</span><span style="COLOR: #0000ff">="http://schemas.android.com/apk/res/android"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">      package</span><span style="COLOR: #0000ff">="com.android"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">      android:versionCode</span><span style="COLOR: #0000ff">="1"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">      android:versionName</span><span style="COLOR: #0000ff">="1.0"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">application </span><span style="COLOR: #ff0000">android:icon</span><span style="COLOR: #0000ff">="@drawable/icon"</span><span style="COLOR: #ff0000"> android:label</span><span style="COLOR: #0000ff">="@string/app_name"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">        </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">receiver </span><span style="COLOR: #ff0000">android:name</span><span style="COLOR: #0000ff">=".BatteryMonitor"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">                  android:label</span><span style="COLOR: #0000ff">="@string/app_name"</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">intent-filter</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">                </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">action </span><span style="COLOR: #ff0000">android:name</span><span style="COLOR: #0000ff">="android.appwidget.action.APPWIDGET_UPDATE"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">            </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">intent-filter</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">meta-data<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">                </span><span style="COLOR: #ff0000">android:name</span><span style="COLOR: #0000ff">="android.appwidget.provider"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">                android:resource</span><span style="COLOR: #0000ff">="@xml/widget_provider"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">        </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">receiver</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">    </span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">application</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">    </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">uses-sdk </span><span style="COLOR: #ff0000">android:minSdkVersion</span><span style="COLOR: #0000ff">="3"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">manifest</span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"> </span></div> 榪欓噷寰堟竻妤氱殑鍙互鐪嬪嚭AppWidgetProvider灝辨槸涓涓猺eceiver鐨勪笢瑗褲?br>鍦╮eceiver涓?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">            </span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">meta-data<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">                </span><span style="COLOR: #ff0000">android:name</span><span style="COLOR: #0000ff">="android.appwidget.provider"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">                android:resource</span><span style="COLOR: #0000ff">="@xml/widget_provider"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">/></span></div> 浠h〃浜嗕竴涓獁idget_provider浠g爜濡備笅錛?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff"><?</span><span style="COLOR: #ff00ff">xml version="1.0" encoding="utf-8"</span><span style="COLOR: #0000ff">?></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff"><</span><span style="COLOR: #800000">appwidget-provider<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">  </span><span style="COLOR: #ff0000">xmlns:android</span><span style="COLOR: #0000ff">="http://schemas.android.com/apk/res/android"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">  android:minWidth</span><span style="COLOR: #0000ff">="100dip"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">  android:minHeight</span><span style="COLOR: #0000ff">="100dip"</span><span style="COLOR: #ff0000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">  android:initialLayout</span><span style="COLOR: #0000ff">="@layout/main"</span><span style="COLOR: #ff0000"> </span><span style="COLOR: #0000ff">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff"></</span><span style="COLOR: #800000">appwidget-provider</span><span style="COLOR: #0000ff">></span></div> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 30px; TEXT-INDENT: 2em">榪欎釜鏄疻idget鐨勬樉紺?span class=t_tag onclick=tagshow(event) href="tag.php?name=%E8%AE%BE%E7%BD%AE">璁劇疆</span>錛屾槸瀵筗idget灞炴х殑涓涓厤緗枃浠惰繖涓猘ndroid:minHeight鏄疻idget鐨勯珮錛岃繖涓猘ndroid:minWidth<br>鏄疻idget鐨勫銆傝繖涓猘ndroid:updatePeriodMillis灞炴ф槸璁劇疆Widget欏甸潰鐨?br>鏇存柊欏甸潰鐨勬椂闂寸殑棰戠巼銆傝岃繖涓猘ndroid:initialLayout灞炴ф槸琛ㄧず鐨勬槸鍒濆鍖栭〉闈㈢殑甯冨眬錛孉ndroid閲岀敾UI鐨勫湴鏂歸兘鏄氳繃xml鏂囦歡錛屼篃鍙互閫氳繃<span id=ajaxid_0.9715062123412328 class=t_tag onclick=tagshow(event) unselectable="true" href="tag.php?name=%E4%BB%A3%E7%A0%81" overfunc="null" outfunc="null" initialized="true">浠g爜</span>紼嬪簭鏉ョ敾錛屼笉榪囪繖鏍風敾鐨勫お楹葷儲浜嗐?/p> <p style="TEXT-ALIGN: left; LINE-HEIGHT: 30px; TEXT-INDENT: 2em">寤轟竴涓被BatteryMonitor緇ф壙浜嶢ppWidgetProvider錛岃孉ppWidgetProvider緇ф壙涓巃ndroid.content.BroadcastReceiver錛屾墍浠estAppWidget灝辨槸涓涓嫤鎴鐞咺ntent鐨凚roadcastReceiver錛岃繖浜汭ntent鍙兘鍦ˋndroidmainfest閲岃緗潵鎷︽埅澶勭悊銆?br>鍦╫nUpdate涓緗獥鍙g晫闈細<br></p> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_44_613_Open_Image onclick="this.style.display='none'; Codehighlighter1_44_613_Open_Text.style.display='none'; Codehighlighter1_44_613_Closed_Image.style.display='inline'; Codehighlighter1_44_613_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_44_613_Closed_Image onclick="this.style.display='none'; Codehighlighter1_44_613_Closed_Text.style.display='none'; Codehighlighter1_44_613_Open_Image.style.display='inline'; Codehighlighter1_44_613_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="COLOR: #000000">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> defaultWidget(Context context) </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_44_613_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_44_613_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        RemoteViews updateViews </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RemoteViews(context.getPackageName(), R.layout.main);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000">updateViews.setTextViewText(R.id.battery_level, BatteryLevel+" %");</span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        updateViews.setImageViewResource(R.id.battery_img, R.drawable.batteryimg);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Push update for this widget to the home screen</span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">        ComponentName batteryWidget </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ComponentName(context, BatteryMonitor.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        AppWidgetManager manager </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> AppWidgetManager.getInstance(context);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        manager.updateAppWidget(batteryWidget, updateViews);        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">    }</span></span></div> 鍚姩涓涓湇鍔℃潵鏇存柊鐢墊簮鐢甸噺錛?br>context.startService(new Intent(context, BatteryMonitorReceiver.class));<br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.app.Service;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.appwidget.AppWidgetManager;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.content.BroadcastReceiver;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.content.ComponentName;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.content.Context;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.content.Intent;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.content.IntentFilter;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.os.IBinder;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.util.Log;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">import</span><span style="COLOR: #000000"> android.widget.RemoteViews;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000"> BatteryMonitorReceiver </span><span style="COLOR: #0000ff">extends</span><span style="COLOR: #000000"> Service<br><img id=Codehighlighter1_394_2131_Open_Image onclick="this.style.display='none'; Codehighlighter1_394_2131_Open_Text.style.display='none'; Codehighlighter1_394_2131_Closed_Image.style.display='inline'; Codehighlighter1_394_2131_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_394_2131_Closed_Image onclick="this.style.display='none'; Codehighlighter1_394_2131_Closed_Text.style.display='none'; Codehighlighter1_394_2131_Open_Image.style.display='inline'; Codehighlighter1_394_2131_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_394_2131_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_394_2131_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> BatteryLevel </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">private</span><span style="COLOR: #000000"> BroadcastReceiver batteryReceiver </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> BroadcastReceiver()<br><img id=Codehighlighter1_507_882_Open_Image onclick="this.style.display='none'; Codehighlighter1_507_882_Open_Text.style.display='none'; Codehighlighter1_507_882_Closed_Image.style.display='inline'; Codehighlighter1_507_882_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_507_882_Closed_Image onclick="this.style.display='none'; Codehighlighter1_507_882_Closed_Text.style.display='none'; Codehighlighter1_507_882_Open_Image.style.display='inline'; Codehighlighter1_507_882_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_507_882_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_507_882_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        @Override<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> onReceive(Context context, Intent intent)<br><img id=Codehighlighter1_597_876_Open_Image onclick="this.style.display='none'; Codehighlighter1_597_876_Open_Text.style.display='none'; Codehighlighter1_597_876_Closed_Image.style.display='inline'; Codehighlighter1_597_876_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_597_876_Closed_Image onclick="this.style.display='none'; Codehighlighter1_597_876_Closed_Text.style.display='none'; Codehighlighter1_597_876_Open_Image.style.display='inline'; Codehighlighter1_597_876_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">        </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_597_876_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_597_876_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">            String action </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> intent.getAction();<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">            </span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000"> (action.equals(Intent.ACTION_BATTERY_CHANGED))<br><img id=Codehighlighter1_712_866_Open_Image onclick="this.style.display='none'; Codehighlighter1_712_866_Open_Text.style.display='none'; Codehighlighter1_712_866_Closed_Image.style.display='inline'; Codehighlighter1_712_866_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_712_866_Closed_Image onclick="this.style.display='none'; Codehighlighter1_712_866_Closed_Text.style.display='none'; Codehighlighter1_712_866_Open_Image.style.display='inline'; Codehighlighter1_712_866_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">            </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_712_866_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_712_866_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">                Log.d(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">BatteryLevel</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">BatteryCHANGED</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">                BatteryLevel </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> intent.getIntExtra(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">level</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">, </span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">                UpdateAppWidget(context);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">            }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">        }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">    }</span></span><span style="COLOR: #000000">;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    <br><img id=Codehighlighter1_938_1392_Open_Image onclick="this.style.display='none'; Codehighlighter1_938_1392_Open_Text.style.display='none'; Codehighlighter1_938_1392_Closed_Image.style.display='inline'; Codehighlighter1_938_1392_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_938_1392_Closed_Image onclick="this.style.display='none'; Codehighlighter1_938_1392_Closed_Text.style.display='none'; Codehighlighter1_938_1392_Open_Image.style.display='inline'; Codehighlighter1_938_1392_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> UpdateAppWidget(Context context)</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_938_1392_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_938_1392_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">         RemoteViews updateViews </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> RemoteViews(context.getPackageName(), R.layout.main);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">         updateViews.setTextViewText(R.id.battery_level, BatteryLevel</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> %</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> Push update for this widget to the home screen</span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">        ComponentName batteryWidget </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> ComponentName(context, BatteryMonitor.</span><span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        AppWidgetManager manager </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> AppWidgetManager.getInstance(context);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        manager.updateAppWidget(batteryWidget, updateViews);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">    }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    <br><img id=Codehighlighter1_1403_1463_Open_Image onclick="this.style.display='none'; Codehighlighter1_1403_1463_Open_Text.style.display='none'; Codehighlighter1_1403_1463_Closed_Image.style.display='inline'; Codehighlighter1_1403_1463_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1403_1463_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1403_1463_Closed_Text.style.display='none'; Codehighlighter1_1403_1463_Open_Image.style.display='inline'; Codehighlighter1_1403_1463_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1403_1463_Closed_Text>/**/</span><span id=Codehighlighter1_1403_1463_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> (non-Javadoc)<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">     * @see android.app.Service#onCreate()<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    @Override<br><img id=Codehighlighter1_1500_1709_Open_Image onclick="this.style.display='none'; Codehighlighter1_1500_1709_Open_Text.style.display='none'; Codehighlighter1_1500_1709_Closed_Image.style.display='inline'; Codehighlighter1_1500_1709_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1500_1709_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1500_1709_Closed_Text.style.display='none'; Codehighlighter1_1500_1709_Open_Image.style.display='inline'; Codehighlighter1_1500_1709_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> onCreate() </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1500_1709_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1500_1709_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO Auto-generated method stub</span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">.onCreate();<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        IntentFilter itFilter </span><span style="COLOR: #000000">=</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">new</span><span style="COLOR: #000000"> IntentFilter();<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        itFilter.addAction(Intent.ACTION_BATTERY_CHANGED);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        registerReceiver(batteryReceiver, itFilter);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">    }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    @Override<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> onStart(Intent intent, </span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000"> startId)<br><img id=Codehighlighter1_1779_1791_Open_Image onclick="this.style.display='none'; Codehighlighter1_1779_1791_Open_Text.style.display='none'; Codehighlighter1_1779_1791_Closed_Image.style.display='inline'; Codehighlighter1_1779_1791_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1779_1791_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1779_1791_Closed_Text.style.display='none'; Codehighlighter1_1779_1791_Open_Image.style.display='inline'; Codehighlighter1_1779_1791_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1779_1791_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1779_1791_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        <br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">    }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    <br><img id=Codehighlighter1_1800_1861_Open_Image onclick="this.style.display='none'; Codehighlighter1_1800_1861_Open_Text.style.display='none'; Codehighlighter1_1800_1861_Closed_Image.style.display='inline'; Codehighlighter1_1800_1861_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1800_1861_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1800_1861_Closed_Text.style.display='none'; Codehighlighter1_1800_1861_Open_Image.style.display='inline'; Codehighlighter1_1800_1861_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1800_1861_Closed_Text>/**/</span><span id=Codehighlighter1_1800_1861_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000"> (non-Javadoc)<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">     * @see android.app.Service#onDestroy()<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">     </span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    @Override<br><img id=Codehighlighter1_1899_1999_Open_Image onclick="this.style.display='none'; Codehighlighter1_1899_1999_Open_Text.style.display='none'; Codehighlighter1_1899_1999_Closed_Image.style.display='inline'; Codehighlighter1_1899_1999_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_1899_1999_Closed_Image onclick="this.style.display='none'; Codehighlighter1_1899_1999_Closed_Text.style.display='none'; Codehighlighter1_1899_1999_Open_Image.style.display='inline'; Codehighlighter1_1899_1999_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000"> onDestroy() </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_1899_1999_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_1899_1999_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO Auto-generated method stub</span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">super</span><span style="COLOR: #000000">.onDestroy();<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        unregisterReceiver(batteryReceiver);<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">    }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    @Override<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">    </span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000"> IBinder onBind(Intent intent)<br><img id=Codehighlighter1_2058_2128_Open_Image onclick="this.style.display='none'; Codehighlighter1_2058_2128_Open_Text.style.display='none'; Codehighlighter1_2058_2128_Closed_Image.style.display='inline'; Codehighlighter1_2058_2128_Closed_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_2058_2128_Closed_Image onclick="this.style.display='none'; Codehighlighter1_2058_2128_Closed_Text.style.display='none'; Codehighlighter1_2058_2128_Open_Image.style.display='inline'; Codehighlighter1_2058_2128_Open_Text.style.display='inline';" align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ContractedSubBlock.gif">    </span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_2058_2128_Closed_Text><img src="http://m.shnenglu.com/Images/dot.gif"></span><span id=Codehighlighter1_2058_2128_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif">        </span><span style="COLOR: #008000">//</span><span style="COLOR: #008000"> TODO Auto-generated method stub</span><span style="COLOR: #008000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"></span><span style="COLOR: #000000">        </span><span style="COLOR: #0000ff">return</span><span style="COLOR: #000000"> </span><span style="COLOR: #0000ff">null</span><span style="COLOR: #000000">;<br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">    }</span></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div> 鍦▁ml涓敞鍐屾湇鍔?br> <div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #000000">        </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">service android:name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">.BatteryMonitorReceiver</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">          </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">intent</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">              </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">action android:name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">com.adroid.pp</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">              </span><span style="COLOR: #000000"><</span><span style="COLOR: #000000">category android:name</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">android.intent.category.default</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000"> </span><span style="COLOR: #000000">/></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">          </span><span style="COLOR: #000000"></</span><span style="COLOR: #000000">intent</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">filter</span><span style="COLOR: #000000">></span><span style="COLOR: #000000"><br><img align=top src="http://m.shnenglu.com/Images/OutliningIndicators/None.gif">        </span><span style="COLOR: #000000"></</span><span style="COLOR: #000000">service</span><span style="COLOR: #000000">></span></div> <a href="http://m.shnenglu.com/Files/AutomateProgram/BatteryMonitor.rar">浠g爜涓嬭澆 </a> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/117782.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-06-13 13:13 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/06/13/117782.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>adb鐨勪竴浜涘懡浠?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117501.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Wed, 09 Jun 2010 14:04:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117501.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/117501.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117501.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/117501.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/117501.html</trackback:ping><description><![CDATA[<p>鍘熸枃鍦板潃錛?a >http://blog.csdn.net/chief1985/archive/2010/05/03/5553022.aspx</a><br><br>android鐨刟db閲囩敤鐨勬槸server+client鐨勬柟寮忥紝鎵浠db鏄敮鎸佸涓澶囧悓鏃惰繛鎺ョ殑銆傞氳繃adb devices鍛戒護鍙互鐪嬪埌鎵鏈夎繛鎺ョ殑android璁懼錛岃屽涓澶囬兘榪炰笂adb server錛屽鏋滀綘鎯抽拡瀵規煇涓涓澶囨墽琛宎db鍛戒護錛屽彲浠ュ湪adb鍛戒護鍚庨潰鍔犱笂-s <serial number>,渚嬪adb –s 12345678 push c:\a.txt /data/銆俛db鐨勮璁″彲浠ュ弬鑰?a >http://blog.csdn.net/wbw1985/archive/2010/04/02/5443910.aspx</a>銆?/p> <p>瀵逛簬adb shell錛屽悗闈㈠彲浠ヨ窡鐨勫懡浠や富瑕佹潵鑷猘ndroid-1.5\system\core\toolbox閲岄潰錛屽涓嬶細</p> <p>    ls  <br>    mount  <br>    cat  <br>    ps  <br>    kill  <br>    ln  <br>    insmod  <br>    rmmod  <br>    lsmod  <br>    ifconfig  <br>    setconsole  <br>    rm  <br>    mkdir  <br>    rmdir  <br>    reboot  <br>    getevent  <br>    sendevent  <br>    date  <br>    wipe  <br>    sync  <br>    umount  <br>    start  <br>    stop  <br>    notify  <br>    cmp  <br>    dmesg  <br>    route  <br>    hd  <br>    dd  <br>    df  <br>    getprop  <br>    setprop  <br>    watchprops  <br>    log  <br>    sleep  <br>    renice  <br>    printenv  <br>    smd  <br>    chmod  <br>    chown  <br>    mkdosfs  <br>    netstat  <br>    ioctl  <br>    mv  <br>    schedtop  <br>    top  <br>    iftop  <br>    id  <br>    vmstat </p> <p>鍏蜂綋鐨勬剰鎬濆氨涓嶈В閲婁簡錛屽ぇ瀹跺彲浠ュ幓鐪媗inux鎵嬪唽鎴栬呯湅android鐨勬簮鐮併傞渶瑕佽涓涓嬬殑鏄痯s鍛戒護,寰堝鏃跺欐垜浠兂鍙垪涓懼嚭鎴戜滑闇瑕佺殑榪涚▼鍒楄〃錛屼緥濡傚垪涓懼嚭鎵鏈夎繍琛岀殑app銆備粠ps鐨勬簮鐮佹潵鐪嬶紝瀹冩槸鏀寔filter鐨勶紝ps app搴旇鍙互鍒椾婦鍑烘墍鏈変互app寮澶寸殑榪涚▼錛屼絾鍦ㄦ煇浜涙墜鏈洪噷闈㈣繍琛屾椂榪欎釜filter鍙堟槸娌$敤鐨勶紝鍙兘鏄繖浜涙墜鏈轟慨鏀逛簡ps鐨勪唬鐮併?/p> <p>榪樻湁涓や釜姣旇緝濂界敤鐨勫懡浠ゆ槸adb shell am鍜宎db shell pm,榪欎袱涓懡浠ゅ湪frameworks/base/cmds涓嬮潰銆俛m鍛戒護涓昏鐢ㄤ簬綆$悊Activity錛屼緥濡傚惎鍔紝鍋滄Activity錛坋clipse鍦ㄨ繍琛孉ctivity灝變嬌鐢ㄤ簡榪欎釜鍛戒護錛夛紝鍙戦乮ntent錛沺m鍛戒護鍒欎富瑕佺敤浜庣鐞嗗簲鐢╬ackage鐨勭鐞嗭紝鏈夌偣鍍忔帶鍒墮潰鏉跨殑娣誨姞鍜屽垹闄ょ▼搴忋?/p> <p>am鍛戒護鐨勫叿浣撶敤娉曞涓嬶細</p> <p>usage: am [start|broadcast|instrument|profile] <br>am start -D INTENT <br>am broadcast INTENT <br>am instrument [-r] [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] <br>[-w] <COMPONENT> <br>am profile <PROCESS> [start <PROF_FILE>|stop] <br>INTENT is described with: <br>[-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] <br>[-c <CATEGORY> [-c <CATEGORY>] ...] <br>[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] <br>[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] <br>[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] <br>[-n <COMPONENT>] [-f <FLAGS>] [<URI>] <br>The start command starts activity. Use -D option to make 'DebugOption' true. <br>The broadcast command sends broadcast. <br>The instrument command starts instrumentation. <br>Use -r option to make 'rawMode' true. <br>Use -e option to add the pair of ARG_NAME and ARG_VALUE into Bundle. <br>Use -p option to specify profileFile. <br>Use -w option to make 'wait' true in order to new an instance of InstrumentationWatcher. <br>Use COMPONENT to specify the name of the instrumentation component. <br>The profile command turn on/off profiling in a particular process specified by PROCESS. <br>Use start option to turn on and stop to turn off.Use PROF_FILE to specify the file path of profile. <br>Use -a to set action specified by ACTION to be performed. <br>Use -d to create a Uri(data) which parses the given encoded URI string DATA_URI. <br>Use -t to specify the type specified by MIME_TYPE. Use -c to add a new category specified by <br>CATEGORY to the intent. <br>Use -e or --es to add extended data to the intent.EXTRA_KEY specifies the name of the extra data and <br>EXTRA_STRING_VALUE specifies the string data value. <br>Use --ez to add extended data to the intent. EXTRA_KEY specifies the name of the extra data and <br>EXTRA_BOOLEAN_VALUE specifies the serializable data value. <br>Use -e or --ei to add extended data to the intent. EXTRA_KEY specifies the name of the extra data and <br>EXTRA_INT_VALUE specifies the serializable data value. <br>Use -n to explicitly set the component specified by COMPONENT to handle the intent. <br>Use -f to set special flags controlling how this intent is handled.FLAGS specifies the desired flags. <br>Use URI to create an intent from a URI. </p> <p>pm鍛戒護鐨勫叿浣撶敤娉曞涓嬶細</p> <p>usage: pm [list|path|install|uninstall] <br>       pm list packages [-f] <br>       pm list permission-groups <br>       pm list permissions [-g] [-f] [-d] [-u] [GROUP] <br>       pm list instrumentation [-f] [TARGET-PACKAGE] <br>       pm path PACKAGE <br>       pm install [-l] [-r] PATH <br>       pm uninstall [-k] PACKAGE <br>       pm enable PACKAGE_OR_COMPONENT <br>       pm disable PACKAGE_OR_COMPONENT </p> <p>The list packages command prints all packages.  Use <br>the -f option to see their associated file. </p> <p>The list permission-groups command prints all known <br>permission groups. </p> <p>The list permissions command prints all known <br>permissions, optionally only those in GROUP.  Use <br>the -g option to organize by group.  Use <br>the -f option to print all information.  Use <br>the -s option for a short summary.  Use <br>the -d option to only list dangerous permissions.  Use <br>the -u option to list only the permissions users will see. </p> <p>The list instrumentation command prints all instrumentations, <br>or only those that target a specified package.  Use the -f option <br>to see their associated file. </p> <p>The path command prints the path to the .apk of a package. </p> <p>The install command installs a package to the system.  Use <br>the -l option to install the package with FORWARD_LOCK. Use <br>the -r option to reinstall an exisiting app, keeping its data. </p> <p>The uninstall command removes a package from the system. Use <br>the -k option to keep the data and cache directories around <br>after the package removal. </p> <p>The enable and disable commands change the enabled state of <br>a given package or component (written as "package/class").<br> </p> <p>frameworks/base/cmds涓嬮潰榪樻湁涓涓埆鐨勫懡浠?濡備笅 </p> <p><br>dumpstate <br>dumpsys <br>ime <br>input <br>installd <br>runtime <br>service <br>servicemanager <br>surfaceflinger <br>svc <br>system_server </p> <p>涓嬮潰鏄笂榪板懡浠ょ殑涓浜涜緭鍑猴細</p> <p>C:\Users\xufan>adb shell dumpstate <br>======================================================== <br>== dumpstate <br>======================================================== <br>------ MEMORY INFO ------ <br>MemTotal:        94348 kB <br>MemFree:          9912 kB <br>Buffers:             0 kB <br>Cached:          47876 kB <br>SwapCached:          0 kB <br>Active:          47016 kB <br>Inactive:        29980 kB <br>SwapTotal:           0 kB <br>SwapFree:            0 kB <br>Dirty:               0 kB <br>Writeback:           0 kB <br>AnonPages:       29156 kB <br>Mapped:          22948 kB <br>Slab:             2992 kB <br>SReclaimable:      796 kB <br>SUnreclaim:       2196 kB <br>PageTables:       2180 kB <br>NFS_Unstable:        0 kB <br>Bounce:              0 kB <br>WritebackTmp:        0 kB <br>CommitLimit:     47172 kB <br>Committed_AS:   658548 kB <br>VmallocTotal:   876544 kB <br>VmallocUsed:      8380 kB <br>VmallocChunk:   859132 kB </p> <p>------ CPU INFO ------ </p> <p>User 7%, System 23%, IOW 0%, IRQ 0% <br>User 11 + Nice 0 + Sys 33 + Idle 98 + IOW 0 + IRQ 0 + SIRQ 0 = 142 </p> <p>  PID   TID CPU% S     VSS     RSS UID      Thread          Proc <br>  743   743  26% R    928K    384K shell    top             top <br>  565   581   1% S 177876K  25384K system   er.ServerThread system_server <br>  565   570   0% S 177876K  25384K system   Binder Thread # system_server <br>  565   571   0% S 177876K  25384K system   Binder Thread # system_server <br>  605   605   0% S 105820K  17540K radio    app_process     com.android.phone <br>  565   619   0% S 177876K  25384K system   er$SensorThread system_server <br>  565   585   0% S 177876K  25384K system   PackageManager  system_server <br>  565   586   0% S 177876K  25384K system   FileObserver    system_server <br>  565   589   0% S 177876K  25384K system   SyncHandlerThre system_server <br>  565   590   0% S 177876K  25384K system   UEventObserver  system_server <br>  565   591   0% S 177876K  25384K system   PowerManagerSer system_server <br>  565   592   0% S 177876K  25384K system   AlarmManager    system_server <br>  565   593   0% S 177876K  25384K system   WindowManager   system_server <br>  565   594   0% S 177876K  25384K system   InputDeviceRead system_server <br>  565   595   0% S 177876K  25384K system   WindowManagerPo system_server <br>  565   596   0% S 177876K  25384K system   InputDispatcher system_server <br>  565   597   0% S 177876K  25384K system   ConnectivityThr system_server <br>  565   598   0% S 177876K  25384K system   WifiService     system_server <br>  565   599   0% S 177876K  25384K system   WifiWatchdogThr system_server <br>  565   600   0% S 177876K  25384K system   er.ServerThread system_server <br>  565   601   0% S 177876K  25384K system   GpsEventThread  system_server <br>  565   602   0% S 177876K  25384K system   AudioService    system_server <br>  565   603   0% S 177876K  25384K system   android:unnamed system_server <br>  565   604   0% S 177876K  25384K system   android:unnamed system_server <br>  565   609   0% S 177876K  25384K system   watchdog        system_server <br>  565   640   0% S 177876K  25384K system   r.MountListener system_server <br>  565   651   0% S 177876K  25384K system   Binder Thread # system_server <br>  565   678   0% S 177876K  25384K system   Binder Thread # system_server <br>  605   606   0% S 105820K  17540K radio    HeapWorker      com.android.phone <br>  605   607   0% S 105820K  17540K radio    Signal Catcher  com.android.phone <br>------ PROCRANK ------<br> </p> <p><br> </p> <p>C:\Users\xufan>adb shell dumpsys </p> <p>  Provider mms-sms <br>    ContentProviderRecord{436a0040 com.android.providers.telephony.MmsSmsProvide <br>r} <br>    package=com.android.providers.telephony process=com.android.phone <br>    app=ProcessRecord{43638990 605:com.android.phone/1001} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436c8c88">provider=android.content.ContentProviderProxy@436c8c88</a> <br>    name=mms-sms <br>    isSyncable=false <br>    multiprocess=true initOrder=0 uid=1001 <br>    clients=[] <br>    externals=0 </p> <p>  Published content providers (by class): <br>  Provider android.content.SyncProvider <br>    ContentProviderRecord{435bceb8 android.content.SyncProvider} <br>    package=android process=system <br>    app=ProcessRecord{436236b8 565:system/1000} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProvider$Transport@43634c48">provider=android.content.ContentProvider$Transport@43634c48</a> <br>    name=sync <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=1000 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.telephony.MmsSmsProvider <br>    ContentProviderRecord{436a0040 com.android.providers.telephony.MmsSmsProvide <br>r} <br>    package=com.android.providers.telephony process=com.android.phone <br>    app=ProcessRecord{43638990 605:com.android.phone/1001} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436c8c88">provider=android.content.ContentProviderProxy@436c8c88</a> <br>    name=mms-sms <br>    isSyncable=false <br>    multiprocess=true initOrder=0 uid=1001 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.settings.SettingsProvider <br>    ContentProviderRecord{435bda90 com.android.providers.settings.SettingsProvid <br>er} <br>    package=com.android.providers.settings process=system <br>    app=ProcessRecord{436236b8 565:system/1000} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProvider$Transport@435a2b58">provider=android.content.ContentProvider$Transport@435a2b58</a> <br>    name=settings <br>    isSyncable=false <br>    multiprocess=false initOrder=100 uid=1000 <br>    clients=[ProcessRecord{4371bad0 655:com.android.alarmclock/10000}, ProcessRe <br>cord{43638990 605:com.android.phone/1001}] <br>    externals=0 <br>  Provider com.android.providers.userdictionary.UserDictionaryProvider <br>    ContentProviderRecord{436a2398 com.android.providers.userdictionary.UserDict <br>ionaryProvider} <br>    package=com.android.providers.userdictionary process=android.process.acore <br>    app=ProcessRecord{43645bc0 608:android.process.acore/10004} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436ccca0">provider=android.content.ContentProviderProxy@436ccca0</a> <br>    name=user_dictionary <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10004 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.contacts.ContactsProvider <br>    ContentProviderRecord{436a25e8 com.android.providers.contacts.ContactsProvid <br>er} <br>    package=com.android.providers.contacts process=android.process.acore <br>    app=ProcessRecord{43645bc0 608:android.process.acore/10004} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436cd910">provider=android.content.ContentProviderProxy@436cd910</a> <br>    name=contacts;call_log <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10004 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.drm.DrmProvider <br>    ContentProviderRecord{4361c528 com.android.providers.drm.DrmProvider} <br>    package=com.android.providers.drm process=android.process.media <br>    app=ProcessRecord{436e89e8 644:android.process.media/10003} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@435ffed0">provider=android.content.ContentProviderProxy@435ffed0</a> <br>    name=drm <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10003 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.launcher.LauncherProvider <br>    ContentProviderRecord{436a2710 com.android.launcher.LauncherProvider} <br>    package=com.android.launcher process=android.process.acore <br>    app=ProcessRecord{43645bc0 608:android.process.acore/10004} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436cdff0">provider=android.content.ContentProviderProxy@436cdff0</a> <br>    name=com.android.launcher.settings <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10004 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.media.MediaProvider <br>    ContentProviderRecord{436e8728 com.android.providers.media.MediaProvider} <br>    package=com.android.providers.media process=android.process.media <br>    app=ProcessRecord{436e89e8 644:android.process.media/10003} <br>    launchingApp=ProcessRecord{436e89e8 644:android.process.media/10003} <br>    <a href="mailto:provider=android.content.ContentProviderProxy@435ff638">provider=android.content.ContentProviderProxy@435ff638</a> <br>    name=media <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10003 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.downloads.DownloadProvider <br>    ContentProviderRecord{4369e808 com.android.providers.downloads.DownloadProvi <br>der} <br>    package=com.android.providers.downloads process=android.process.media <br>    app=ProcessRecord{436e89e8 644:android.process.media/10003} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@43600a50">provider=android.content.ContentProviderProxy@43600a50</a> <br>    name=downloads <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10003 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.telephony.MmsProvider <br>    ContentProviderRecord{436a0f28 com.android.providers.telephony.MmsProvider} <br>    package=com.android.providers.telephony process=com.android.phone <br>    app=ProcessRecord{43638990 605:com.android.phone/1001} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436c93a8">provider=android.content.ContentProviderProxy@436c93a8</a> <br>    name=mms <br>    isSyncable=false <br>    multiprocess=true initOrder=0 uid=1001 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.googlesearch.SuggestionProvider <br>    ContentProviderRecord{436a24c0 com.android.googlesearch.SuggestionProvider} <br>    package=com.android.googlesearch process=android.process.acore <br>    app=ProcessRecord{43645bc0 608:android.process.acore/10004} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436cd288">provider=android.content.ContentProviderProxy@436cd288</a> <br>    name=com.android.googlesearch.SuggestionProvider <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10004 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.telephony.TelephonyProvider <br>    ContentProviderRecord{436a1030 com.android.providers.telephony.TelephonyProv <br>ider} <br>    package=com.android.providers.telephony process=com.android.phone <br>    app=ProcessRecord{43638990 605:com.android.phone/1001} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436c9988">provider=android.content.ContentProviderProxy@436c9988</a> <br>    name=telephony <br>    isSyncable=false <br>    multiprocess=true initOrder=0 uid=1001 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.providers.telephony.SmsProvider <br>    ContentProviderRecord{436a1138 com.android.providers.telephony.SmsProvider} <br>    package=com.android.providers.telephony process=com.android.phone <br>    app=ProcessRecord{43638990 605:com.android.phone/1001} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436ca038">provider=android.content.ContentProviderProxy@436ca038</a> <br>    name=sms <br>    isSyncable=false <br>    multiprocess=true initOrder=0 uid=1001 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.phone.SimProvider <br>    ContentProviderRecord{436a1240 com.android.phone.SimProvider} <br>    package=com.android.phone process=com.android.phone <br>    app=ProcessRecord{43638990 605:com.android.phone/1001} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@436ca648">provider=android.content.ContentProviderProxy@436ca648</a> <br>    name=sim <br>    isSyncable=false <br>    multiprocess=true initOrder=0 uid=1001 <br>    clients=[] <br>    externals=0 <br>  Provider com.android.alarmclock.AlarmProvider <br>    ContentProviderRecord{4371d520 com.android.alarmclock.AlarmProvider} <br>    package=com.android.alarmclock process=com.android.alarmclock <br>    app=ProcessRecord{4371bad0 655:com.android.alarmclock/10000} <br>    launchingApp=null <br>    <a href="mailto:provider=android.content.ContentProviderProxy@435e2c10">provider=android.content.ContentProviderProxy@435e2c10</a> <br>    name=com.android.alarmclock <br>    isSyncable=false <br>    multiprocess=false initOrder=0 uid=10000 <br>    clients=[] <br>    externals=0 </p> <p>Granted Uri Permissions: <br>------------------------------------------------------------------------------- <br>DUMP OF SERVICE activity.senders: <br>Intent Senders in Current Activity Manager State: <br>  IntentSender IntentSenderRecord{435bb968 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=android.content.syncmanager.SYNC_ALARM } <br>    sent=false canceled=false <br>  IntentSender IntentSenderRecord{4359f4e0 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=android.intent.action.DATE_CHANGED } <br>    sent=false canceled=false <br>  IntentSender IntentSenderRecord{43638b10 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=com.android.service.Watchdog.REBOOT } <br>    sent=false canceled=false <br>  IntentSender IntentSenderRecord{436714c0 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=com.android.server.WifiManager.action.DEVICE_I <br>DLE } <br>    sent=false canceled=false <br>  IntentSender IntentSenderRecord{435e56d8 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=android.intent.action.TIME_TICK flags=0x400000 <br>00 } <br>    sent=true canceled=false <br>  IntentSender IntentSenderRecord{435adb08 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=android.content.syncmanager.SYNC_POLL_ALARM } <br>    sent=true canceled=false <br>  IntentSender IntentSenderRecord{4359edf0 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { action=com.android.service.Watchdog.CHECKUP } <br>    sent=false canceled=false <br>  IntentSender IntentSenderRecord{436e3198 android broadcastIntent} <br>    packageName=android type=broadcastIntent flags=0x0 <br>    activity=null who=null <br>    requestCode=0 requestResolvedType=null <br>    requestIntent=Intent { } <br>    sent=false canceled=false <br>------------------------------------------------------------------------------- <br>DUMP OF SERVICE activity.services: <br>Services in Current Activity Manager State: <br>------------------------------------------------------------------------------- <br>DUMP OF SERVICE alarm: <br>Current Alarm Manager state: </p> <p>  Realtime alarms that are scheduled: <br>  RTC #1: <br>    Alarm{436358a0 type 1 android} <br>    type=1 when=1272931200000 repeatInterval=0 count=0 <br>    operation=PendingIntent{43617020 target IntentSenderRecord{4359f4e0 android <br>broadcastIntent}} <br>  RTC #0: <br>    Alarm{43695080 type 1 android} <br>    type=1 when=1272884280000 repeatInterval=0 count=0 <br>    operation=PendingIntent{4358e9d8 target IntentSenderRecord{435e56d8 android <br>broadcastIntent}} </p> <p>  Elapsed realtime wakeup alarms that are scheduled: <br>  ELAPSED_REALTIME_WAKEUP #0: <br>    Alarm{4361e8e8 type 2 android} <br>    type=2 when=90877805 repeatInterval=0 count=0 <br>    operation=PendingIntent{435adc60 target IntentSenderRecord{435adb08 android <br>broadcastIntent}} </p> <p>  Broadcast ref count: 0 </p> <p>  Alarm Stats: <br>  android <br>    4729ms running, 1 wakeups <br>    1 alarms: Intent { action=android.content.syncmanager.SYNC_POLL_ALARM flags= <br>0x4 (has extras) } <br>    28 alarms: Intent { action=android.intent.action.TIME_TICK flags=0x40000004 <br>(has extras) } <br>------------------------------------------------------------------------------- <br>DUMP OF SERVICE appwidget: <br>Providers: (size=3) <br>  [0] provder=ComponentInfo{com.android.alarmclock/com.android.alarmclock.Analog <br>AppWidgetProvider} min=(146x146) updatePeriodMillis=0 initialLayout=2130903043 z <br>ombie=false <br>  [1] provder=ComponentInfo{com.android.camera/com.android.camera.PhotoAppWidget <br>Provider} min=(146x146) updatePeriodMillis=0 initialLayout=2130903052 zombie=fal <br>se <br>  [2] provder=ComponentInfo{com.android.music/com.android.music.MediaAppWidgetPr <br>ovider} min=(294x72) updatePeriodMillis=0 initialLayout=2130903040 zombie=false <br>AppWidgetIds: (size=1) <br>  [0] appWidgetId=1 host=1024/com.android.launcher provider=ComponentInfo{com.an <br>droid.alarmclock/com.android.alarmclock.AnalogAppWidgetProvider} host.callbacks= <br><a href="mailto:com.android.internal.appwidget.IAppWidgetHost$Stub$Proxy@4363f610">com.android.internal.appwidget.IAppWidgetHost$Stub$Proxy@4363f610</a> views=android. <br><a href="mailto:widget.RemoteViews@43731e90">widget.RemoteViews@43731e90</a> <br>Hosts: (size=1) <br>  [0] packageName=com.android.launcher uid=10004 hostId=1024 callbacks=com.andro <br><a href="mailto:id.internal.appwidget.IAppWidgetHost$Stub$Proxy@4363f610">id.internal.appwidget.IAppWidgetHost$Stub$Proxy@4363f610</a> instances.size=1 zombie <br>=false <br>------------------------------------------------------------------------------- <br>DUMP OF SERVICE audio:<br> </p> <p> </p> <p>C:\Users\xufan>adb shell ime list <br>com.android.inputmethod.latin/.LatinIME: <br>  mId=com.android.inputmethod.latin/.LatinIME mSettingsActivityName=com.android. <br>inputmethod.latin.LatinIMESettings <br>  mIsDefaultResId=0x7f060001 <br>  Service: <br>    Filter: null <br>    priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false <br>    labelRes=0x0 nonLocalizedLabel=null icon=0x0 <br>    ServiceInfo: <br>com.android.inputmethod.pinyin/.PinyinIME: <br>  mId=com.android.inputmethod.pinyin/.PinyinIME mSettingsActivityName=com.androi <br>d.inputmethod.pinyin.SettingsActivity <br>  mIsDefaultResId=0x7f060000 <br>  Service: <br>    Filter: null <br>    priority=0 preferredOrder=0 match=0x108000 specificIndex=-1 isDefault=false <br>    labelRes=0x0 nonLocalizedLabel=null icon=0x0 <br>    ServiceInfo: </p> <p> </p> <p>C:\Users\xufan>adb shell input <br>usage: input [text|keyevent] <br>       input text <string> <br>       input keyevent <event_code><br></p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/117501.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-06-09 22:04 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117501.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Android Adb Analyse http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117500.html婕傛紓婕傛紓Wed, 09 Jun 2010 13:59:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117500.htmlhttp://m.shnenglu.com/AutomateProgram/comments/117500.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117500.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/117500.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/117500.html鍘熸枃鍦板潃錛?a >http://blog.csdn.net/wanghui_nju/archive/2010/05/27/5627672.aspx



婕傛紓 2010-06-09 21:59 鍙戣〃璇勮
]]>
Android adb shell 鍚姩java紼嬪簭http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117499.html婕傛紓婕傛紓Wed, 09 Jun 2010 13:57:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117499.htmlhttp://m.shnenglu.com/AutomateProgram/comments/117499.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117499.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/117499.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/117499.html 
鍘熸枃鍦板潃錛?a >http://www.cnblogs.com/bluespot/archive/2009/08/11/1543657.html
鍏抽敭瀛?/strong>: android am activitymanager
榪涘叆shell 
寮曠敤
C:"Documents and Settings"mawenjian>adb shell

鐪嬩竴涓嬪懡浠ょ殑甯姪 
寮曠敤

# am -help 
am -help 
Error: Unknown command: -help 
usage: am [start|instrument] 
       am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>] 
                [-c <CATEGORY> [-c <CATEGORY>] ...] 
                [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...] 
                [-n <COMPONENT>] [-D] [<URI>] 
       am instrument [-e <ARG_NAME> <ARG_VALUE>] [-p <PROF_FILE>] 
                [-w] <COMPONENT>

濂戒簡,璇曚竴涓嬪惎鍔ㄦ祻瑙堝櫒 
寮曠敤
# am start -n com.google.android.browser/com.google.android.browser.BrowserActivity 
am start -n com.google.android.browser/com.google.android.browser.BrowserActivity 
Starting: Intent { comp={com.google.android.browser/com.google.android.browser.BrowserActivity} }

ok,鎴愬姛浜?nbsp;
澶у璇曡瘯涓嬮潰鐨勫懡浠ゅ惂: 
寮曠敤

# am start -a android.intent.action.VIEW -d http://mwjian.javaeye.com 
am start -a android.intent.action.VIEW -d http://mwjian.javaeye.com 
Starting: Intent { action=android.intent.action.VIEW data=http://mwjian.javaeye.com } 

# am start -a android.intent.action.CALL -d tel:88888888 
am start -a android.intent.action.CALL -d tel:88888888 
Starting: Intent { action=android.intent.action.CALL data=tel:88888888 } 

# am start -a android.intent.action.ALL_APPS 
am start -a android.intent.action.ALL_APPS 
Starting: Intent { action=android.intent.action.ALL_APPS } 

# am start -a android.intent.action.VIEW geo:0,0?q=shanghai 
am start -a android.intent.action.VIEW geo:0,0?q=shanghai 
Starting: Intent { action=android.intent.action.VIEW data=geo:0,0?q=shanghai }


鎴戝叿浣撶敤妯℃嫙鍣ㄨ瘯鐨?鏃跺欐槸榪欐牱鐨勬寚浠わ細

adb shell am start -n com.android.browser/.BrowserActivity鍚姩嫻忚鍣ㄧ殑錛屽彲鑳芥ā鎷熷櫒鍜岀湡鏈虹殑緇勪歡涓嶄竴鏍鳳紒


婕傛紓 2010-06-09 21:57 鍙戣〃璇勮
]]>
android ps 鍛戒護鎵ц鍚庡悇欏瑰肩殑鍚箟http://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117498.html婕傛紓婕傛紓Wed, 09 Jun 2010 13:55:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117498.htmlhttp://m.shnenglu.com/AutomateProgram/comments/117498.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/06/09/117498.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/117498.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/117498.html鍘熸枃鍦板潃錛?a >http://blog.csdn.net/miaouu/archive/2010/04/14/5484355.aspx

PS鍛戒護鏌ョ湅榪涚▼璇︾粏鍙傛暟

    android ps 鍛戒護鎵ц瀹屽悗錛屼細鏈変笅鍒楀悇欏瑰鹼細“USER  PID  PPID  VSIZE  RSS  WCHAN  PC  NAME”錛屼唬琛ㄧ殑鎰忔濆垎鍒槸錛?/p>

    VSIZE錛氳繘紼嬬殑铏氭嫙鍐呭瓨澶у皬錛?br>    RSS錛?nbsp;  榪涚▼鍒嗛厤鍒板緱鐗╃悊鍐呭瓨澶у皬錛?br>    WCHAN錛歛ddress of the kernel function where the process is sleeping錛孯unning tasks will display (0) in this column.
    鍏朵粬鐨勫啀璇淬?/p>

婕傛紓 2010-06-09 21:55 鍙戣〃璇勮
]]>
Android鐨勮皟璇曞師鐞?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/06/08/117404.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Tue, 08 Jun 2010 10:28:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/06/08/117404.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/117404.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/06/08/117404.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/117404.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/117404.html</trackback:ping><description><![CDATA[<p>鍘熸枃鍦板潃錛?a >http://hi.baidu.com/chocolly/blog/item/91d68f99210abc006f068c63.html/cmtid/b11822ce4bfae234b700c84d</a><br>/* 浠婂ぉ瀛︿範浜嗙敤Eclipse 鏉ヨ皟璇旳ndroid鐨勪唬鐮侊紝棣栨浣跨敤錛屽彲鑳芥湁鐨勯棶棰樺緢鍩烘湰錛屾湁闂璇鋒寚鍑猴紝浜ゆ祦鍢?) */<br>(絎旇涓彁鍒扮殑Emulator涔熷彲浠ョ悊瑙f垚Device)<br>涓銆乤db鐨勪粙緇? <br>adb(Android Debug Bridge)鍖呮嫭涓変釜閮ㄥ垎錛?br>1)adb client, 榪愯鍦≒C涓婏紙涓篋DMS錛屽嵆IDE宸ヤ綔錛?br>2)adb daemon(瀹堟姢榪涚▼), 榪愯浜嶦mulator錛堜負涓嶦mulator涓殑VM浜や簰宸ヤ綔錛夛紱<br>3)adb server(鏈嶅姟榪涚▼), 榪愯鍦≒C錛堜換鍔$鐞嗗櫒涓婃湁錛夛紝綆$悊鐫adb client鍜宎db daemon鐨勯氫俊.server涓巆lient閫氫俊鐨勭鍙f槸鏄?037,<br>adb server浼氫笌emulator浜や簰鐨勶紝浣跨敤鐨勭鍙f湁涓や釜錛屼竴涓槸5554涓撻棬鐢ㄤ簬涓嶦mulator瀹炰緥鐨勮繛鎺ワ紝閭d箞鏁版嵁鍙互浠嶦mulator杞彂緇橧DE鎺у埗鍙頒簡錛屽彟涓涓垯鏄?555錛屼笓闂ㄤ笌adb daemon榪炴帴涓哄悗闈㈣皟璇曚嬌鐢ㄣ?br><br>PS:Emulator/Device鍗犵敤涓や釜錛堜竴緇勶級绔彛,涓涓負鍋舵暟鐨?554錛屼竴涓鏁扮殑5555銆?br>濡傛灉榪樺紑鍚叾浠栫殑Emulator錛屽垯浣跨敤鐨勫彟涓緇勭鍙f槸5556,5557錛屼竴鐩村埌5585.<br>adb server寮鍚椂灝辨槸閫氳繃鏌ユ壘5555-5585涔嬮棿绔彛鏉ュ緩绔嬩笌妯℃嫙鍣ㄧ殑榪炴帴鐨勶紝寤虹珛榪炴帴鍚庡氨鍙互鐢╝db鐨勭浉鍏沖懡浠や簡銆?br>濡傛灉鎮ㄥ畨瑁呬簡ADT灝卞熀鏈笉闇瑕乤db鐨勫懡浠や簡錛堝洜涓篋DMS浼氳皟鐢ˋDB榪涜閫忔槑鎿嶄綔錛?br><br>鍏充簬鏈満鐨勭鍙d嬌鐢ㄦ儏鍐靛彲浠ヤ嬌鐢╪etstat [-a] [-n]鏉ユ煡璇㈤獙璇佷竴涓嬨?br><br>浜屻佽瀵熶竴緇勬暟鎹細<br>1,鍦ㄥ紑鍚豢鐪熷櫒鏃舵湁涓浜涙墦鍗幫細<br>[2009-06-06 14:04:16 - Helloworld] Android Launch!<br>[2009-06-06 14:04:17 - Helloworld] adb is running normally.<br>[2009-06-06 14:04:17 - Helloworld] Performing com.android.hello.Helloworld activity launch<br>[2009-06-06 14:04:17 - Helloworld] Automatic Target Mode: Preferred AVD 'lab' is not available. Launching new emulator.<br>[2009-06-06 14:04:17 - Helloworld] Launching a new emulator with Virtual Device 'lab'<br>[2009-06-06 14:04:24 - Helloworld] New emulator found: emulator-5554<br>[2009-06-06 14:04:24 - Helloworld] Waiting for HOME ('android.process.acore') to be launched...<br>[2009-06-06 14:05:45 - Helloworld] HOME is up on device 'emulator-5554'<br>[2009-06-06 14:05:45 - Helloworld] Uploading Helloworld.apk onto device 'emulator-5554'<br>[2009-06-06 14:05:45 - Helloworld] Installing Helloworld.apk...<br>姣忎竴琛岄兘鍩烘湰琛ㄧず涓涓懡浠ゅ湪鎵ц錛宔mulator-5554鏄豢鐪熷櫒鐨勫垵濮嬬鍙d簡銆?br>鏈鍚庝竴鍙ョ瓑浜庡懡浠わ細adb -s emulator-5554 install helloworld.apk<br>濡傛灉鎶ヤ簡綾諱技浠ヤ笅鐨勯敊璇紝閭e緱錛堝姞涓?r錛夐噸瑁咃紝鍥犱負璇pp宸茬粡鍦ㄨEmulator涓嬭繍琛屼簡<br>DDM dispatch reg wait timeout<br>Can't dispatch DDM chunk 52454151: no handler defined<br>Can't dispatch DDM chunk 48454c4f: no handler defined<br>緗戜笂娌℃湁鐪嬪埌榪欎釜閿欒鍥犳欏轟究鎻愪笅瑙e喅鏂規硶錛歛db -s emulator-5554 install -r helloworld.apk<br><br>涓?浜嗚В涓婦DMS:(閮芥槸adb鐨勫懡浠ょ浉褰撶殑鍔熻兘)<br>DDMS鏈夊嚑涓晫闈細<br>1)Devices錛氬彲浠ユ煡鐪嬪埌褰撳墠榪愯鐨凟mulator鍜屽叾鍐呰繍琛岀殑搴旂敤<br>2)Emulator control錛屽嵆浠跨湡鍣ㄧ殑紜歡璁劇疆欏圭瓑錛?br>   璁劇疆褰撳墠娉ㄥ唽鐨勭綉緇滅姸鎬侊紙Home,Roaming,UnRegistered,Searching錛?br>   鏁版嵁涓氬姟鐨勯熷害璁劇疆錛氭湁GSM,GPRS,EDGE,UMTS,HSDPA(3.5G?)<br>   榪樻湁杞藉叆KML鎴朜MEA鏂囦歡鏉ユā鎷烥PS鏁版嵁<br>3)榪樺彲浠ユ煡璇hreads,Heap,File Explorer銆侀噸鍚痑db,鎶撳睆絳夛紝鍏朵粬閮芥槸鍦ㄨ皟鐢╝db銆?br><br>4)鍏充簬Logcat<br>浠嶹indows->Prereference->android->DDMS->Loggin Level榪涜璁劇疆鎵撳嵃絳夌駭錛?br>涓嶈繃榛樿涓嬪彧鎵撳嵃鍏ュ彛綰跨▼鐨勪俊鎭紝灝勯鍜孴api鐨勫姩浣滀俊鎭閫氳繃adb Logcat -b radio鎵撳紑,<br>os-events鐩稿叧鐨勬墦鍗伴氳繃adb logcat -b events.鎵撳紑錛?br>Log榛樿琚啓鍏ュ埌鎵嬫満鐨?data/anr/traces.txt鏂囦歡涓?br><br>鍥涳紝Debug闈㈡澘<br>榪欎釜闈㈡澘瀵逛簬鐔熸倝Eclipse鐨勭敤鎴鋒潵璇村簲璇ヤ笉鐢ㄧ湅浜嗐?br>閫氳繃浠ヤ笅涓夋灝嗚嚜宸辯殑搴旂敤鎴栧皢宸茬粡璺戣搗鏉ョ殑搴旂敤鍔犲叆璋冭瘯鍒楄〃錛?br>1)閫夋嫨Devices鍒楄〃涓璝our app,<br>2)閫夋嫨鑷櫕鎸夐挳灝嗚紼嬪簭鍔犺澆榪涜皟璇曠姸鎬?br>3)OK,鍔犳柇鐐瑰惂銆備笉榪囨簮浠g爜瑕佹渶鏂扮殑鍚﹀垯鏂偣涓嶈搗浣滅敤銆?br><br>浜斻丏DMS濡備綍璁㊣DE鐨勮皟璇曞伐浣滆搗鏉ュ憿錛?br>1)鏈夊嚑涓粍鎴?<br>涓涓槸adb(Android Debug Bridge)鍙傝冪涓閮ㄥ垎錛屽畠璧峰埌璋冭瘯妗ョ殑浣滅敤錛?br><br>鍙︿竴綾繪槸榪愯鍦―evice/Emulator绔殑adb daemon, VM, debugger, your Applicatioin錛?br>閫氳繃涓嬮潰鍙ヨ瘽灝卞彲浠ョ悊瑙e畠浠殑鍏崇郴錛?br>涓涓狝pp璺戝湪涓涓繘紼嬩腑錛岃繖涓繘紼嬪張琚竴涓猇M緇戝畾錛岄兘鏄竴瀵逛竴鐨勶紝浣哣M涓嶦mulator鏄劇劧鏄瀵逛竴鐨勶紝<br>閭h皟璇曟椂debugger浠嶸M涓嬁鍒版爤綰跨▼榪涚▼絳変俊鎭紝鑰宒aemon鐨勪綔鐢ㄤ粎浠呮槸琚獶DMS鐢ㄤ簬寤虹珛涓鏉¤繛鎺ワ紙鐪嬩笅闈級銆?br><br>鏈鍚庝竴綾誨垯鏄繍琛屽湪PC涓婄殑DDMS debugger錛?br>榪欎釜debugger鏄疘DE鐨勮皟璇曞櫒錛屼綘鍙互鏀規垚鍙︿竴涓皟璇曞櫒錛?br>DDMS鏄疍alvik Debug Monitor Service錛岃礋璐e緩绔嬭皟璇曠殑浣滅敤錛屽畠浠呮湁涓や釜Service錛屽叾浠栫殑鍔熻兘閮芥槸閫氳繃ADB client.璁㊣DE涓嶦mulator浜や簰璧鋒潵鐨勩?br><br>2)寮鍚疘DE鏃訛紝DDMS浼氬緩绔嬩竴涓狣evice monitoring service鐢ㄤ簬鐩戞帶Emulator,鍥犱負鍙互寮鍚涓狤mulator鍢涳紱<br>濡傛灉鎵懼埌涓涓狤mulator錛岄偅涔圖DMS鎵嶄細鍐嶅紑鍚彟涓涓猄ervice鍙玍M Monitoring Sevice鐢ㄤ簬鐩戞帶璇mulator涓嬬殑VM錛?絎竴閮ㄥ垎鎻愬埌adb鏈変笁涓儴鍒嗭紝鍏朵腑鐨刟db client鍙互澶氫釜瀹炰緥鐨勶紝DDMS鐨凷ervice閫氳繃浠嶢DB Client涓嶢Db server鐨勪氦浜掔粨鏋滄潵緇存姢鑷韓鐨勬暟鎹?br><br>濡傛灉VM Monitor鎵懼埌Emulator鐨勪竴涓猇M錛岄偅涔圖DMS浼氬埄鐢ˋDB鑾峰彇鐩爣VM鐨勮繘紼婭D, <br>鍚屾椂閫氳繃client涓巇aemon寤虹珛璧蜂笌vm鐨刣ebugger鐨勬柊榪炴帴錛屾敞鎰忔柊榪炴帴鐨勪氦浜掔鍙f槸浠?600寮濮嬬殑錛坣涓殑璇濈鍙f槸8659+n錛?榪欐潯鏂拌繛鎺ュ彲浠ヨDDMS鑾峰緱涓嶸M鐨勫疄闄呬氦浜掋?br><br>鍓╀笅鐨勫氨鏄疍DMS鎶婃嬁鍒扮殑鏁版嵁鍐嶆墧緇檌de 鐨?debugger(瀹冧滑涔嬮棿榛樿閫氳繃8700绔彛錛屽彲鏇存敼錛屽洜涓轟笌VM鐨勪氦浜掔鍙d粠8600寮濮嬩嬌鐢ㄧ殑璇濆彲鑳戒細涓嶅鐨?錛?br>榪欐牱IDE鐨凞ebug瑙嗗浘灝辮兘姝g‘宸ヤ綔浜?</p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/117404.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-06-08 18:28 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/06/08/117404.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Rom鐗堟湰 鍥轟歡 Radio SPL Recovery 鐨勬蹇?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/06/02/116970.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Wed, 02 Jun 2010 01:21:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/06/02/116970.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/116970.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/06/02/116970.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/116970.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/116970.html</trackback:ping><description><![CDATA[濡傛灉Android瑕佸嚭涓鏈功錛屽浜庤彍楦熶滑錛屾渶鏈闇瑕佷紶鎺堢殑灝辨槸榪欏嚑涓綣佸嚭鐜扮殑鍏抽敭瀛楋紒<br><br>Rom鐗堟湰榪樻槸鑳芥槑鐧芥槸鍟ユ剰鎬濈殑錛屽彲榪?<font color=#ff0000><strong>鍥轟歡</strong> </font><font color=#000000>鍒板簳鏄釜鍟ユ蹇靛憿錛熻鎬庝箞鏍峰幓鐞嗚В瀹冿紵</font><br><font color=#000000>鎴戞妸Radio錛孯om錛屽浐浠跺拰SPL榪樻湁Recovery榪欏嚑涓叧閿瓧鍦ㄨ鍧涗笂鎼滅儲浜嗕笅錛岀粨鍚堜簡</font><br><font color=#000000>璇鎬綅鐑績鏈哄弸鐨勫洖澶嶏紝鏁寸悊浜嗕笅瀵瑰畠浠殑鐞嗚В錛屼篃浣滀負鑷繁鐨勫涔犵瑪璁幫細</font><br><br><font color=#000000>1銆丷adio鍜孯om錛?/font><br><font color=#000000><font color=#444444>Radio綆鍗曠殑璇存槸鏃犵嚎閫氫俊妯″潡鐨勯┍鍔ㄧ▼搴忥紝ROM鏄郴緇熺▼搴忋俁adio</font></font><font color=#000000><font color=#444444>璐熻矗緗戠粶閫氫俊錛?/font></font><br><font color=#000000><font color=#444444>ROM鍜孯adio鍙互鍒嗗紑鍒鳳紝浜掍笉褰卞搷銆傚鏋滀綘鐨?a target=_blank><u><font color=#0066cc>鎵嬫満</font></u></a>鍒鋒柊浜哛OM鍚庢湁閫?/font></font><font color=#000000><font color=#444444>璁柟闈㈢殑闂</font></font><br><font color=#000000><font color=#444444>鍙互鍒鋒柊RADIO璇曚竴璇?/font></font><br><br>2銆佸浐浠訛細<br><strong><font color=#ff0000>鍥轟歡</font></strong>鐗堟湰鎸囩殑鏄郴緇熷唴鏍告湰鐗堬紝灝卞ソ鍍忥細XP緋葷粺鍜學IN7緋葷粺閲囩敤鐨勫唴鏍鎬笉涓鏍楓傜洰<br>鍓嶇殑鍥轟歡鐗堟湰搴旇灝辨槸鏈夛細1.5鍐呮牳錛?.6鍐呮牳錛?.0鍐呮牳浠ュ強2.1鍐呮牳鍚с傞樋鍏寸殑鐗堟湰<br>鎸囧緱鏄湪1.6鍐呮牳涓嬬殑ROM鐗堟湰錛屽氨濂藉儚鏄細XP闆ㄦ灄鏈ㄩ綰噣鐗堟垨XP鐣寗鐗堛傛墍浠ワ紝<br>闃垮叴ROM鐨勫叏紼嬮兘搴旇鏄?.6鍐呮牳銆傚錛氶樋鍏寸紪璇?.10鐗堟垨鑰匵XX鍐呮牳闃垮叴緙栬瘧XX鐗堛?br>鍛靛懙錛屽簲璇ユ槸榪欐牱浜嗐?br><br>3銆佷粈涔堟槸SPL<br>鈶?IPL 鑻辨枃鍏ㄧО鏄?InitialProgramLoader ,璐熻矗涓繪澘錛岀數婧愩佺‖浠跺垵濮嬪寲紼嬪簭銆佸茍鎶?SPL 瑁呭叆 RAM 銆侷PL 鎹熷潖浜嗗彲鎶婃墜鏈烘墧榪涙渤閲?鎴栬呴氳繃鎹㈠瓧搴撴潵瑙e喅.<br>鈶?SPL 鑻辨枃鍏ㄧО鏄?SecondProgramLoader ,“絎簩嬈$郴緇熻杞?#8221;錛屽氨鏄礋璐h杞?OS 鎿嶄綔緋葷粺鍒?RAM 涓傚彟澶?SPL 榪樺寘鎷澶氱郴緇熷懡浠わ紝濡?mtty 涓嬌鐢ㄧ殑鍛戒護絳夈?SPL 鎹熷潖浜嗚繕鍙互鐢ㄧ儳褰曞櫒閲嶅啓銆?br>SPL 涓鑸彁渚涜繖鍑犻儴鍒嗗姛鑳斤細媯嫻嬫墜鏈虹‖浠躲佸鎵劇郴緇熷惎鍔ㄥ垎鍖恒佸惎鍔ㄦ搷浣滅郴緇熶負緋葷粺鐨勫熀鏈淮鎶ゆ彁渚涙搷浣滅晫闈紝鍙互閫氳繃鏁版嵁綰夸笌鎿嶄綔緇堢錛堝 PC 錛夊緩绔嬭繛鎺ワ紝騫舵帴鍙楀拰鎵ц鐩稿簲鍛戒護銆傚畠閲岄潰鍖呭惈璁稿鍛戒護錛屽儚 r2sd,l,doctest (鍗遍櫓鍛戒護錛屼粬浼氭摝闄?gsmdata )絳夈傛垜浠父璇寸殑涓夎壊灞忓氨鏄敱 SPL 椹卞姩鐨勩傛嫻?SD 鍗★紝褰撲綘鎶婁竴浜涚壒孌婂埗浣滅殑 SD 鍗℃彃鍏ュ悗錛孲PL 鍙互鍦ㄥ惎鍔ㄦ椂鏍¢獙騫舵牴鎹?SD 鍗″唴瀹瑰埛鏈烘垨鎵ц涓浜涘懡浠ゃ傝繖鏈夌偣綾諱技浜?PC 鐨勪粠杞┍鍚姩銆?br><br>4銆佷粈涔堟槸Recovery錛屾湁浠涔堢敤錛?br>Recovery搴旇綆楁槸涓縐嶆ā寮忥紝鐞嗚ВRecovery錛屽彧瑕佺悊瑙d簡Recovery鏄共鍢涚敤鐨勫氨鍙互寰堝揩鏄庣櫧浜嗐?br>Android緋葷粺鍙互鍒╃敤<strong><font color=#ff0000>Recovery</font></strong>妯″紡錛岃繘琛屾仮澶嶅嚭鍘傝緗紝OTA鍗囩駭錛宲atch鍗囩駭鍙奻irmware<font color=#ff0000>錛堢‖浠朵笂闈㈢殑宓屽叆寮忕▼搴忥級</font>鍗囩駭絳夌瓑銆?br><br>綆璦涔嬶細<br><font color=#000000>Radio鏄礋璐f棤綰跨綉緇滈氳鐨勫姛鑳芥ā鍧楋紱</font><br><font color=#000000>Rom鐩稿綋浜庣數鑴戜笂鐨勬搷浣滅郴緇燂紱</font><br><font color=#000000>鍥轟歡鍒欐槸鎿嶄綔緋葷粺閲囩敤鐨勫唴鏍革紙Win7錛孹p錛學in98錛夛紱</font><br><font color=#000000>SPL涓昏璐熻矗Rom緋葷粺鐨勮杞藉鍏ワ紝鏇村鐨勬槸鍦ㄨ礋璐g‖浠舵柟闈㈢殑鎿嶄綔錛?/font><br><font color=#000000>Recovery妯″紡鍙互鐢ㄦ潵澶囦喚鎿嶄綔緋葷粺錛屼篃鍙互鐢ㄦ潵鍗囩駭鎿嶄綔緋葷粺浠ュ強鎭㈠鎿嶄綔緋葷粺鐨勭己鐪侀厤緗?/font> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/116970.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-06-02 09:21 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/06/02/116970.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>emulator: ERROR: system image file too large for device's hardware configuration (74 MB > 72 MB). 闂http://m.shnenglu.com/AutomateProgram/archive/2010/05/26/116421.html婕傛紓婕傛紓Wed, 26 May 2010 14:41:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/05/26/116421.htmlhttp://m.shnenglu.com/AutomateProgram/comments/116421.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/05/26/116421.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/116421.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/116421.html

婕傛紓 2010-05-26 22:41 鍙戣〃璇勮
]]>
Eclipse閲岀殑鏅鴻兘鎻愮ず錛堣漿錛?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/05/17/115619.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Mon, 17 May 2010 10:33:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/05/17/115619.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/115619.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/05/17/115619.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/115619.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/115619.html</trackback:ping><description><![CDATA[<p>鍘熸枃鍦板潃錛?a >http://blog.csdn.net/daizhenbest/archive/2007/02/14/1509708.aspx</a><br><br>Eclipse 3.1閲岀殑鏅鴻兘鎻愮ず鍔熻兘瀵逛簬鍐橨AVA紼嬪簭鍙堜笉璁板緱綾誨悕鍜屽嚱鏁扮殑浜烘潵璇存槸涓涓緢濂界殑鍔╂墜宸ュ叿錛屼絾鏄疎clipse閲岀殑鏅鴻兘鎻愮ず鐨勫揩鎹烽敭鏄疌trl+Space錛屽湪涓枃Windows鎿嶄綔緋葷粺涓畠紜槸鍒囨崲涓嫳鏂囪緭鍏ョ殑蹇嵎閿傝繖灝遍犳垚浜嗕袱鑰呯殑鍐茬獊錛屽鑷存鍔熻兘鍦‥clipse涓嬩笉鑳芥甯鎬嬌鐢ㄣ?br> <br>瑙e喅鏂規硶鏈変袱涓細<br> <br>1銆佹敼浜嗕腑鑻辨枃杈撳叆鍒囨崲蹇嵎閿紱<br> <br>2銆佸湪Eclipse -> Window -> Preferences鑿滃崟瀵硅瘽妗嗛塆eneral -> Keys錛屽湪鍙充晶view鍒楄〃妗嗛噷鎵懼埌Edit(Category), Content Assist (Command) Ctrl+Space(Key sequences)涓琛岋紝灝嗗搴旂殑蹇嵎閿敼鎴愪綘鎯寵鐨勫揩鎹烽敭銆?<br><br>3.灝唚hen璁劇疆涓篍dit Text</p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/115619.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-05-17 18:33 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/05/17/115619.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>android涓鍙栬仈緋諱漢鍜岄氳瘽璁板綍http://m.shnenglu.com/AutomateProgram/archive/2010/05/14/115340.html婕傛紓婕傛紓Fri, 14 May 2010 02:08:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/05/14/115340.htmlhttp://m.shnenglu.com/AutomateProgram/comments/115340.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/05/14/115340.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/115340.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/115340.htmlandroid 涓幏鍙栬仈緋諱漢

ContentResolver cr = getContentResolver();
        Cursor cursor = cr.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        while(cursor.moveToNext()){
         //get name
         int nameFiledColumnIndex = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME);
         String contact = cursor.getString(nameFiledColumnIndex);
         
            String[] PHONES_PROJECTION = new String[] { "_id","display_name","data1","data3"};//
            String contactId = cursor.getString(cursor.getColumnIndex(PhoneLookup._ID));
            Cursor phone = cr.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, PHONES_PROJECTION,
                                    ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId, null, null);
            //name type ..
            while(phone.moveToNext()) {
             int i = phone.getInt(0);
             String str = phone.getString(1);
             str = phone.getString(2);
             str = phone.getString(3);
            }
            phone.close();
            //addr
            Cursor addrCur = cr.query(ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_URI ,
        new String[]{"_id","data1","data2","data3"}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId , null, null);
            while(addrCur.moveToNext()) {
             int i = addrCur.getInt(0);
             String str = addrCur.getString(1);
             str = addrCur.getString(2);
             str = addrCur.getString(3);
            }
            addrCur.close();
           
            //email
            Cursor emailCur = cr.query(ContactsContract.CommonDataKinds.Email.CONTENT_URI ,
        new String[]{"_id","data1","data2","data3"}, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" + contactId , null, null);
            while(emailCur.moveToNext()) {
             int i = emailCur.getInt(0);
             String str = emailCur.getString(1);
             str = emailCur.getString(2);
             str = emailCur.getString(3);
            }
            emailCur.close();
           
        }
        cursor.close();

android涓幏鍙栭氳瘽璁板綍
String str = "";
        int type;
        long callTime;
        Date date;
        String time= "";
        ContentResolver cr = getContentResolver();
        final Cursor cursor = cr.query(CallLog.Calls.CONTENT_URI, new String[]{CallLog.Calls.NUMBER,CallLog.Calls.CACHED_NAME,CallLog.Calls.TYPE, CallLog.Calls.DATE}, null, null,CallLog.Calls.DEFAULT_SORT_ORDER);
        for (int i = 0; i < cursor.getCount(); i++) {  
            cursor.moveToPosition(i);
            str = cursor.getString(0);
            str = cursor.getString(1);
            type = cursor.getInt(2);
            SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
            date = new Date(Long.parseLong(cursor.getString(3)));
            time = sfd.format(date);
           }



婕傛紓 2010-05-14 10:08 鍙戣〃璇勮
]]>
Android Intent Action 澶у叏錛堣漿錛?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115092.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Tue, 11 May 2010 03:44:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115092.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/115092.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115092.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/115092.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/115092.html</trackback:ping><description><![CDATA[<span style="WIDOWS: 2; TEXT-TRANSFORM: none; TEXT-INDENT: 0px; BORDER-COLLAPSE: separate; FONT: medium Simsun; WHITE-SPACE: normal; ORPHANS: 2; LETTER-SPACING: normal; COLOR: rgb(0,0,0); WORD-SPACING: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px" class=Apple-style-span><span style="LINE-HEIGHT: 21px; FONT-FAMILY: arial; FONT-SIZE: 14px" class=Apple-style-span> <table style="BORDER-COLLAPSE: collapse; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px"> <tbody> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">ADD_SHORTCUT_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬湪緋葷粺涓坊鍔犱竴涓揩鎹鋒柟寮忋?</td> <td style="WORD-WRAP: break-word">"android.intent.action.ADD_SHORTCUT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">ALL_APPS_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬垪涓炬墍鏈夊彲鐢ㄧ殑搴旂敤銆?br>杈撳叆錛氭棤銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.ALL_APPS"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">ALTERNATIVE_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳鏄?activity 鏄敤鎴鋒鍦ㄦ祻瑙堢殑鏁版嵁鐨勪竴涓彲閫夋搷浣溿?/td> <td style="WORD-WRAP: break-word">"android.intent.category.ALTERNATIVE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">ANSWER_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬鐞嗘嫧鍏ョ殑鐢佃瘽銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.ANSWER"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">BATTERY_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬厖鐢電姸鎬侊紝鎴栬呯數姹犵殑鐢甸噺鍙戠敓鍙樺寲銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.BATTERY_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">BOOT_COMPLETED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬湪緋葷粺鍚姩鍚庯紝榪欎釜鍔ㄤ綔琚箍鎾竴嬈★紙鍙湁涓嬈★級銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.BOOT_COMPLETED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">BROWSABLE_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳兘澶熻嫻忚鍣ㄥ畨鍏ㄤ嬌鐢ㄧ殑 activities 蹇呴』鏀寔榪欎釜綾誨埆銆?/td> <td style="WORD-WRAP: break-word">"android.intent.category.BROWSABLE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">BUG_REPORT_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭樉紺?activity 鎶ュ憡閿欒銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.BUG_REPORT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">CALL_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭嫧鎵撶數璇濓紝琚懠鍙殑鑱旂郴浜哄湪鏁版嵁涓寚瀹氥?/td> <td style="WORD-WRAP: break-word">"android.intent.action.CALL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">CALL_FORWARDING_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳闊崇數璇濈殑鍛煎彨杞Щ鐘舵佸凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.CFF"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">CLEAR_CREDENTIALS_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭竻闄ょ櫥闄嗗嚟璇?(credential)銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.CLEAR_CREDENTIALS"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">CONFIGURATION_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳澶囩殑閰嶇疆淇℃伅宸茬粡鏀瑰彉錛屽弬瑙?Resources.Configuration.</td> <td style="WORD-WRAP: break-word">"android.intent.action.CONFIGURATION_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">Creator</td> <td style="WORD-WRAP: break-word">CREATOR</td> <td style="WORD-WRAP: break-word">鏃?/td> <td style="WORD-WRAP: break-word">鏃?/td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DATA_ACTIVITY_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱數璇濈殑鏁版嵁媧誨姩(data activity)鐘舵侊紙鍗蟲敹鍙戞暟鎹殑鐘舵侊級宸茬粡鏀瑰彉銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.DATA_ACTIVITY"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DATA_CONNECTION_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱數璇濈殑鏁版嵁榪炴帴鐘舵佸凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.DATA_STATE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭棩鏈熻鏀瑰彉銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.DATE_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DEFAULT_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬拰 VIEW_ACTION 鐩稿悓錛屾槸鍦ㄦ暟鎹笂鎵ц鐨勬爣鍑嗗姩浣溿?/td> <td style="WORD-WRAP: break-word">"android.intent.action.VIEW"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DEFAULT_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氬鏋?activity 鏄鏁版嵁鎵ц紜渷鍔ㄤ綔錛堢偣鍑? center press錛夌殑涓涓夐」錛岄渶瑕佽緗繖涓被鍒?/td> <td style="WORD-WRAP: break-word">"android.intent.category.DEFAULT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DELETE_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氫粠瀹瑰櫒涓垹闄ょ粰瀹氱殑鏁版嵁銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.DELETE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DEVELOPMENT_PREFERENCE_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳鏄?activity 鏄竴涓緗潰鏉?(development preference panel).</td> <td style="WORD-WRAP: break-word">"android.intent.category.DEVELOPMENT_PREFERENCE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">DIAL_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭嫧鎵撴暟鎹腑鎸囧畾鐨勭數璇濆彿鐮併?/td> <td style="WORD-WRAP: break-word">"android.intent.action.DIAL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">EDIT_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氫負鍒跺畾鐨勬暟鎹樉紺哄彲緙栬緫鐣岄潰銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.EDIT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">EMBED_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳兘澶熷湪涓婄駭錛堢埗錛塧ctivity 涓繍琛屻?/td> <td style="WORD-WRAP: break-word">"android.intent.category.EMBED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">EMERGENCY_DIAL_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭嫧鎵撶揣鎬ョ數璇濆彿鐮併?/td> <td style="WORD-WRAP: break-word">"android.intent.action.EMERGENCY_DIAL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">int</td> <td style="WORD-WRAP: break-word">FORWARD_RESULT_LAUNCH</td> <td style="WORD-WRAP: break-word">鍚姩鏍囪錛氬鏋滆繖涓爣璁拌璁劇疆錛岃屼笖琚竴涓凡緇忓瓨鍦ㄧ殑 activity 鐢ㄦ潵鍚姩鏂扮殑 activity錛屽凡鏈?activity 鐨勫洖澶嶇洰鏍?(reply target) 浼氳杞Щ緇欐柊鐨?activity銆?/td> <td style="WORD-WRAP: break-word">16 0x00000010</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">FOTA_CANCEL_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬彇娑堟墍鏈夎鎸傝搗鐨?(pending) 鏇存柊涓嬭澆銆?/td> <td style="WORD-WRAP: break-word">"android.server.checkin.FOTA_CANCEL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">FOTA_INSTALL_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭洿鏂板凡緇忚紜錛岄┈涓婂氨瑕佸紑濮嬪畨瑁呫?/td> <td style="WORD-WRAP: break-word">"android.server.checkin.FOTA_INSTALL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">FOTA_READY_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭洿鏂板凡緇忚涓嬭澆錛屽彲浠ュ紑濮嬪畨瑁呫?/td> <td style="WORD-WRAP: break-word">"android.server.checkin.FOTA_READY"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">FOTA_RESTART_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭仮澶嶅凡緇忓仠姝㈢殑鏇存柊涓嬭澆銆?/td> <td style="WORD-WRAP: break-word">"android.server.checkin.FOTA_RESTART"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">FOTA_UPDATE_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氶氳繃 OTA 涓嬭澆騫跺畨瑁呮搷浣滅郴緇熸洿鏂般?/td> <td style="WORD-WRAP: break-word">"android.server.checkin.FOTA_UPDATE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛歍o be used as code under test for framework instrumentation tests.</td> <td style="WORD-WRAP: break-word">"android.intent.category.FRAMEWORK_INSTRUMENTATION_TEST"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">GADGET_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳繖涓?activity 鍙互琚祵鍏ュ涓?activity (activity that is hosting gadgets)銆?/td> <td style="WORD-WRAP: break-word">"android.intent.category.GADGET"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">GET_CONTENT_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氳鐢ㄦ埛閫夋嫨鏁版嵁騫惰繑鍥炪?/td> <td style="WORD-WRAP: break-word">"android.intent.action.GET_CONTENT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">HOME_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氫富灞忓箷 (activity)錛岃澶囧惎鍔ㄥ悗鏄劇ず鐨勭涓涓?activity銆?/td> <td style="WORD-WRAP: break-word">"android.intent.category.HOME"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">INSERT_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬湪瀹瑰櫒涓彃鍏ヤ竴涓┖欏?(item)銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.INSERT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">INTENT_EXTRA</td> <td style="WORD-WRAP: break-word">闄勫姞鏁版嵁錛氬拰 PICK_ACTIVITY_ACTION 涓璧蜂嬌鐢ㄦ椂錛岃鏄庣敤鎴烽夋嫨鐨勭敤鏉ユ樉紺虹殑 activity錛涘拰 ADD_SHORTCUT_ACTION 涓璧蜂嬌鐢ㄧ殑鏃跺欙紝鎻忚堪瑕佹坊鍔犵殑蹇嵎鏂瑰紡銆?/td> <td style="WORD-WRAP: break-word">"android.intent.extra.INTENT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">LABEL_EXTRA</td> <td style="WORD-WRAP: break-word">闄勫姞鏁版嵁錛氬ぇ鍐欏瓧姣嶅紑澶寸殑瀛楃鏍囩錛屽拰 ADD_SHORTCUT_ACTION 涓璧蜂嬌鐢ㄣ?/td> <td style="WORD-WRAP: break-word">"android.intent.extra.LABEL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">LAUNCHER_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛欰ctivity 搴旇琚樉紺哄湪欏剁駭鐨?launcher 涓?/td> <td style="WORD-WRAP: break-word">"android.intent.category.LAUNCHER"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">LOGIN_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氳幏鍙栫櫥褰曞嚟璇併?/td> <td style="WORD-WRAP: break-word">"android.intent.action.LOGIN"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MAIN_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氫綔涓轟富鍏ュ彛鐐瑰惎鍔紝涓嶉渶瑕佹暟鎹?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MAIN"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIABUTTON_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱敤鎴鋒寜涓嬩簡“Media Button”銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIABUTTON"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_BAD_REMOVAL_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭墿灞曚粙璐紙鎵╁睍鍗★級宸茬粡浠?SD 鍗℃彃妲芥嫈鍑猴紝浣嗘槸鎸傝澆鐐?(mount point) 榪樻病瑙i櫎 (unmount)銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_BAD_REMOVAL"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_EJECT_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱敤鎴鋒兂瑕佺Щ闄ゆ墿灞曚粙璐紙鎷旀帀鎵╁睍鍗★級銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_EJECT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_MOUNTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭墿灞曚粙璐ㄨ鎻掑叆錛岃屼笖宸茬粡琚寕杞姐?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_MOUNTED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_REMOVED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭墿灞曚粙璐ㄨ縐婚櫎銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_REMOVED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_SCANNER_FINISHED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬凡緇忔壂鎻忓畬浠嬭川鐨勪竴涓洰褰曘?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_SCANNER_FINISHED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_SCANNER_STARTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬紑濮嬫壂鎻忎粙璐ㄧ殑涓涓洰褰曘?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_SCANNER_STARTED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_SHARED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭墿灞曚粙璐ㄧ殑鎸傝澆琚В闄?(unmount)錛屽洜涓哄畠宸茬粡浣滀負 USB 澶у閲忓瓨鍌ㄨ鍏變韓銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_SHARED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MEDIA_UNMOUNTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭墿灞曚粙璐ㄥ瓨鍦紝浣嗘槸榪樻病鏈夎鎸傝澆 (mount)銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MEDIA_UNMOUNTED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">MESSAGE_WAITING_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱數璇濈殑娑堟伅絳夊緟錛堣闊抽偖浠訛級鐘舵佸凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.MWI"</td> </tr> <tr> <td style="WORD-WRAP: break-word">int</td> <td style="WORD-WRAP: break-word">MULTIPLE_TASK_LAUNCH</td> <td style="WORD-WRAP: break-word">鍚姩鏍囪錛氬拰 NEW_TASK_LAUNCH 鑱斿悎浣跨敤錛岀姝㈠皢宸叉湁鐨勪換鍔℃敼鍙樹負鍓嶆櫙浠誨姟 (foreground)銆?/td> <td style="WORD-WRAP: break-word">8 0x00000008</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">NETWORK_TICKLE_RECEIVED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳澶囨敹鍒頒簡鏂扮殑緗戠粶 "tickle" 閫氱煡銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.NETWORK_TICKLE_RECEIVED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">int</td> <td style="WORD-WRAP: break-word">NEW_TASK_LAUNCH</td> <td style="WORD-WRAP: break-word">鍚姩鏍囪錛氳緗互鍚庯紝activity 灝嗘垚涓哄巻鍙插爢鏍堜腑鐨勭涓涓柊浠誨姟錛堟爤欏訛級銆?/td> <td style="WORD-WRAP: break-word">4 0x00000004</td> </tr> <tr> <td style="WORD-WRAP: break-word">int</td> <td style="WORD-WRAP: break-word">NO_HISTORY_LAUNCH</td> <td style="WORD-WRAP: break-word">鍚姩鏍囪錛氳緗互鍚庯紝鏂扮殑 activity 涓嶄細琚繚瀛樺湪鍘嗗彶鍫嗘爤涓?/td> <td style="WORD-WRAP: break-word">1 0x00000001</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PACKAGE_ADDED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳澶囦笂鏂板畨瑁呬簡涓涓簲鐢ㄧ▼搴忓寘銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PACKAGE_ADDED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PACKAGE_REMOVED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳澶囦笂鍒犻櫎浜嗕竴涓簲鐢ㄧ▼搴忓寘銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PACKAGE_REMOVED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PHONE_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱數璇濈姸鎬佸凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PHONE_STATE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PICK_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氫粠鏁版嵁涓夋嫨涓涓」鐩?(item)錛屽皢琚変腑鐨勯」鐩繑鍥炪?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PICK"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PICK_ACTIVITY_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氶夋嫨涓涓?activity錛岃繑鍥炶閫夋嫨鐨?activity 鐨勭被錛堝悕錛夈?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PICK_ACTIVITY"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PREFERENCE_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛歛ctivity鏄竴涓緗潰鏉?(preference panel)銆?/td> <td style="WORD-WRAP: break-word">"android.intent.category.PREFERENCE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PROVIDER_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭洿鏂板皢瑕侊紙鐪熸錛夎瀹夎銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PROVIDER_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">PROVISIONING_CHECK_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳姹?polling of provisioning service 涓嬭澆鏈鏂扮殑璁劇疆銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.PROVISIONING_CHECK"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">RUN_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氳繍琛屾暟鎹紙鎸囧畾鐨勫簲鐢級錛屾棤璁哄畠錛堝簲鐢級鏄粈涔堛?/td> <td style="WORD-WRAP: break-word">"android.intent.action.RUN"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SAMPLE_CODE_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛歍o be used as an sample code example (not part of the normal user experience).</td> <td style="WORD-WRAP: break-word">"android.intent.category.SAMPLE_CODE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SCREEN_OFF_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬睆騫曡鍏抽棴銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SCREEN_OFF"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SCREEN_ON_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬睆騫曞凡緇忚鎵撳紑銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SCREEN_ON"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SELECTED_ALTERNATIVE_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氬浜庤鐢ㄦ埛閫変腑鐨勬暟鎹紝activity 鏄畠鐨勪竴涓彲閫夋搷浣溿?/td> <td style="WORD-WRAP: break-word">"android.intent.category.SELECTED_ALTERNATIVE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SENDTO_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬悜 data 鎸囧畾鐨勬帴鏀惰呭彂閫佷竴涓秷鎭?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SENDTO"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SERVICE_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱數璇濇湇鍔$殑鐘舵佸凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SERVICE_STATE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SETTINGS_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭樉紺虹郴緇熻緗傝緭鍏ワ細鏃犮?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SETTINGS"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SIGNAL_STRENGTH_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱數璇濈殑淇″彿寮哄害宸茬粡鏀瑰彉銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SIG_STR"</td> </tr> <tr> <td style="WORD-WRAP: break-word">int</td> <td style="WORD-WRAP: break-word">SINGLE_TOP_LAUNCH</td> <td style="WORD-WRAP: break-word">鍚姩鏍囪錛氳緗互鍚庯紝濡傛灉 activity 宸茬粡鍚姩錛岃屼笖浣嶄簬鍘嗗彶鍫嗘爤鐨勯《绔紝灝嗕笉鍐嶅惎鍔紙涓嶉噸鏂板惎鍔級 activity銆?/td> <td style="WORD-WRAP: break-word">2 0x00000002</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">STATISTICS_REPORT_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳姹?receivers 鎶ュ憡鑷繁鐨勭粺璁′俊鎭?/td> <td style="WORD-WRAP: break-word">"android.intent.action.STATISTICS_REPORT"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">STATISTICS_STATE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱粺璁′俊鎭湇鍔$殑鐘舵佸凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.STATISTICS_STATE_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">SYNC_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭墽琛屾暟鎹悓姝ャ?/td> <td style="WORD-WRAP: break-word">"android.intent.action.SYNC"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">TAB_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳繖涓?activity 搴旇鍦?TabActivity 涓綔涓轟竴涓?tab 浣跨敤銆?/td> <td style="WORD-WRAP: break-word">"android.intent.category.TAB"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">TEMPLATE_EXTRA</td> <td style="WORD-WRAP: break-word">闄勫姞鏁版嵁錛氭柊璁板綍鐨勫垵濮嬪寲妯℃澘銆?/td> <td style="WORD-WRAP: break-word">"android.intent.extra.TEMPLATE"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">TEST_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氫綔涓烘祴璇曠洰鐨勪嬌鐢紝涓嶆槸姝e父鐨勭敤鎴蜂綋楠岀殑涓閮ㄥ垎銆?/td> <td style="WORD-WRAP: break-word">"android.intent.category.TEST"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">TIMEZONE_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭椂鍖哄凡緇忔敼鍙樸?/td> <td style="WORD-WRAP: break-word">"android.intent.action.TIMEZONE_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">TIME_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氭椂闂村凡緇忔敼鍙橈紙閲嶆柊璁劇疆錛夈?/td> <td style="WORD-WRAP: break-word">"android.intent.action.TIME_SET"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">TIME_TICK_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氬綋鍓嶆椂闂村凡緇忓彉鍖栵紙姝e父鐨勬椂闂存祦閫濓級銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.TIME_TICK"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">UMS_CONNECTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳澶囪繘鍏?USB 澶у閲忓瓨鍌ㄦā寮忋?/td> <td style="WORD-WRAP: break-word">"android.intent.action.UMS_CONNECTED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">UMS_DISCONNECTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氳澶囦粠 USB 澶у閲忓瓨鍌ㄦā寮忛鍑恒?/td> <td style="WORD-WRAP: break-word">"android.intent.action.UMS_DISCONNECTED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">UNIT_TEST_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氬簲璇ヨ鐢ㄤ綔鍗曞厓嫻嬭瘯錛堥氳繃 test harness 榪愯錛夈?/td> <td style="WORD-WRAP: break-word">"android.intent.category.UNIT_TEST"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">VIEW_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氬悜鐢ㄦ埛鏄劇ず鏁版嵁銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.VIEW"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">WALLPAPER_CATEGORY</td> <td style="WORD-WRAP: break-word">綾誨埆錛氳繖涓?activity 鑳借繃涓鴻澶囪緗綰搞?/td> <td style="WORD-WRAP: break-word">"android.intent.category.WALLPAPER"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">WALLPAPER_CHANGED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛氱郴緇熺殑澧欑焊宸茬粡鏀瑰彉銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.WALLPAPER_CHANGED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">WALLPAPER_SETTINGS_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭樉紺洪夋嫨澧欑焊鐨勮緗晫闈€傝緭鍏ワ細鏃犮?/td> <td style="WORD-WRAP: break-word">"android.intent.action.WALLPAPER_SETTINGS"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">WEB_SEARCH_ACTION</td> <td style="WORD-WRAP: break-word">鍔ㄤ綔錛氭墽琛?web 鎼滅儲銆?/td> <td style="WORD-WRAP: break-word">"android.intent.action.WEB_SEARCH"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">XMPP_CONNECTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛歑MPP 榪炴帴宸茬粡琚緩绔嬨?/td> <td style="WORD-WRAP: break-word">"android.intent.action.XMPP_CONNECTED"</td> </tr> <tr> <td style="WORD-WRAP: break-word">String</td> <td style="WORD-WRAP: break-word">XMPP_DISCONNECTED_ACTION</td> <td style="WORD-WRAP: break-word">騫挎挱錛歑MPP 榪炴帴宸茬粡琚柇寮銆?/td> </tr> </tbody> </table> </span></span><a href="file:///E:/Android%20study/android-sdk-windows/docs/reference/android/content/Intent.html"> <p style="FONT-FAMILY: Comic Sans MS; FONT-SIZE: 8pt"><br><span style="FONT-SIZE: 14pt">鍘熸枃鍦板潃錛?/span></a><a ><span style="FONT-SIZE: 14pt">http://apps.hi.baidu.com/share/detail/4516043</span></a><a href="file:///E:/Android%20study/android-sdk-windows/docs/reference/android/content/Intent.html"><br><span style="FONT-SIZE: 14pt">鏂囨。鍦細<br>file:///E:/Android%20study/android-sdk-windows/docs/reference/android/content/Intent.html</span></a> </p> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/115092.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-05-11 11:44 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115092.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>android涓紑鏈鴻嚜鍔ㄨ繍琛岀▼搴忥紙杞級http://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115077.html婕傛紓婕傛紓Tue, 11 May 2010 02:18:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115077.htmlhttp://m.shnenglu.com/AutomateProgram/comments/115077.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/05/11/115077.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/115077.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/115077.html
浠g爜瑙f瀽錛?

1銆佺晫闈ctivity錛歋ayHello.java

package com.ghstudio.BootStartDemo;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class SayHello extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


        TextView tv = new TextView(this);
        tv.setText("Hello. I started!");


        setContentView(tv);
    }
}

榪欐浠g爜寰堢畝鍗曪紝褰揂ctivity鍚姩鏃訛紝鍒涘緩涓涓猅extView錛岀敤瀹冩樉紺?Hello. I started!"瀛楁牱銆?

2銆佹帴鏀跺箍鎾秷鎭細BootBroadcastReceiver.java

package com.ghstudio.BootStartDemo;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class BootBroadcastReceiver extends BroadcastReceiver {

static final String ACTION = "android.intent.action.BOOT_COMPLETED";

@Override
public void onReceive(Context context, Intent intent) {
 
  if (intent.getAction().equals(ACTION)){
   Intent sayHelloIntent=new Intent(context,SayHello.class);
   sayHelloIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

   context.startActivity(sayHelloIntent);
  }
}

}

璇ョ被媧劇敓鑷狟roadcastReceiver錛岃杞芥柟娉昽nReceive涓紝媯嫻嬫帴鏀跺埌鐨処ntent鏄惁絎﹀悎BOOT_COMPLETED錛屽鏋滅鍚堬紝鍒欏惎鍔⊿ayHello閭d釜Activity銆?

3銆侀厤緗枃浠訛細AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.ghstudio.BootStartDemo"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".SayHello"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
  <receiver android:name=".BootBroadcastReceiver">
  <intent-filter>
    <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
  </receiver>
    </application>
    <uses-sdk android:minSdkVersion="3" />

   <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>

</manifest>

娉ㄦ剰鍏朵腑綺椾綋瀛楅偅涓閮ㄥ垎錛岃鑺傜偣鍚戠郴緇熸敞鍐屼簡涓涓猺eceiver錛屽瓙鑺傜偣intent-filter琛ㄧず鎺ユ敹 android.intent.action.BOOT_COMPLETED娑堟伅銆備笉瑕佸繕璁伴厤緗?android.permission.RECEIVE_BOOT_COMPLETED鏉冮檺銆?

寤朵幾鎬濊冿細鍦ㄥ鏁版儏鍐典笅錛岃鑷姩榪愯鐨勪笉鏄湁鐣岄潰鐨勭▼搴忥紝鑰屾槸鍦ㄥ悗鍙拌繍琛岀殑service銆傛鏃訛紝灝辮鐢╯tartService鏉ュ惎鍔ㄧ浉搴旂殑 service浜嗐?

浠g爜涓嬭澆

婕傛紓 2010-05-11 10:18 鍙戣〃璇勮
]]>
Android瀛︿範絎旇錛堜簩錛夛紙杞級http://m.shnenglu.com/AutomateProgram/archive/2010/05/10/115029.html婕傛紓婕傛紓Mon, 10 May 2010 12:54:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/05/10/115029.htmlhttp://m.shnenglu.com/AutomateProgram/comments/115029.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/05/10/115029.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/115029.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/115029.html鍘熸枃鍦板潃錛?a >http://blog.csdn.net/lihaifeng555/archive/2009/11/02/4757323.aspx
鍦ㄨ嫃鑱旂殑璋鋒瓕錛屼綘鐨勭晫闈㈠憟鐜?

鍦ㄧЩ鍔?UI 鏋舵瀯寮鍙戠殑娣鋒垬涓紝 Android 涓婂崌鍒伴浣嶃傚鏋滀綘鏈変竴浜涚Щ鍔ㄤ綋楠岋紝浣犱細鍙戠幇瀹冩槸涓涓?Java ME 鐨?Canvas / Screen 瀵硅薄鍜?BREW 鏋勫緩闃跺眰鐨勫畬緹庣粍鍚堬紝閫氳繃涓浜?XML 甯冨眬宸ュ叿鍚姩銆傛瘡欏規椿鍔ㄨ鏀劇疆鍦ㄥ睆騫曞爢鏍堬紝褰撳畠浠庢偍鐨勫簲鐢ㄧ▼搴忓惎鍔ㄣ?Android 鏄凡緇忚閰嶇疆澶勭悊鍏抽棴褰撳墠鐨勬椿鍔紝騫舵縺媧誨畠鐨勪笅涓涓椿鍔紝褰撲綘瑕佹眰鎴栧綋鐢ㄦ埛鎸変笅 Back 銆傛璁劇疆鍏佽鎮ㄨ涓烘瘡涓綔涓轟竴涓睆騫曞熀鍦版椿鍔ㄣ?

姣忎竴欏規椿鍔ㄩ兘鍙兘鍖呭惈涓嶅悓鐨勮鍥懼拰瑙嗗浘緇勫湪涓涓眰嬈℃爲銆備綘鍙互鎯沖儚榪欐牱涓涓甫鏈夎鍥劇粍鐨勬爲錛屽竷灞瀵硅薄浣滀負鏍戝共鍜屾爲鏋濓紙鍥犱負瑙嗗浘緇勫璞″彲浠ュ己鍒惰漿鎹㈡垚瀵硅薄錛夛紝灝嗚鍥炬垨閮ㄤ歡浣滀負鏍戝彾銆傚崟涓 view 錛屽湪鍏舵渶鍩烘湰鐨勫艦寮忥紝鏄竴涓彲浠ユ嫋鎷界殑鐭╁艦銆備竴涓鍥劇粍錛屽湪鍏舵渶鍩烘湰鐨勫艦寮忥紝鏄竴涓寘鍚竴涓垨澶氫釜瑙嗗浘鐨勫璞°傝繖涓璞″眰嬈$粨鏋勫厑璁告偍甯冪疆澶嶆潅鐨勭敤鎴風晫闈紝鑰屼笉蹇呯粡鍘嗚綆楄鍥劇煩褰㈠拰緇勫緩閲嶅彔鐨勯敊璇繃紼嬨傚鏋滐紝鍙︿竴縐嶆柟娉曪紝榪欑浜嬫槸浣犵殑琚嬪瓙錛?Android 灝嗛鍑虹殑鏂瑰紡錛岃鎮ㄥ憟鐜伴氳繃 Java ME 鏂規硶鎵嬬粯娓告垙鐢誨竷銆?

鍦ㄦ湰绔犱腑錛屼綘灝變細寮濮嬪熀鏈殑鍩轟簬 XML-based 灞忓箷甯冨眬錛岃漿縐誨埌鏇村鏉傜殑鑷畾涔夌敾甯冧笂緇樺埗銆備負浜嗘湰涔︼紝鎴戜細鍒嗚В騫惰璁鴻鍥句綔涓轟笁涓富瑕侀鐗╃兢錛?

Ø        XML-defined widgets/views and view groups 錛?鑹ソ鐨勫熀鏈俊鎭樉紺哄拰鑿滃崟

Ø        Android native views 錛?TextViews, LayoutGroups, ScrollBars, and text entry

Ø        Custom views 錛?娓告垙紼嬪簭鍛樻渶濂界殑鏈嬪弸

鎮ㄥ皢寮濮嬩竴涓ず渚嬬櫥褰曞睆騫曪紝騫舵搷綰靛拰閾鴻縐誨姩鍑洪儴浠跺拰浠g爜鐨勬剰瑙侊紝鏈緇堜嬌涓涓氦浜掑紡鍔ㄧ敾涓庤嚜瀹氫箟瑙嗗浘銆?

鏂逛究銆佸揩閫熺殑 XML 甯冨眬

棣栧厛錛屼嬌鐢?XML 鐨勫竷灞寮濮嬬湅浼肩畝鍗曪紝浣嗗畠浼氬緢蹇彉寰楀鏉傘傛偍灝嗗紑濮嬩笌浣犵殑甯冨眬鍜屽伐浣滄柟寮忓埌鐨勫悇涓厓绱犮?

甯冪疆

澶у XML 灞忓箷灝嗚灝佽鍦ㄤ竴涓竷灞瀵硅薄銆傚竷灞瀵硅薄鏉ュ湪璁稿涓嶅悓鐨勫彛鍛籌紝姣忎竴涓綘鐪嬬湅瀹炲湪鏄お蹇紝鐒跺悗媯鏌ヤ簡浠ヤ笅鍑犺妭綆鍗曠殑渚嬪瓙浜嗐?

娉ㄦ剰錛氬湪緙栬瘧鏃訛紝榪欎簺 XML 閰嶇疆鏂囦歡瑙f瀽鍜?Android 鍖呰鎴愪竴涓揣鍑戠殑浜岃繘鍒舵牸寮忋傝繖鏍峰彲浠ヨ妭鐪佽В鏋愬彲鎬曠殑鍚姩鏃墮棿涓婄殑鏁伴銆備絾鏄紝瀹冩剰鍛崇潃 XML 鏂囦歡鏃犳硶閫?榪囨偍鐨勪唬鐮佸湪榪愯鏃舵敼鍙樸傛洿鍏蜂綋鍦拌錛屾偍鍙互鍦ㄦ墽琛岃繃紼嬩腑鏀瑰彉榪欎簺 XML 鏂囦歡錛屼絾瀹冧細瀹屽叏娌℃湁搴旂敤紼嬪簭鐨勫竷灞銆傛澶栵紝鎮ㄥ繀欏繪敮浠樺じ澶т竴涓鍥炬垨浠?XML 瑙?鍥劇粍涓灝忔ц兘浠鋒牸銆傛偍鐨勯噷紼嬪彲鑳戒細鏍規嵁 CPU 璐熻澆鍜岀敤鎴風晫闈㈢殑澶嶆潅鎬с?

LinearLayout

鎵鏈夊厓绱犺鎺掑垪鎴愰掑噺鐨勫垪錛屼互鍦ㄤ竴涓粠涓婂埌涓嬫垨浠庡乏鍒板彸鐨勬柟寮忋傛瘡涓厓绱犲彲浠ユ湁閲嶅姏鍜屼綋閲嶇殑灞炴ц錛岃緗浣曞姩鎬佸闀垮拰緙╁皬錛屼互濉ˉ絀洪棿銆傚厓绱犺嚜宸辨帓鍒楁垚琛屾垨鍒楃殑鏍囩ず鍩轟簬鍙傛暟錛?android:orientation 銆?For example (see Figure 3-1):

<LinearLayout xmlns:android=

"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element One"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Two"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Three"

/>

</LinearLayout>

RelativeLayout

姣忎釜瀛愬厓绱犵殑甯冨眬鏄笌瀛愬厓绱犳湁鍏崇殑銆傝繖縐嶅叧緋葷殑寤虹珛浣垮緱鍦ㄤ笂涓涓瓙鍏冪礌緇撴潫鐨勫湴鏂瑰厓绱犳墠寮濮嬨傚瓙鍏冪礌鍙互鍙秹鍙婇偅浜涙墍鍒楀唴瀹圭殑闈㈠墠銆傚洜姝わ紝寤虹珛浠?XML 鏂囦歡寮濮嬪埌緇撴潫鐨勪緷璧栥傝娉ㄦ剰錛?ID 鏄渶瑕佺殑錛屼互渚塊儴浠跺彲浠ヤ簰鐩稿紩鐢ㄣ備緥濡傦紙瑙佸浘 3-2 錛夛細

<RelativeLayout xmlns:android=

"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

<TextView

android:id="@+id/EL01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element One"

/>

<TextView

android:id="@+id/EL02"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Two"

android:layout_below="@id/EL01"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Three"

android:layout_toRight="@id/EL02"

/>

</RelativeLayout>

AbsoluteLayout

姣忎釜瀛╁瓙鏈変竴涓竴涓壒瀹氱殑浣嶇疆錛屽繀欏誨湪鐖舵瘝甯冨眬瀵硅薄鐨勮寖鍥村唴銆?AbsoluteLayout 瀵硅薄鍙兘鏄渶瀹規槗寤虹珛鍜屽彲瑙嗗寲錛屼絾鏈闅捐縼縐誨埌鏂扮殑璁懼鎴栧睆騫曞昂瀵鎬笂銆備緥濡傦紙瑙佸浘 3-3 錛夛細

<AbsoluteLayout xmlns:android=

"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element One"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Two"

android:layout_x="30px"

android:layout_y="30px"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Three"

android:layout_x="50px"

android:layout_y="50px"

/>

</AbsoluteLayout>

TableLayout

TableLayout 鏄竴涓竷灞瀵硅薄錛屽厑璁告偍鎸囧畾琛ㄤ腑鐨勮銆?Android 璇曞浘瀹夋帓榪涘叆姝g‘鐨勮鍜屽垪鐨勬瘡涓涓瓙鍏冪礌銆備緥濡傦紙瑙佸浘 3-4 錛夛細

<TableLayout xmlns:android=

"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TableRow>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element One A"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element One B"

/>

</TableRow>

<TableRow>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Two A"

/>

<TextView

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Element Two B"

/>

</TableRow>

</TableLayout>

榪欎簺鏄富瑕佸竷灞瀵硅薄錛屼綘灝嗘潵浼氶亣鍒般傛瘡涓緥瀛愭湁鍑犱釜綆鍗曠殑 TextView 鍏冪礌錛屼負姣忕甯冨眬綾誨瀷紺鴻寖甯冨眬鎬庢牱璧蜂綔鐢ㄧ殑錛屽悓鏃朵竴騫呭睆騫曟崟鑾鋒瘡涓?XML 鏂囦歡灝嗗憟鐜般備綘鍙互鍦?Android 鐨勬枃浠舵洿褰誨簳鐨勫疄渚?http://code.google.com/android/samples/ApiDemos/src/com/google/android/samples/view/ 銆?
娉ㄦ剰錛氬鏋滄偍鏄Щ鍔ㄥ紑鍙戞柟闈㈢殑鏂版墜錛屽綋鍐沖畾濡備綍甯冪疆鎮ㄧ殑搴旂敤紼嬪簭鏃訛紝鎮ㄥ繀欏婚噸澶嶄綘鐨勫ご涓涓駭鍙抽摥錛?“ 縐繪錛岀Щ妞嶏紝縐繪銆?” 鐞嗘兂鎯呭喌涓嬶紝涓涓竷灞鐨勮璁″皢鎵鏈夊彲鑳界殑宸ヤ綔璁懼銆備簨瀹炰笂錛岃繖姘歌繙涓嶄細濂忔晥銆傚鏋滀綘榪愯搴旂敤鍦ㄥ涓數璇濅笂錛堝澶у鏁拌繍钀ュ晢瑕佹眰鎮ㄨ繖鏍峰仛錛夛紝灝嗛噸鐐規斁鍦ㄥ姩鎬佺殑錛岀浉瀵圭殑甯冨眬緇撴瀯銆傛垜淇濊瘉錛屼綘鐨勫睆騫曞ぇ灝忎粖鍚庡皢浠ヤ竴縐嶆垙鍓фх殑鏂瑰紡鍙樺寲銆傚噺灝戠粷瀵瑰?X/ Y 鐨勬暟閲忥紝騫朵繚鐣欓偅浜涗綘鍦ㄦ柟渚夸嬌鐢ㄦ壘鍒扮殑浣嶇疆 .

鎺ヤ笅鏉ョ殑浠誨姟鏄壘鍒版墍鏈夋斁緗湪涓涓竷灞鍏冪礌錛岀浉鍏沖瓙鍏冪礌鐨勫垪琛ㄣ傝繖縐嶈祫婧愭槸鍙互鍦ㄧ悍綣佸 鏉傝〃鏍?http://code.google.com/android/reference/android/R.styleable.html 錛?Menu 銆?

浠庨偅閲岋紝浣犲彲浠ュ皾璇曠涓涓?UI 浠誨姟錛氬湪涓?“ 紺句氦 ” 搴旂敤紼嬪簭鐨勭櫥褰曞睆騫曘傝繖鐧誨綍灞忓箷灝嗘垚涓?getSplashy 紺轟緥搴旂敤紼嬪簭鐨勪竴閮ㄥ垎銆?

 

婊氬姩銆佹枃瀛楄緭鍏ャ佹寜閽紝浠ュ強鎵鏈夊湪鐢熸椿綆鍗曠殑浜嬫儏

鐜板湪鏄椂鍊欎嬌鐢ㄥ竷灞鐨勪竴涓被銆?XML 鐨勫竷灞鏄畬緹庣殑錛屽湪鐢ㄦ埛杈撳叆錛屼俊鎭紶閫掞紝浠ュ強鍑犱箮浠諱綍灞忓箷鐨勫唴瀹規槸鐩稿闈欐佸湴鏂廣傛偍灝嗘坊鍔犱竴涓畝鍗曠殑鐧誨綍灞忓箷鏄劇ず鍓嶉潰鎻愬埌鐨?“ 紺句氦 ” 鐢寵琛紙瑙佷唬鐮佹竻鍗?3-1 錛夈傜涓欏逛換鍔℃槸鏉ユ弿榪板睆騫曠湅璧鋒潵鐨勬牱瀛愬湪涓涓柊鐨勮鍥句腑銆傛偍鍙互浣跨敤綰挎у竷灞錛屼嬌鎮ㄥ彲浠ュ彧鍨傜洿鍦版坊鍔犲皬宸ュ叿銆傦紙璇鋒敞鎰忥紝榪欎釜 XML 闇瑕?general_bg 鍥劇墖鍜屽0鏄庡瓧絎︿覆琚畾涔夊湪 res 鏂囦歡澶逛腑銆備負姝わ紝浠庢湁鍏寵緇嗕俊鎭紝 Apress 緗戠珯涓嬭澆璇ラ」鐩殑涓绔犮傦級

Code Listing 3-1. /res/layout/login.xml

<ScrollView xmlns:android=

"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:scrollbars="vertical">

<LinearLayout

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@drawable/general_bg"

<TextView

android:text="Login Screen"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textAlign="center"

/>

<TextView

android:text="Username:"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<EditText

android:id="@+id/username"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

<TextView

android:text="Password:"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

/>

<EditText

android:id="@+id/password"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

/>

<Button

android:id="@+id/loginbutton"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="Login"

/>

<TextView

android:id="@+id/status"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textAlign="center"

android:text="Enter Username and Password"

/>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/disclaimer"

/>

</LinearLayout>

</ScrollView>

鎴戝皢浠庡師鏉ョ殑鍒椾婦涓挙鍑轟竴浜涘叿浣撶殑綰挎潯騫朵笖瑙i噴浠栦滑鐨勪綔鐢ㄥ湪涓嬮潰閮ㄥ垎銆傛敞鎰忥紝浣犳病鏈夊畾涔夌粍鎴愯繖涓睆騫曞厓绱犵殑浠諱綍浣嶇疆銆備絾鏄紝鍥犱負鎮ㄤ嬌鐢ㄧ殑鏄?LinearLayout 瀵硅薄錛屾瘡涓繛緇殑鍏冪礌闄勫姞鍒頒互鍓嶇殑鍏冪礌鐨勫簳閮ㄣ?

Scrolling

婊氬姩涓涓秴榪囦綘璁懼灞忓箷澶у皬鐨勮鍥撅紝浣犲彧鏄渶瑕佸湪 ScrollView 涓皝瑁呬綘鐨勫竷灞瀵硅薄銆備負浜嗕嬌鐢ㄥ瀭鐩存粴鍔ㄦ潯錛屼綘鐨?ScrollView 蹇呴』璁劇疆鍙傛暟 android:scrollbars="vertical" 錛屽綋浣犲悜涓嬬炕灞忔椂錛屽皢鏄劇ず涓涓粴鍔ㄦ潯銆備負浜嗕嬌瑙嗗浘瓚沖闀夸互璇存槑榪欎釜瀵硅薄錛屾垜宸茬粡娣誨姞 TextView 浣滀負鍋囧0鏄庡湪綰挎у竷灞緇撴潫澶勩備綘浼氬彂鐜幫紝濡傛灉浣犺緗師鏉ョ殑 XML 涓烘椿鍔ㄨ鍥撅紝閲嶇偣灝嗘槸鍚戜笅縐誨姩鐨勫璞★紝鐩村埌鍒拌揪鐨勬寜閽紝姝ゆ椂婊氬姩鏉″皢澶勭悊閿拰鍚戜笅縐誨姩鐢ㄦ埛鏂囨湰鐨勫簳閮ㄣ?

 

紿ユ帰 TextView

涓や釜涓昏 “ 鏋勪歡 ” 宸ヤ綔鍦ㄥ師鏉?XML.

娉ㄦ剰錛氬湪 Android 涓殑涓涓皬閮ㄤ歡鏄寚浠諱綍鐙珛瑙嗗浘瀵硅薄鐨勫瓙綾匯?

涓轟簡鏍囬鍜屾枃鏈緭鍏ユ爣絳撅紝浣跨敤 TextView 瀵硅薄銆傚浜庣敤鎴鋒帶鍒剁殑鏂囧瓧杈撳叆錛屼嬌鐢?EditText 瀵硅薄銆傛渶鏄劇潃鐨勶紝鍥犳錛岀壒鍒煎緱璇︾粏鎻忚堪鐨勬槸鏈鍚庣殑 “status” 鐨勬枃鏈細

<TextView

android:id="@+id/status"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textAlign="center"

android:text=”Enter Username and Password”

/>

棣栧厛錛岀敱浜庢湰涔﹀唴瀹瑰皢琚慨鏀瑰湪鏌愪釜鏃跺欙紝閫氳繃浣犵殑浠g爜鍦ㄨ繍琛岀殑鏃跺欙紝鎵浠ヤ綘闇瑕佺粰瀹冧竴涓?ID 銆傝繖鍏佽鎮ㄤ嬌鐢?findViewById 鏂規硶鍚庤幏寰椼?

@+id/status 灝嗘坊鍔犲埌鎮ㄧ殑 ID 鐘舵佸湪 R.java 錛屽鏋滄枃浠朵笉瀛樺湪浜嗐傝繖涓鐐癸紝浣犵殑 IDE 鍙兘浼氶敊璇綋鎮ㄥ湪浠g爜涓紩鐢ㄥ畠絎竴嬈°備笉瑕佹儳鎬曪紝浣嗗洜涓烘槸絎竴嬈$紪璇戯紝灝嗗叏閮ㄨВ鍐充簡銆?

鎺ヤ笅鏉ワ紝鎮ㄧ敤 TextView 璁劇疆鍏跺搴﹁揪鍒板叾鐖剁被鐨勫搴﹀湪榪欑鎯呭喌涓嬶紝 LinearLayout 瀵硅薄銆備綘鍛婅瘔瀹冭瀹冪殑楂樺害鏄敱鏂囧瓧澶у皬鑼冨洿鍐呬嬌鐢ㄧ殑 layout_height 鍙傛暟 wrap_content 銆傛偍甯屾湜鏂囧瓧灞呬綇鍦ㄥ睆騫曠殑涓績錛屽洜姝ゆ偍浣跨敤 textAlign 錛屽洜涓轟綘宸茬粡璁劇疆鍏跺搴︿負鏁翠釜灞忓箷銆傛渶鍚庯紝鎮ㄧ粰瀹冧竴浜涚畝鍗曠殑鏂囧瓧鏄劇ず鍦ㄦ椿鍔ㄥ紑濮嬩簡銆傚悗鏉ワ紝浣犱細鏀瑰彉榪欎竴妗堟枃浠ュ弽鏄犲綋鍓嶇殑鐘舵併?

鐪嬪埌榪欎釜鎵嬭壓鐨勭粨鏋滐紝鍙渶鍒涘緩媧誨姩錛屽茍璁劇疆榪欎釜 XML 鐨勫竷灞鏄富瑕佸唴瀹硅鍥俱傛偍搴旇鑳藉鐪嬪埌灞忓箷涓婏紝鍦ㄦ枃鏈緭鍏ュ瓧孌電殑綾誨瀷錛屽茍閫夋嫨妗嗐傝繖浜涜鍔紝浣嗘槸涓嶄細鏈変換浣曠粨鏋溿備負閰嶅悎璇ヨ鍒掑皢浠栦滑錛岃浠栦滑浜掑姩浣犲氨蹇呴』緇х畫闃呰銆?

 

XML 鐨勫竷灞

鎴戜滑娣卞埢浣撲細浜?XML 鐨勫竷緗柟妗堟棦綆鍗曞張寮哄ぇ銆傚畠鎻愪緵浜嗕竴涓潪緙栫▼鎺ュ彛鐨勭Щ鍔ㄥ睆騫曞竷灞鍜岃璁°傚畠緇欏紑鍙戜漢鍛樻彁渚涗簡宸ュ叿鍘葷牬瑙f墦寮鍜屼慨鏀硅繍琛屾椂鐨勯琛岃繖浜涘鹼紝浣犱細鍋氭帰璁ㄥ浣曠浉浜掍綔鐢ㄧ幇鍦?Android 鐨勫唴緗儴浠躲?

鍞ら啋鏋勫緩

鎴戝凡緇忚鏄庝簡濡備綍浣跨敤 Android 鐨?TextView 錛?button 鍜?EditText 閮ㄤ歡銆備絾濡備綍鏈夌敤鐨勬槸涓涓枃鏈緭鍏ュ瓧孌碉紝濡傛灉浣犱笉鑳芥憚鍙栦綘鐨勭敤鎴峰凡緇忚繘鍏ワ紵 榪欐槸涓涓弽闂紝涓嶈鍥炵瓟錛屾垜涓嶈兘鍚綘錛堟垜甯屾湜錛夈傜瓟妗堟槸鏄捐屾槗瑙佺殑錛氭病鏈夌洰鐨勫拰緇撴灉鏂囨湰杈撳叆鏄病鏈夌敤澶勭殑銆傝璁塊棶鎮ㄧ殑 EditText 閮ㄤ歡鍏堝墠瀹氫箟鐨勫唴瀹癸紝浣犲氨蹇呴』鍋氫袱浠朵簨錛?

1 銆傝幏鍙栦竴涓偍鍦?XML 瀹氫箟閮ㄤ歡鐨勫璞″彞鏌勩?

2 銆傜洃鍚偣鍑繪垨閫夋嫨浜嬩歡鍦?Login 鎸夐挳閮ㄤ歡涓娿?

鑾峰彇鐨勪簨鎯呭彞鏌?

絎竴涓換鍔″氨鏄緱鍒頒竴涓湪鎮ㄧ殑 XML 閰嶇疆鏂囦歡涓畾涔夌殑鍏冪礌鎸囬拡銆傝鍋氬埌榪欎竴鐐癸紝浣犱細紜繚鎮ㄨ璁塊棶鐨勬瘡涓?XML 閮ㄤ歡鏈変竴涓?Android 錛?ID 鍙傛暟銆傛濡傚墠闈㈢畝鍗曟彁鍒幫紝浣跨敤絎﹀彿 @+id/-id_name_here- 灝嗙‘淇濇偍鐨?R.java 鏂囦歡鏈変綘闇瑕佺殑 ID 銆備互涓嬫槸濡備綍鑾峰緱涓涓鍥懼璞℃寚閽堬紝褰撴偍鐨勫簲鐢ㄧ▼搴忓惎鍔ㄦ椂銆傚湪鏂扮殑鐧誨綍媧誨姩涓紝榪欐槸 OnCreate 鏂規硶錛岃娣誨姞鍒?GetSplashy 紺轟緥搴旂敤紼嬪簭錛?

Button btn = null;

public void onCreate(Bundle args)

{

super .onCreate(args);

setContentView(R.layout.login );

btn = (Button) findViewById(R.id.loginbutton );

}

鍦ㄨ繖閲岋紝鎮ㄥ凡緇忚幏寰椾簡鐧誨綍鎸夐挳鐨勬寚閽堬紝閫氳繃璋冪敤 findViewById 銆傝繖浣挎偍娣誨姞鍗曞嚮鐩戝惉錛屼細閫氱煡鎮ㄥ綋鎸夐挳琚変腑錛堝湪鎵嬪啓絎旇Е鎽稿睆錛夋垨閫夊畾涓績杞敭銆傛偍灝嗘墿灞?ClickListener 綾葷殑鍐呰仈鍑芥暟濡備笅錛?

public class loginScreen extends Activity

{

private OnClickListener buttonListener =

new OnClickListener()

{

public void onClick(View v)

{

grabEnteredText();

}

};

...

}

褰撲竴涓夋嫨閫氱煡鍙戠敓錛屼互鍓嶇殑鍐呰仈鍑芥暟瀹氫箟璋冪敤 grabEnteredText 鏂規硶銆傜幇鍦ㄤ綘宸茬粡瀹氫箟鐨勭偣鍑諱睛鍚櫒錛屾偍鍙互浣跨敤 btn 瀵硅薄鍦?OnCreate 鏂規硶涓細

public void onCreate(Bundle args)

{

//...

btn = (Button) findViewById(R.id.loginbutton );

btn.setOnClickListener(buttonListener);

}

濡傛灉鎮ㄦ斁鏂偣鎮ㄧ殑鎸夐挳鐩戝惉鐨?onClick 鏂規硶涓紝鏂偣寮鐏綋鎮ㄧЩ鍔ㄧ劍鐐瑰茍閫夋嫨鐧誨綍鎸夐挳錛屽綋鎮ㄧ敤榧犳爣鐐瑰嚮瀹冨湪榪愯妯℃嫙鍣ㄤ腑銆?

緙笣鍦ㄦ枃鏈?

鐜板湪鍓╀笅瑕佸仛鐨勫氨鏄畾涔?grabEnteredText 鏉ュ仛鍒拌繖鐐癸紝姝e瀹冨悕瀛楃殑鍚箟銆傚湪鐧誨綍灞忓箷鐨勬渶緇堜駭鍝佺殑鐗堟湰錛屾偍瑕佹彁鍙栬緭鍏ョ殑鏂囨湰錛屽紑濮嬩竴涓綉緇滅櫥褰曠殑璋冪敤錛屽彂鍔ㄤ竴涓澆鍏ュ璇濇銆傜幇鍦紝浣犲彧鏄劇ず涓涓璇濇錛屽寘鍚湪鐧誨綍鍚嶅拰瀵嗙爜鍩熶腑杈撳叆鐨勫唴瀹廣備笅闈?grabEnteredTex 鐨勬牱瀛愬湪鏇存柊鐨勭櫥褰曟椿鍔細

public void grabEnteredText()

{

//Get a pointer to the status text

TextView status =

(TextView) findViewById(R.id.status );

//Grab handles to both text-entry fields

EditText username =

(EditText) findViewById(R.id.username );

EditText pwd =

(EditText) findViewById(R.id.password );

//Extract Strings from the EditText objects

// and format them in strings

String usrTxt = username.getText().toString();

String pwdTxt = pwd.getText().toString();

//HTTP transaction would spin up a

//new thread here

status.setText("Login" + usrTxt + " : " + pwdTxt);

//Show dialog box that would eventually turn into

this .showAlert("Login Data", 0, "Login"

+ usrTxt + " : " + pwdTxt, "ok!", false );

}

 

棣栧厛錛屼嬌鐢?findViewById 錛屼負浜?status 銆?username 銆?password 閮ㄤ歡錛屾偍媯绱?TextView 鍜?EditText 鎸囬拡銆傛帴涓嬫潵錛屾偍鎻愬彇 Text-Entry 鏋勫緩鐨勫唴瀹歸氳繃媯绱?TextEntry 瀵硅薄錛屽茍灝嗗叾杞崲鎴?String 綾匯傛渶鍚庯紝浣犳妸涓や釜瀛楁鐨勫唴瀹瑰湪涓璧鳳紝浠栦滑閮藉姞鍏ュ埌鐘舵佹枃鏈璞★紝騫跺脊鍑轟竴涓璇濇榪樺寘鍚袱涓瓧絎︿覆銆?
榪欏氨鏄畠 鈥斺?鐜板湪鍏佽鐢ㄦ埛杈撳叆鏂囧瓧錛屼綘鑾峰彇銆佹搷綰碉紝鐢氳嚦鏄劇ず涓涓璇濇鍖呭惈浜嗚淇℃伅銆傚共寰楀ソ錛佽姳涓縐掗挓杞繪媿鑷繁鍦ㄨ儗鍚庯紝鎴栦換浣曡兂鑶婂彲浠ユ嫎鐫鐨勫湴鏂廣?
鍒扮洰鍓嶄負姝紝鎮ㄦ帰璁ㄥ浣曚嬌鐢?XML 鏉ュ仛灞忓箷璁捐錛屼粎浠呬嬌鐢?“ 紺句氦 ” 鐢婚潰灞忓箷銆傛鏃訛紝浣犲凡緇忓浼氫簡濡備綍浣跨敤涓や釜鐨勬販鍚堜綋鍦ㄦ偍鐨勭櫥褰曞睆騫曘傛渶鍚庝竴绔欏叧浜?Android 閮ㄤ歡琛ㄨ揪錛屽氨闇瑕佸崟鐙嬌鐢ㄤ唬鐮佸緩绔嬪睆騫曞竷灞鐨勩?

Java 鐨勯儴浠?

褰撲綘鐪嬪埌鎴戝啓鐨勪唬鐮佷駭鐢熷嵆浣挎槸寰堝皬鐨勯夋嫨鑿滃崟錛屼綘鍙兘浼氬儚鎴戯紝鏈夌偣鍚撳憜浜嗐傜瓑鍒扮啛鎮夌殑 XML 鐨勫睆騫曞竷灞錛岃瘯鍥捐嚜宸辯敤 java 鍔ㄦ墜瀹屾垚榪欎竴鍒囷紝浼氭劅瑙夊儚鏄敤涓瀵圭牬鎹熺殑淇濋緞鐞冩紨濂忓彜鍏擱煶涔愩傝璀﹀憡錛屽畠娑夊強璁稿鎵撳瓧錛屾垨璁鎬笉浠呬粎鏄竴鐐規尗鎶樸?

鍙︿竴鏂歸潰錛屽彲鑳芥湁涓涓敤鎴風晫闈㈠竷灞鐨勫叿浣撳厓绱狅紝浣犺鍔ㄦ佽皟鏁淬傚洜涓烘濡傛垜鍓嶉潰鎻愬埌鐨勶紝鎮ㄤ笉鑳藉湪搴旂敤紼嬪簭榪愯鏃剁紪杈?XML 鏂囦歡鐨勫竷灞錛屽畠蹇呴』鏈夐渶瑕佷慨鏀規瘡涓涓敤鎴風晫闈㈢殑浠g爜鍦ㄨ繍琛屾椂鍙兘鐗囨柇鐨勫伐鍏楓?Android 緇欎綘榪欎釜鍔ㄥ姏錛屽彧瑕佷綘鏄垝閫傜殑鎵撳瓧浠ユ儕浜洪熷害銆?
寮曟搸鐩栦笅浣跨敤

鐜板湪鎮ㄥ彲浠ュ湪寮曟搸鐩栦笅寮濮嬪皬灝忕殑淇ˉ錛岀敤鏈鍩烘湰銆佹渶鐩磋寮忕殑鏂規硶媯楠?Android 鐨勬瀯寤恒備綘宸茬粡浜嗚В涓涓牳蹇冮儴鍒嗙殑鍩烘湰澶栬錛屽叾涓澶氭槸鎮ㄥ湪 XML 褰㈠紡鎺㈣銆傛濡傚湪鍓嶉潰鐨勪緥瀛愪腑錛屼負浜嗚鏄庤搗瑙侊紝鎴戝皢淇濇寔榪欑鍩烘湰銆傛垜宸茬粡鍦ㄨ繖閲岃璁虹殑鐣岄潰甯冨眬錛屽畠搴旇寰堝鏄撳浠ヨ嚧搴旂敤鍒版洿澶嶆潅鐨勯棶棰樸傚湪鍚庢潵錛屾洿澶氱殑楂樼駭渚嬪瓙錛屼綘浼氳幏寰楁洿澶氱殑鍏朵粬 Android 閮ㄤ歡銆傚湪涓嬮潰鐨勪緥瀛愪腑錛屾垜灝嗗敖鍔涚‘淇濅嬌鐢ㄥ緢灝戜綘浠庡墠渚濊禆娌℃湁鐨?XML 鍏冪礌銆傚畠搴旇緇欎綘涓涓満浼氾紝鑾峰緱鑹ソ鐨勫鐞嗛潪 XML 甯冨眬錛屼絾瑕佽浣忥紝瀹為檯涓婏紝浣犲繀欏繪槸鐤媯鐨勫仛鎵鏈夌殑鐢ㄦ埛鐣岄潰錛岃繖縐嶆柟寮忋?

涓昏彍鍗?

鍑犱箮鎵鏈夌殑縐誨姩搴旂敤錛岃嚦灝戝湪鍙戣鏃訛紝棣栧厛鏄浘褰富鑿滃崟銆傝繖涓浘褰㈠睆騫曞紩瀵肩敤鎴鋒墽琛岀Щ鍔ㄥ簲鐢ㄧ殑鍚勭鍔熻兘銆傚洜涓?“ 涓昏彍鍗?” 鐨勬蹇墊槸濡傛鏅亶鐨勭Щ鍔ㄥ簲鐢ㄤ綋楠岋紝瀹冧嬌涓涓緢濂界殑鍜屽疄闄呯殑妗堜緥鐮旂┒銆傚湪榪欎釜渚嬪瓙涓紝浣犵殑鐩爣鏄皢涓涓畝鍗曞姛鑳戒富鑿滃崟鐨勬斁鍦ㄤ竴璧楓備負浜嗕究浜庢瘮杈冿紝浣犱細浣跨敤鍏朵粬鐨勭嚎鎬у竷灞錛?鎶婁竴鍒囪瀺鍚堝湪涓璧楓傝繖涓緥瀛愬皢寤虹珛鍦ㄤ笁涓富瑕侀樁孌碉細

1 銆傚竷灞錛氫綘浼氬湪灞忓箷涓婃紜湴瀹夋帓鎵鏈夌殑涓昏彍鍗曢」銆傚綋鐒訛紝榪欏皢鍙嬌鐢?Android 鐨勫ぇ灞忓箷鐗堥潰涓婄殑涓灝忛儴鍒嗐備絾鏄紝澶у鏁板簲鐢ㄧ▼搴忚彍鍗曞皢浣跨敤澶у瀷鍥懼艦錛屾壙鎷呯潃鏇村鐨勭┖闂淬?

2 銆傜劍鐐癸細鎮ㄩ渶瑕佸緩绔嬩竴涓劍鐐圭粨鏋勶紝浣跨敤鎴峰彲浠ラ氳繃鍏冪礌縐誨姩銆傚綋鐒︾偣縐誨姩鏃訛紝浣犲繀欏昏皟鏁存瘡涓彍鍗曞厓绱犵殑棰滆壊銆?

3 銆傞夋嫨媧誨姩錛氭渶鍚庯紝鎮ㄩ渶瑕佸緩绔嬩竴涓洃鍚紝浠ヤ究褰撲竴涓厓绱犺閫変腑鎴栧崟鍑伙紝浣犵煡鎯呭拰鍙互鍦ㄩ夊畾鐨勯」鐩熀紜涓婇噰鍙栭傚綋琛屽姩銆?

褰撴偍瀹屾垚鎵鏈夎繖浜涗換鍔$殑涓変釜錛屼綘搴旇鏈夊緩绔嬩富瑕佽緭鍏ュ睆騫曠殑妗嗘灦錛岃繖澶х害鍗犳暣涓Щ鍔ㄥ簲鐢ㄧ殑鐧懼垎涔?80 鐨勫伐浣溿傝櫧鐒朵笉瀹屽叏鐜板疄錛堝嵆錛屾垜宸茬粡瀹屽叏浣跨敤 XML 鐨勯浂錛夛紝瀹冩槸鏋佸ソ紺鴻寖錛屽浣曞仛浜嬫儏浠ヨ嚜瀹氫箟榪愯鏃剁殑椹卞姩鏂瑰紡銆傚綋鎮ㄦ坊鍔犳洿澶氱殑鍔熻兘鍦ㄤ綘鐨?“ 紺句氦 ” 搴旂敤紼嬪簭涓紝鎮ㄥ~鍐欐涓昏彍鍗曞皢鏇村姞瀹屽杽銆?

甯冨眬錛?Java 椋庢牸

鍦ㄧ畝鍗曚富鑿滃崟涓婄殑絎竴姝ユ槸寰楀埌鎵鏈夊湪灞忓箷涓婄殑鑿滃崟鍏冪礌銆傛濡傛垜鍒氭墠鎵璇達紝浣犲皢閲囩敤綰挎у竷灞瀹屾垚瀹冦傛偍闇瑕佸湪鐢寵鍓嶅仛榪欎竴鍒囨彁璇風涓嬈★紝鎵浠ュ氨蹇呴』鍦ㄦ柊鐨?MainMenu 媧誨姩鐨?OnCreate 鏂規硶涓?錛堣鍙傞槄絎?1 绔狅紝濡傛灉浣犲繕璁頒簡濡備綍鍒涘緩騫舵彃鍏ヤ竴涓柊鐨勬椿鍔ㄣ傦級浠g爜娓呭崟 3-2 鏄劇ず浜嗗畠鐨勫疄渚嬪寲鍜岄厤緗殑妯℃牱銆?

LinearLayout layout = new LinearLayout(this );

layout.setBackground(R.drawable.general_bg );

layout.setOrientation(LinearLayout.VERTICAL );

layout.setLayoutParams(

new LayoutParams(LayoutParams.FILL_PARENT ,

LayoutParams.FILL_PARENT ));

setContentView(layout);

涔嬪悗錛屾偍閫氳繃浠涔堣縿浠婁負姝紝榪欏湪姒傚康涓婁技涔庡簲鐔熸倝銆傛偍鍙互璁劇疆鑳屾櫙浣跨敤鍦?/res/drawable/ 鏂囦歡澶逛腑鐨勫浘鐗囷紝璁劇疆綰挎у竷灞涓哄瀭鐩存柟鍚戯紝騫惰緗?LayoutParams 浠ュ~琛ョ埗浜詫紙鍦ㄨ繖縐嶆儏鍐典笅錛岀埗浜叉槸媧誨姩錛屾帶鍒跺叏灞忓箷錛夈傚竷灞鍙傛暟錛屽湪浠栦滑鐨勫熀鍦幫紝蹇呴』鐣屽畾瑙勫畾閮ㄤ歡鐨勯珮搴﹀拰瀹藉害銆傛濡傛偍鍚庢潵鍙兘浼氬彂鐜幫紝鍦ㄥ墠甯冨眬鍙傛暟璁劇疆涔嬪墠璇曞浘鏀懼叆涓涓儴浠跺湪 ViewGroup 閲岋紝灝嗘姏鍑轟竴涓紓甯搞備絾鏄紝鐜板湪浣犳湁涓涓竷灞瀵硅薄鏉ュ~鍏咃紝浣犲彲浠ュ紑濮嬪緩绔嬩簡灞忓箷銆?

娣誨姞鏍囬

鎺ヤ笅鏉ワ紝娣誨姞涓涓畝鍗曠殑鏍囬錛屽湪浣犵殑涓昏彍鍗曠敾闈笂鏂瑰皢涓烘湰銆備唬鐮佹竻鍗?3-3 鏄劇ず鐨勪唬鐮佸潡錛屾偍闇瑕佸畠銆?

Code Listing 3-3. Adding the Title

TextView title = new TextView(this );

title.setText(R.string.man_menu_title );

title.setLayoutParams(

new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.FILL_PARENT ,

LayoutParams.WRAP_CONTENT ));

title.setAlignment(Alignment.ALIGN_CENTER );

layout.addView(title);

鍒涘緩鏂囨湰瀵硅薄錛屽茍璁劇疆鏂囨湰鍦?/res/values/strings.xml 涓?銆傛垜鐭ラ亾鎴戣鎴戜笉浼氱敤浠諱綍 XML 錛屼絾鎴戞亹鎬曟垜浼氬姝ゆ湁浜涙拻璋庛傚湪寮鍙戜腑錛屾偍闇瑕佸皢鎵鏈夌殑瀛楃涓茬Щ鍒拌繖涓綅緗紝鑰屼笉鏄湪浠g爜涓畾涔夈傚鏋滀綘鐨勫鎴鋒槸鍍忔垜榪欐牱錛屼綘灝變笉浼氭兂鎷変綘鐨勬簮浠g爜緙栬緫鍣ㄥ茍閲嶆柊緙栬瘧姣忔浠栦滑鎯蟲敼鍙樺 screens.Now 涔嬩竴鐨勬帾璇嶏紝浣犳湁涓涓爣棰橈紝鏄椂鍊欐坊 鍔犳洿澶氭湁瓚g殑鍜岀Н鏋佺殑鑿滃崟鍏冪礌銆?
閾鴻鑿滃崟欏?
鐜板湪鎮ㄥ彲浠ユ坊鍔犲崟涓彍鍗曞厓绱犮傚洜涓鴻繖灝嗘槸絎竴涓湪鐩稿綋閲嶅錛屾垜灝嗘彃鍏ュ拰瑙i噴鐨勭涓涓厓绱狅紝浣嗗叾浣欑殑鐣欑粰浣犵殑浣犺嚜宸辯殑璁懼銆傞殢鎰忔姄鍙栧湪 Apress 緗戠珯鐨勫畬鏁撮」鐩紝鐪嬪埌鑿滃崟欏逛紤鎭傚悓鏍峰湴錛屼綘浼氬~琛ヤ粬浠洿涓烘偍閫氳繃 Android 瑕佺礌鍚勫湴鐨勫彂灞曘?
浠g爜娓呭崟 3-4 鏄劇ず鐨勪唬鐮佹坊鍔犲崟涓彍鍗曢」銆?

Code Listing 3-4. Adding a Menu Item

TextView ItemOne = new TextView(this );

ItemOne.setFocusable(true );

ItemOne.setText("Login Screen");

ItemOne.setTextColor(Color.WHITE );

ItemOne.setLayoutParams(

new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.FILL_PARENT ,

LayoutParams.WRAP_CONTENT ));

//Give the menu item an ID for tracking reasons.

//The ID is a static int defined locally to the class

ItemOne.setId(IdOne );

//Add it to our linear layout

layout.addView(ItemOne);

 

澶╁摢錛屼綘鍙兘璁や負鍦ㄤ粩緇嗛槄璇諱唬鐮侊紝榪欑湅璧鋒潵灝卞儚浣犲凡緇忔坊鍔犳爣棰樸備綘瀹屽叏姝g‘錛屽涔堣仾鏄庣殑 you.The 鐨勪竴涓璞℃椂琛ㄦ槑鐨勭劍鐐規槸錛屽綋瀹冭閫変腑綣侀噸榪樻病鏈夊埌錛屾墍浠ヤ笉瑕佸お鑷ぇ榪樸備笅闈㈡槸涓庝互鍓嶇殑鑿滃崟欏癸紝涓婇潰鍒楀嚭鐨勬爣棰樻枃瀛楁湁宸埆錛?

Ø         浣犻渶瑕佸憡璇?TextView 瀹冨彲浠ユ帴鍙楃殑鏂規硶璋冪敤 setFocusable 鐒︾偣銆?

Ø         鑿滃崟涓婂競欏圭洰灝嗛渶瑕佽韓浠借瘉錛屽洜姝ゆ偍鍙互鍖哄埆寮鏉ワ紝鍦ㄩ夋嫨澶勭悊紼嬪簭鑿滃崟鍏冪礌鐨勫叾浣欓儴鍒嗐?

姝?濡傛垜鍒氭墠綆鍗曪紝鍙澧炲姞涓涓皬閮ㄤ歡鍒?ViewGroup 鐨?LayoutParams 瀵硅薄蹇呴』鏄庣‘榪欎竴瑙傜偣鍐呯粍瀹氫箟鐨勫璞°備緥濡傦紝鍦ㄨ繃鍘?setLayoutParams 鏂規硶璋冪敤錛屼綘蹇呴』閫氳繃鍦?LinearLayout.LayoutParams 瀵硅薄銆備綘蹇呴』閫氳繃姝g‘鐨勫瓙綾葷殑甯冨眬鍙傛暟錛屾垨鏈?鍣ㄤ漢灝嗕綘鎵斿湪榪愯鏃跺紓甯搞?

姝e鎴戜互鍓嶈榪囷紝涓轟簡浣胯彍鍗曪紝鎴戝皢娣誨姞涓や釜鏂囨湰鍏冪礌鍑犱箮瀹屽叏涓鏍鳳紝浠ュ墠涓婂競銆備負璐柟渚匡紝鎴戜笉浼氬湪榪欓噷涓涓鍒椾婦銆備竴瀹氳鍙傜収鏁翠釜欏圭洰錛屼互婊¤凍浣犵殑濂藉蹇冦傜幇鍦紝浣犳妸鎵鏈夌殑鑿滃崟欏瑰埌浣嶏紝鏄椂鍊欏鍏惰繘琛屼慨鏀規椂錛屾帴鏀舵垨澶卞幓鐒︾偣

鐒︾偣騫磋交鐨勮崏铚?... 銆?
涓轟簡澶勭悊鐒︾偣鏀瑰彉浜嬩歡錛屼綘蹇呴』鍒涘緩涓涓?OnFocusChangeListener 鎶借薄綾葷殑瀹炵幇銆傝紺轟緥鐨勭増鏈紝鍦ㄤ富鑿滃崟鍐呭畾涔夌被鐨勬椿鍔ㄥ湪褰撳湴錛屽皢綾諱技浜庝唬鐮?3-5 銆?

Code Listing 3-5. Creating a Focus Listener

OnFocusChangeListener focusListener =

new OnFocusChangeListener()

{

public void onFocusChanged(View v, boolean hasFocus)

{

adjustTextColor(v, hasFocus);

}

};

private void adjustTextColor(View v, boolean hasFocus)

{

//Dangerous cast. Be sure you are

//listening only to TextView focus changes

// or this could go horribly wrong.

TextView t = (TextView)v;

if (hasFocus)

t.setTextColor(Color.RED );

else

t.setTextColor(Color.WHITE );

}

姝ゅ錛屾偍蹇呴』娣誨姞浠ヤ笅琛屽搴斾簬姣忎釜鑿滃崟涓夋嫨鍏冪礌闄勫姞鐒︾偣鏇存敼渚﹀惉鍣ㄥ璞★細

ItemOne.setOnFocusChangeListener(focusListener);

闅?鐫鍦版柟鍚紬錛屾偍鐜板湪姣忔閫氱煡涓涓彍鍗曡绱犳敹鐩婃垨澶卞幓鐒︾偣銆傚湪鏇村厛榪涚殑涓昏彍鍗曪紝榪欎釜鏂規硶鍙互澧炲姞鍦版柟鐨勫艦璞¤漿鍙橈紝鍔ㄧ敾錛屼笁緇寸垎鐐告垨鍏朵粬濂囨墠閭﹀浘褰㈡晥鏋溿傚湪榪?涓緥瀛愪腑錛屾偍灝嗕笉寰椾笉婊¤凍浜庝粎浠呮敼鍙樻枃瀛楃殑棰滆壊銆傜幇鍦紝鐢ㄦ埛鍙互鍛婅瘔閫氳繃棰滆壊鐨勫彉鍖栵紝鍏朵腑鑿滃崟欏癸紝紿佸嚭鏄劇ず錛屾偍闇瑕佺殑鏃跺欎綔鍑哄弽搴旓紝浠栦滑鎸変腑蹇冮敭閫夋嫨涓涓?欏圭洰銆?

鎻愮ず錛氬畠鍙兘閫氳繃浣跨敤 setTextColor 錛?ColorStateList 棰滆壊錛夋柟娉曪紝璇ユ柟娉曟槸璐交钀藉疄鏂囨湰綆鍗曠殑鏂瑰紡涓哄熀紜鐨勪富瑕?menu.There 涓涓?TextView 閲嶇偣錛屾病鏈夐噸鐐癸紝騫墮夊畾棰滆壊鎬繪槸寰堝鏂規硶鍙互瀹炵幇涓涓洰鏍囷紝涓涓緢濂界殑 IDE 涓紝鎴戝彧鏄夋嫨浜嗘洿閫氱敤鐨勶紙鍥犱負鎴?甯屾湜浣犵殑搴旂敤瓚呰秺鏂囨湰鑿滃崟錛夈傛湁鍏充嬌鐢?setTextColor 淇℃伅錛岃鍙傞槄鏂囦歡 Android 鍦?http://code.google.com/android /reference/android/widget/TextView.html 錛?setTextColor 錛堟暣鍨嬶級銆?

鍗曞嚮騫墮夋嫨媧誨姩
浣犲凡緇忕湅鍒板浣曠櫥璁板湪 oginscreen onClick 浜嬩歡錛屾墍浠ヤ綘搴旇鑳藉閫氳繃榪欎竴鑺?withouttrouble 鐨勫井椋庛備唬鐮佹竻鍗?3 鏈?6 鏃?鏄劇ず浜嗙ず渚嬩唬鐮佽幏鍙栭夋嫨鐨勪簨浠躲?

Code Listing 3-6. Adding a Selection Listener

OnClickListener clickListener = new OnClickListener()

{

public void onClick(View v)

{

String text = "You selected Item: ";

switch (v.getId())

{

case IdOne :

text += "1";

startActivity(

new Intent(MainMenu.this, Login.class));

break;

case IdTwo :

text += "2";

startActivity(

new Intent(

"com.apress.example.CUSTOM_VIEW"));

break;

case IdThree :

text += "3";

break;

}

//We'll get to the following line in a bit

status.setText(text);

}

};

浠ュ墠鐨?switch 璇彞鏄皟鐢?setID 鍥炴潵鐨勫師鍥犲綋鎮ㄦ渶鍒濆垱寤哄茍閾鴻 TextView 閮ㄤ歡銆傚綋涓涓彍鍗曢」琚変腑鎴栨寚閽堢偣鍑伙紝鐨?onClick 鍑芥暟琚皟 鐢紝騫墮氳繃鐩稿簲鐨勮鍥炬槸浣滀負鍙傛暟銆傛偍灝嗚礋璐e鏌ワ紝浠ョ‘瀹氬摢浜涜彍鍗曢」琚変負閫氳繃瑙嗗浘 ID 銆傝繖浣挎偍鍙互閲囧彇鐨勮彍鍗曚腑閫夋嫨閫傚綋鐨勮鍔ㄣ傞氳繃榪欑鏂瑰紡錛屾偍鍙互鍒囨崲 鍒板厛鍓嶅畾涔夌殑鐧誨綍灞忓箷錛屼綘鍗沖皢浼氫笌 startActivity 鏂規硶璋冪敤鍐欏叆鑷畾涔夎鍥俱?

榪樻槸鏈夌暀涓嬬殑涓灝忔錛屽鏋滀綘鍦ㄧず渚嬩唬鐮佷腑鐨?onCreatefuction 鐨勫簳閮紝浣犱細鐐瑰畠銆備綘闇瑕佹坊鍔犱竴涓偣鍑葷洃鍚埌瑙嗗浘銆備笅闈㈡槸搴旇榪愯鍦ㄤ綘寤虹珛鐨勯儴浠舵竻鍗曡錛?

ItemOne.setOnClickListener(clickListener);

鍥為【
鍥為【 Java 椹卞姩鐨勪富鑿滃崟錛屼綘鍋氬埌浜嗗嚑涓噸瑕?things.First 錛屾偍鎵ц鍔熻兘浠ュ墠鍙兘閫氳繃 XML 鏂囦歡鐨勫竷灞銆傝櫧鐒朵笉瀹屽叏鍒囧悎瀹為檯鐨勫仛涓鏂歸潰錛屽畠浼氱粰浣犺凍澶熺殑宸ュ叿鏉ユ敼鍙樺拰瀹氬埗搴旂敤紼嬪簭鐨勫悓鏃惰繍琛?XML 瑙嗗浘銆?
絎簩錛屼綘娉ㄥ唽涓烘偍鐨勬墍鏈夎彍鍗曢」鐨勭劍鐐規敼鍙樹簨浠躲傚綋鐒︾偣鏇存敼渚﹀惉鍙紝浣犳敼鍙樹簡閲嶇偣欏圭洰錛屼互紿佸嚭鏄劇ず瀹冪殑棰滆壊銆傚湪瀹為檯搴旂敤涓紝瑕佽揪鍒板悓鏍風殑浜嬫儏鏇存湁鏁堢殑鏂規硶錛屼絾鎴戝亣璁句綘鎯蟲敼鍙樼殑涓滆タ浠f浛鏂囨湰棰滆壊澶氾紝鍙互璇達紝濂㈠崕銆?
絎?涓夛紝浣犲浼氫簡濡備綍鍊懼惉鍜屼綔鍑哄弽搴旂殑閫夋嫨浜嬩歡錛屾礊鎮夐」鐩変腑錛屽茍閲囧彇閫傚綋鐨勮鍔ㄦ槸 selection.Again 鍩虹涓婏紝瀵規墍鏈夐渶瑕佸皢閲嶇偣鏀懼湪鎵嬪睆騫曞皬閮ㄤ歡 鍑轟唬鐮侊紝寰寰鏄浉褰撴槀璐碉紝浣嗘槸浣跨敤浣犲垰鍒氬鍒扮殑宸ュ叿錛屼綘鍙互淇敼錛屽鍔狅紝浠ュ強鑷畾涔夎彍鍗曟垨宸ョ▼娓呭崟鏁版嵁鍜岀敤鎴峰亸濂戒負鍩虹錛屽悓鏃跺簲鐢ㄧ▼搴忔鍦ㄨ繍琛屻備絾鏄紝濡?鏋滄偍闇瑕佽幏寰楁洿澶氱殑涓撲笟濡備綍緇樺埗鍒板睆騫曚笂錛屼綘闇瑕佽緝灝戝井濡欏拰鏇翠唬鐮侀噸鐨勬柟娉曘?

鑷畾涔夌敤鎴風晫闈㈡覆鏌撶殑鐢誨竷

榪?鏄綘鍑鴻娊閮ㄥ垎娓告垙寮鍙戝晢涓鐩村湪絳夊緟 for.Android 鍏佽浣犲畾涔変竴涓嚜瀹氫箟瑙嗗浘瀵硅薄鍙槸閫氳繃鎵╁睍瑙嗗浘綾誨拰鎵ц OnDraw 鏂規硶銆備負浜嗘紨紺鴻嚜瀹氫箟瑙嗗浘鍦?鍔ㄧ敾寰幆涓繍琛岋紝鎴戝凡緇忎粠鏃ч噾灞卞競鐨勬帰绱㈠睍紺轟竴浜涘惎紺烘垜浠浣曠湅寰呭姩鐢誨拰澹伴煶銆傛偍鍙互鍦?http://www.exploratorium.edu /listen/index.php 鏇村鍏充簬鍗氱墿棣嗗拰鏈夊叧鐨勫睍瑙堛備綘鍙互璐拱 http://www.nature.com/neuro/journal /v7/n7/full/nn1268.html 縐戝鐧界毊涔︺?
榪欎釜渚嬪瓙灝嗗姩鐢諱袱涓悆瀵瑰鏂規梾娓革紝鐒跺悗鎴栬呮垨寮硅煩鍜岀Щ鍔ㄨ窛紱婚氳繃銆傝繖涓緥瀛愭槸涓轟簡琛ㄦ槑鍙嶅脊澹伴煶鍙互鐪嬪埌涔嬮棿鐨勪紶閫掑璞★紝鐪嬩粬浠浉浜掑脊鐞冧漢鐨勫尯鍒備唬鐮佹柟闈紝鎴戝皢婕旂ず浜嗕竴涓嚜瀹氫箟瑙嗗浘鍑犱釜閲嶈鏂歸潰錛?

Ø         瀹炴柦鎰忚鐨?Android

Ø         緇樺埗鍒板睆騫曚笂浣跨敤 Canvas 瀵硅薄

Ø         鍒涘緩鍔ㄧ敾寰幆

Ø         淇敼錛屽茍浠庢椿鍔ㄨ嚜瀹氫箟瑙嗗浘浜や簰

鑷畾涔夎鍥?
鎮?鍙互鑷畾涔夊湪涓や釜鏂歸潰瑙嗗浘紿楀彛銆傜涓錛屾槸灝?View 綾匯傝繖浣挎偍鍙互閫氳繃婊氬姩鑷繁鍒涢犱竴涓?android.View 鍙鐨勫瓙綾葷殑 “ 宸ュ叿 ” 銆傚彟涓縐嶆柟娉曪紝鎮ㄥ氨 蹇呴』瀵硅嚜宸辯殑鎺㈢儲錛屾槸瀛愮被錛屽 TextView 錛岃繘搴︽潯錛屾垨 ImageView 鍜屼慨鏀瑰叾琛屼負鍙椾繚鎶ょ殑鏂規硶浣跨敤鐜版湁鐨勯儴浠躲傝繖涓緥瀛愭樉紺轟簡絎竴涓夋嫨錛屽洜涓?瀹冪殑鑼冨洿騫挎硾錛屾瘮杈冨鏄撶悊瑙c?
鍦ㄦ渶鍩烘湰鐨勫眰闈紝涓涓嚜瀹氫箟閮ㄤ歡閲嶅啓淇濇姢 OnDraw 鏂規硶銆備唬鐮佹竻鍗?3-7 鏄劇ず浜嗚繖鏍蜂竴涓柟娉曠殑涓涓ず渚嬨?

Code Listing 3-7. Simple Custom View Declared in the

CanvasExample Activity

protected class CustomView extends View

{

public void onDraw(Canvas canvas)

{

Paint p = new Paint();

p.setColor(Color.WHITE );

canvas.drawText("Yo!", 0, 25, p);

}

}

紲濊春錛佽緭鍏ユ枃瀛楄繖鍑犲彞錛屼綘鐜板湪鏄嚜宸辯殑鑷畾涔夐儴浠墮獎鍌茬殑鎵鏈夎呫傚綋鐒訛紝瀹冨彧鏄墦鎷涘懠錛屽儚鎴?17 宀佹湅鍏嬭〃濡癸紝浣嗘垜鎯充綘蹇呴』浠庢煇涓湴鏂瑰紑濮嬨傚浜庨偅浜涗綘鍦ㄤ笌 GameCanvas 鐨勭粡楠屽璞$殑 Java ME 錛岃繖搴旇寰堢啛鎮夈傝鎺ユ敹 OnDraw 涓懠鍙紝鎮ㄩ渶瑕佽緗綔涓烘牱鏈椿鍔ㄧ殑涓昏鍐呭鏌ョ湅銆備綘蹇呴』浠紡浠g爜錛屽皢瀹炰緥鍖栵紝騫朵嬌鍏舵垚涓哄綋鍓嶈鍥俱備唬鐮佹竻鍗?3-8 鏄劇ず浜?CanvasExample 媧誨姩鐨勫瑙傘?

Code Listing 3-8. Activating a Custom View

CustomView vw = null;

public void onCreate(Bundle args)

{

super .onCreate(args);

vw = new CustomView(this );

setTitle("Bounce or Pass, sounds changes everything");

setContentView(vw);

}

浣犱負浣犵殑鏍峰搧媧誨姩鐨勫悕縐幫紝鍥犱負浣犳病鏈夌粰瀹冧竴涓簲鐢ㄧ▼搴忕殑鍚嶇О銆傜劧鍚庯紝瀹冨彧鏄竴涓垱寤烘柊 CustomView 瀵硅薄錛屽茍璁劇疆瀹冧負褰撳墠鍐呭瑙嗗浘鐨勯棶棰樸傝繖灝嗚皟鐢?鎮ㄧ殑鑷畾涔夐儴浠跺唴鐨?OnDraw 鏂規硶錛屽茍鏄劇ず鎮ㄧ殑鏈夌偣涓嶅悎甯歌鐨勯棶鍊欍傛偍鐜板湪鏈変竴涓帉鎻″湪闈炲父鍩烘湰鐨勭粯鐢繪柟寮忓埌灞忓箷涓娿傛偍鐜板湪搴旇鍙互榪涘叆鏇村鏉傜殑娓叉煋鍜?鍔ㄧ敾鐨勫驚鐜紑濮嬨?
鍒涘緩娓告垙寰幆
鐢變簬鎵鏈夋父鎴忕▼搴忓憳浼氬憡璇変綘錛屽ぇ澶氭暟娓告垙錛屽叾鏍稿績錛屼竴涓笉鏂驚鐜?onsist 銆傜敤鎴瘋緭鍏ョ殑寰幆媯鏌ワ紝騫?鍦ㄦ杈撳叆鍜屼換浣曞叾浠栨父鎴忚鍔紝灞婃椂灝嗗埗璁㈡柊鐨勬鏋?/ 甯у湪鎮ㄧ殑紺轟緥搴旂敤紼嬪簭 screen.The 寰幆灝嗕笉浼氳耽寰楃殑澶嶆潅鎬у拰鐙垱鎬х殑浠諱綍濂栭」錛屼絾瀹冧細寰楀埌浣犲紑 濮嬭嚜宸辯殑 amerendering 寰幆銆?

娉?鎰忥細濡傛灉浣犳兂瀹炵幇鑷繁浠ュ鐨勬祻瑙堣嚜宸辯殑鍔ㄧ敾寰幆 / ViewGroup 灞傛錛屽茍寤虹珛涓?SurfaceView 寰幆鐮旂┒瀵硅薄銆備綘鍙互鎵懼埌榪欎竴 http://code.google.com/android /reference/android/view/SurfaceView.html 瀵硅薄鏂囦歡銆?

鍔犺澆闊抽鍜屽浘鍍?
鍦ㄦ偍灝嗙粯鍥?CustomView 寰楀埌錛屾偍闇瑕佸姞杞藉垵濮嬪寲紼嶅悗灝嗙敤浜庝竴浜涜祫婧愩備唬鐮佹竻鍗?3-9 鏄劇ず浜嗘柊鐨勬瀯閫?CustomView 鍖呮嫭灞閮ㄧ被鍙橀噺澹版槑銆?

Code Listing 3-9. Initializing the CustomView

protected class CustomView extends View

{

Context ctx;

Paint lPaint = new Paint();

int x_1=0,y_1=0;

MediaPlayer player = null;

Bitmap ball = null ;

boolean running = true ;

CustomView(Context c)

{

super(c);

player = MediaPlayer.create (c, R.raw.bounce );

BitmapDrawable d = (BitmapDrawable)

getResources().getDrawable(R.drawable.theball );

ball = d.getBitmap();

ctx = c;

}

...

}

鍦ㄦ瀯閫犲嚱鏁頒腑錛屼綘閫氳繃 R.java 瑁呰澆甯告暟鐨勫弽寮瑰獟浣撹祫婧愪粠 / 姘村簱 / 鍘熷浣嶇疆鐨勬枃浠躲傚洜涓轟綘鍋氫簡鍑犱釜鍏朵粬璧勬簮綾誨瀷姝や箣鍓嶏紝浣犲簲璇ユ槸涓涓佹墜浜嗐傛偍榪橀渶瑕佸姞 杞戒竴涓紝灝嗕綔涓?“ 鐞冨緱鍑虹殑褰㈣薄銆?” 浣犺繖鏍峰仛鐨勮祫婧愮鐞嗗櫒浣跨敤瀵硅薄錛岃繖鏄粠涓婁笅鏂囧璞?etrieved 銆傝櫧鐒朵綘娌℃湁鏄庣‘浠庤祫婧愬姞杞戒綅緗箣鍓嶇殑褰㈣薄錛岃繖濂藉儚鍑?涔庝換浣曞叾浠栬祫婧愯礋杞界殑浠g爜銆?

瀹炴柦鐜紝瀹炴柦寰幆錛屽疄鏂?...
浜嬩笉瀹滆繜錛屼唬鐮佹竻鍗?3-10 鏄劇ず浜?CustomView 瀵硅薄鐨?OnDraw 鏂規硶鏍峰瓙銆?

Code Listing 3-10. The Core of the Animation Loop

public void onDraw(Canvas canvas)

{

//Draw the white background

Rect rct = new Rect();

rct.set(0, 0,

canvas.getBitmapWidth(),

canvas.getBitmapHeight());

Paint pnt = new Paint();

pnt.setStyle(Paint.Style.FILL );

pnt.setColor(Color.WHITE );

canvas.drawRect(rct, pnt);

//Increment the X and Y value for the sprites

x_1+=2;

y_1+=2;

//Reset the loop when the balls drift offscreen.

if (x_1 >= canvas.getBitmapWidth())

{

x_1 = 0;

y_1 = 0;

}

//Draw ball 1

drawSprint(x_1, y_1, canvas);

//Draw ball 2

drawSprint(canvas.getBitmapWidth() - x_1, y_1, canvas);

if (running)

invalidate();

}

浠庨《閮ㄥ紑濮嬶紝鎮ㄧ殑絎竴涓櫧鑹茬殑鑳屾櫙浣跨敤 paintstyle 瀵硅薄鍜岃皟鐢?canvas.drawRect 銆傛補婕嗗璞★紝緇撳悎 Rectangle 瀵硅薄錛屽皢鍛婅瘔鐢?甯冪敾涓涓櫧鑹茬洅瀛愶紝瑕嗙洊鏁翠釜灞忓箷銆傛帴涓嬫潵錛屾偍灝嗛掑 x 鍜屼綘鐨勭悆 Sprite 鐨?y 鍊箋傜劧鍚庯紝鎮ㄩ渶瑕侀噸鏂拌緗粬浠紝濡傛灉浠栦滑宸茬粡婕傝繃鍘誨睆騫曠殑鑼冨洿錛屽茍鏈緇堢粯鍒?鐢ㄨ嚜宸辯殑 drawSprite 緇欎粬浠墦鐢佃瘽銆備唬鐮佹竻鍗?3-11 鏄劇ず浜嗚鍑芥暟鐨勫唴瀹廣?

Code Listing 3-11. Drawing a Bitmap

protected void drawSprint(int x, int y, Canvas canvas)

{

canvas.drawBitmap(ball, x, y, lPaint);

}

榪欎釜鍔熻兘錛岀幇鍦紝鍙槸涓涓畝鍗曠殑璋冪敤 drawBitmap 鏂規硶銆傛垜宸茬粡鍒嗙鍑烘潵錛岃繖縐嶆柟娉曞彧鏄洜涓虹粯鍒跺湪鍙︿竴鍦哄悎闆ⅶ鍙兘闇瑕佹瘮榪欎釜綆鍗曠殑渚嬪瓙鍔熻兘銆傛渶 鍚庯紝鍥炲埌 OnDraw 鍑芥暟錛屼綘浼氭墦鐢佃瘽緇欎綘鐨勫彧鏈夋棤鏁堣繍琛屾爣蹇楁槸鐪熷疄鐨勩傝皟鐢ㄦ棤鏁堢殑鐪嬫硶鏄?Android 鐨勫己榪噸緇樼殑棣栭夋柟寮忋傚湪榪欑鎯呭喌涓嬶紝鎮ㄨ嚜宸辨棤鏁堬紝榪欏皢璋?鐢?OnDraw 涓紝鏁翠釜榪囩▼涓紝鍐嶅害寮濮嬨傚鏋滀綘綆鍗曞湴璁劇疆榪愯鐨勬爣蹇楄櫄鍋囨殏鍋滄垨閫鍑哄拰鏃犳晥鏃跺啀鎭㈠瀹冪殑鍔ㄧ敾搴旇鐣欏湪鍚屽叾姣嶅叕鍙告椿鍔ㄧ殑閲嶇偣姝ラ銆?

娣誨姞鍜屾帶鍒跺0闊?
鐢變簬鍚閿欒闇瑕佽兘澶熸墦寮鍜屽叧闂袱涓弽寮逛簰鐩稿璞″0闊籌紝鎮ㄩ渶瑕佽緗煶棰戞瘮璧涳紝浠栦滑鎵擄紝鐒跺悗涓虹敤鎴峰緩绔嬩竴涓満鍒訛紝鎶婅繖涓澹伴煶鐨勫拰鍏抽棴銆?
瑕?鎾斁鐨勯煶棰戯紝鍦ㄤ唬鐮佷腑娣誨姞浠g爜娓呭崟 3 鏈?12 鏃?鍒頒互鍓嶇殑 OnDraw 鍑芥暟錛屽洜涓哄畠涔熷疄闄呬笂錛屾父鎴忔帶鍒跺洖璺傚綋鎴戣 “ 娓告垙寰幆錛?” 鎴戞寚鐨勬槸鏃犳晥鍛煎彨鍦?OnDraw 涓粨鏉燂紝灝嗚绔嬩竴涓噸緇?Android 鐨?UI 浜嬩歡寰幆銆傝璁頒綇錛?playSound 鏄竴涓竷灝斿甯?326-7524 鑷畾涔夎鍥俱?

Code Listing 3-12. Playing and Reloading Audio

if (playSound &&

canvas.getBitmapWidth() - x_1 -16 == x_1 + 16)

player.start();

if (x_1 >= canvas.getBitmapWidth())

{

x_1 = 0;

y_1 = 0;

player.stop();

player.release();

player = MediaPlayer.create (ctx, R.raw.bounce );

}

姝e鎮ㄥ彲鑳藉凡緇忔敞鎰忓埌錛屼綘寮濮嬮煶棰戞挱鏀炬椂錛屽皬綺劇伒錛?16 鍍忕礌榪滅瀵規柟銆傝繖鏄竴涓病鏈夎璐跨殑鏃墮棿錛岃闊抽寮濮嬨傛垜瑕佹寚鍑猴紝榪欐洿鍔犺瘉鏄庢垜涓嶈兘緙栬緫闊抽鏂囦歡鑰屼笉 鏄拡瀵逛竴涓己涔忔晥鐜囩殑闊抽璐熻嵎鍜?Android 鎾斁鏃墮棿銆傛偍榪樺繀欏葷‘淇濅互鎾斁闊抽鍙湁 playSound 甯冨皵鏄湡瀹炵殑銆傝繖涓彉閲忔槸涓綾葷殑媧誨姩鍦ㄥ叾涓嚜瀹氫箟瑙嗗浘瀹氫箟 鐨勬垚鍛樸備嬌鐢ㄦ甯冨皵錛屼綘浼氬緱鍒頒簡鏉ヨ嚜鍐呴儴鐨勫睆騫曟椿鍔ㄨ嚜瀹氫箟瑙嗗浘綾葷殑鎺у埗銆傝鎵撳紑鍜屽叧闂煶棰戯紝鎮ㄧ幇鍦ㄥ彧闇瀹炴柦
鍦ㄤ唬鐮佺殑鏂規硶錛屽湪媧誨姩娓呭崟 3-13 銆?

Code Listing 3-13. Reacting to Key Events

public boolean onKeyDown(int key, KeyEvent kc)

{

if (key == KeyEvent.KEYCODE_DPAD_CENTER )

{

playSound = !playSound;

return true;

}

return super.onKeyDown(key, kc);

}

姝や唬鐮佸簲綾諱技浜庝綘濡備綍椹沖洖浜嗗湪絎?2 绔犳伓浣滃墽鐨勫簲鐢ㄣ?

鎶婂畠鍚屽湪涓璧?
濡傛灉鎮ㄥ凡緇忔寜鐓т竴鐩村瘑鍒囷紙鎴栨楠楋紝鍙槸涓嬭澆瀹屾垚鐨勯」鐩級錛屾偍搴旇鑳藉榪愯搴旂敤紼嬪簭錛岀湅鐨勫夠瑙夈傛柊闂諱腑蹇冩柟鍚戦敭鎵撳紑鍜屽叧闂煶棰戙備笌闊抽 璧烽錛屽畠搴旇鍍忎粬浠氳繃浜掔浉榪涜琛ㄥ喅錛岀湅璧鋒潵浠栦滑鍙嶅脊錛屽嵆璧板悇鐨勮礬銆傚湪榪欎釜渚嬪瓙涓紝鎴戞紨紺轟簡濡備綍鍒涘緩鑷繁鐨勮鍥劇被錛屽浣曠敤瀹冩潵鐢誨湪灞忓箷涓婏紝濡備綍寤虹珛涓涓父 鎴忔覆鏌撳驚鐜紝浠ュ強濡備綍鎺у埗錛岀畝鍗曠殑寰幆鍒╃敤鍏抽敭浜嬩歡銆?
浣跨敤鐢ㄦ埛鐣岄潰
鍦ㄦ湰绔犱腑錛屾偍宸茬粡浜嗚В錛岃緇嗭紝濡備綍甯冨眬灞忓箷浣跨敤 Android 鐨?XML 鏋舵瀯錛屼互鍙婂浣曠浉浜掍綔鐢ㄥ拰淇敼浜嗕竴浜?Java 鐨?code.Next 榪愯鐨勬ā寮忥紝瀛︿範浜嗗浣?UI 閮ㄤ歡甯冨眬鍜岃鍥劇粍浣跨敤婧愮爜鍗曘傝繖鏄竴涓笉閭d箞瀹為檯搴旂敤 鐨?Android 鐢ㄦ埛鐣岄潰宸ュ叿錛屼絾閲嶈鐨勬槸鍘葷悊瑙g殑浣嗕負浜嗛氳繃銆傛渶鍚庯紝鎮ㄦ帰绱㈠緩璁?gamerendering 寰幆鐨勯噸瑕佸伐鍏楓傛偍鍔犲叆鍒版妸涓浜涚畝鍗曠殑澶氬獟浣撳拰鐢ㄦ埛鎺?鍒訛紝鍒涘緩浜嗕竴涓畝鍗曠殑鍚騫繪兂錛屽簲璇ヨ yourvery 璁ㄥ帉楝肩殑鏈嬪弸銆?

鎻愮ず錛氫嬌鐢ㄦ墍鏈変綘瀛﹀埌浜嗗湪鏈珷涓紝寤虹珛榪欑騫繪兂錛屽畠鍖呭惈浜嗕竴浜涜鏄庢枃瀛楋紝浠ュ強杈圭晫浣跨敤 XML.When 媧誨姩寮濮嬩簡涓涓鏋訛紝浣嗗憟鐜扮殑 XML 鎻掑叆鍒伴傚綋鐨勪綅緗嚜瀹氫箟瑙嗗浘銆傚浜庤繖欏逛換鍔★紝鎴戝緩璁嬌鐢ㄧ殑瑙i噴錛屽茍涓鴻竟澧冪煩褰㈢浉瀵瑰竷灞錛?TextView 銆?


鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/lihaifeng555/archive/2009/11/02/4757323.aspx



婕傛紓 2010-05-10 20:54 鍙戣〃璇勮
]]>
Android 瀛︿範絎旇錛堜竴錛夛紙杞級http://m.shnenglu.com/AutomateProgram/archive/2010/05/10/115027.html婕傛紓婕傛紓Mon, 10 May 2010 12:51:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/05/10/115027.htmlhttp://m.shnenglu.com/AutomateProgram/comments/115027.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/05/10/115027.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/115027.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/115027.html鍙弬鑰冧笅闈㈢殑鏂囩珷錛?a >http://www.ibm.com/developerworks/cn/opensource/os-cn-android-actvt/index.html

鍘熸枃鍦板潃錛?a >http://blog.csdn.net/lihaifeng555/archive/2009/09/27/4599691.aspx

鍦ˋndroid閲岋紝搴旂敤紼嬪簭鏄氳繃娓呭崟鐩綍瀹氫箟鐨勩傛瘡涓簲鐢ㄧ▼搴忛兘鏄畾涔夊湪AndroidManifest.xml閲岋紝鍏跺0鏄庝簡鍏惰繘鍏ョ偣錛圗ntry Point錛夈侀氳灞傦紙Communication Layer錛夈佹巿鏉冿紙Permission錛夛紝浠ュ強媧誨姩錛圓ctivity錛夊拰鎰忓浘錛圛ntent錛夌瓑銆傚叾涓紝鏈?涓熀紜緇勪歡錛屾垜浠О涔嬩負Android鐨勪富瑕佺粍浠訛紝浠栦滑緇勬垚浜嗕赴瀵岀殑Android搴旂敤紼嬪簭銆?/p>

Activity: Android 搴旂敤紼嬪簭鐨刄I(User Interface)鍩烘湰緇勪歡銆?

Intent receiver: 鍙殢鏃惰鍚姩鏉ュ鐞咺ntent錛屽茍鎵ц鍏朵換鍔°?/p>

Service: 闈濽I鍔熻兘鐨勫悗鍙板鐞嗙粍浠躲?/p>

Content provider: 璺ㄧ▼搴忕殑鍏變韓璧勬枡涔嬪瓨鍌ㄨ呫?/p>

Android vs. Java ME vs. BREW

涓涓狟REW搴旂敤紼嬪簭錛屽湪鎵鏈夌粷澶у鏁版儏鍐典笅錛屾槸鐢變竴涓崟鐙殑灝忕▼搴忕粍鎴愶紝榪欎釜灝忕▼搴忔槸閫氳繃鎺ユ敹鍜屽彂閫佹椿鍔ㄤ笌鎵嬫満鐨勫叾浠栭儴鍒嗛氫俊鐨勩傚彟涓鏂歸潰錛屼綘鍙互灝嗕竴涓狫ava ME搴旂敤鐪嬪仛Midlet綾葷殑鎵╁睍銆傝繖涓狹idlet鏈夊惎鍔ㄣ佸仠姝€佹殏鍋溿侀敭澶勭悊錛坘ey handling錛夌殑鍔熻兘錛屽茍涓斿彲浠ュ畬鎴愪換浣曟墜鏈哄拰搴旂敤鐨勪氦浜掋備竴涓狫ava ME搴旂敤紼嬪簭閫氬父鐢變竴涓崟鐙殑Midlet緇勬垚銆?/p>

Android搴旂敤紼嬪簭鏈夎澶氭椿鍔紝閫氳繃AndroidManifest.xml鏂囦歡錛岃繖浜涙椿鍔ㄥ彲浠ヨ娉ㄥ唽鍦ㄦ墜鏈轟腑銆?鍦ㄩ潰鍚慉ndroid鐨勫紑鍙戜笌闈㈠悜鍏朵粬鎵嬫満寮鍙戝伐鍏峰寘鐨勫紑鍙戜箣闂達紝Android鐨刴ultiactivity鏋舵瀯鎴栬鏄殑浠栦滑涔嬮棿涓昏鐨勫尯鍒傛鏄繖涓簨瀹炰嬌緙栧啓妯″潡鍖栥佸垎鍓茬殑浠g爜錛坢odular, compartmentalized code錛夋洿瀹規槗銆傚湪BREW鍜孞ava ME涓紝寮鍙戜漢鍛樺彲浠ユ墽琛屽湪Midlet鎴栧皬紼嬪簭鑼冨洿鍐呯殑澶ч儴鍒嗗姛鑳姐傚湪Android涓紝浣犲彲浠ュ啓涓涓椿鍔ㄣ佸唴瀹瑰鐞嗙▼搴忥紙content handler錛夈佹剰鍥炬帴鏀跺櫒錛坕ntent receiver錛夈佹垨鏈嶅姟浠ュ簲瀵瑰嚑涔庝換浣曚笢瑗褲備竴鏃︿綘緙栧啓浜嗙紪杈戞枃鏈枃浠剁殑媧誨姩錛岄氳繃鍙戦佸拰鎺ユ敹鎰忓悜鐨勮鍔紝鎮ㄥ彲浠ュ紩鐢ㄨ繖涓椿鍔ㄥ湪鎮ㄥ皢鏉ユ墍鏈夌紪鍐欑殑搴旂敤涓傝繖涓繖騫朵笉鏄錛岃繖縐嶆灦鏋勫湪BREW鎴朖ava ME涓槸涓嶈兘瀹炵幇鐨勶紝浠栦滑鍙槸蹇呴』鍦↗ava鍜孋鎴朇++緙栫▼鐨勫熀紜涓婏紝鎴栧湪BREW涓氳繃綣佺悙鐨勬墿灞曞疄鐜幫紝鑰屼笉鏄騫蟲粦鍦伴泦鎴愬埌搴旂敤妗嗘灦涓?/p>

 


Functionality

灝卞儚Midlet錛屾椿鍔ㄤ嬌鐢ㄤ簡涓緋誨垪鐨勫姛鑳戒笌澶栭潰鐨勪笘鐣岃繘琛屼氦鎹€傚湪浠栫殑鍩虹涓婏紝浣犵紪鍐欑殑媧誨姩蹇呴』閲嶅啓鏂規硶OnCreate錛屼綘榪樿閲嶅啓鍏朵粬鍔熻兘錛屽寘鎷細onStop銆乷nPause銆乷nResume鍜宱nKeyDown銆傝繖鍑犱釜鍔熻兘鍙互璁╂渶澶ч檺搴﹀湴灝嗕綘寮鍙戠殑媧誨姩緇戝畾鍒癆ndroid鎵嬫満涓傚湪榛樿鎯呭喌涓嬶紝鍦‥clipse涓垱寤烘柊鐨凙ndroid搴旂敤紼嬪簭灝嗘墽琛屼竴涓?#8220;Hello錛學orld”搴旂敤紼嬪簭銆傛垜浼氬憡璇変綘濡備綍浠庤繖涓熀鏈簲鐢ㄥ埌鍔熻兘榻愬叏鐨勭敾闈€?/p>

濡備綍娣誨姞鍥劇墖(Image)璧勬簮

棣栧厛灝嗗浘鐗囪祫婧?渚嬪menu_background.jpg)鐩存帴鎷瘋礉鍒?res/drawable鏂囦歡澶逛腑銆傛鏃訛紝Eclipse鐨凙ndroid鎻掍歡(Android Plug-In)浼氳嚜鍔ㄥ皢涓涓柊鐨処D鍊兼坊鍔犲埌R.java閲屻傛墍浠.java鏂囨。涓細澶氬姞浜嗕竴琛屾寚浠ゅ涓嬶細

public static final int menu_background=0x7f020001;

鍦ㄥ簲鐢ㄧ▼搴忓皢灝辯敤姝D鍊兼潵鍙栧緱榪欎釜鍥炬爣鏂囦歡錛屽茍鏄劇ず鎴栧鐞嗗畠銆?/p>

濡備綍瀹氫箟XML甯冨眬 (Layout) 鏂囦歡

鍒氭墠宸茬粡鏂板浜嗕竴涓浘鐗囪祫婧愭枃浠躲傛鏃訛紝鍦ㄥ畾涔夊竷灞XML鏂囦歡涓紝灝卞彲浠ュ紩鐢ㄦ鍥劇墖銆傝繖浜涘竷灞XML鏂囦歡閮芥斁鍦ㄥ湪/res/layout鏂囦歡澶逛腑錛屽叾涓璄clipse鐨凙ndroid鎻掍歡宸茬粡鐢熸垚浜嗕竴涓猰ain.xml鏂囦歡銆傜幇鍦紝浣犲彲鍒╃敤Eclipse鐨?File>New>File鑿滃崟閫夐」鏉ョ敓鎴愭柊甯冨眬XML鏂囦歡錛屼緥濡傦細splash.xml銆傜劧鍚庯紝浠ain.xml鍏у涓烘ā鏉匡紝灝嗕箣鎷瘋礉鍒版柊鐨剆plash.xml閲岋紝涓嬩竴姝ョЩ鍔?lt;TextView>騫朵笖澧炲姞<ImageView>錛屽唴瀹瑰涓嬶細

<ImageView android:src="@drawable/menu_background"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</ImageView>

鍦ˋndroid鐨刋ML甯冨眬鏂囦歡閲岋紝浣跨敤@drawable/灝辮兘杞繪澗鍦板紩鐢?res鏂囦歡澶逛腑鐨勮祫婧愶紝渚嬪涓婇潰鐨勭殑android:src="@drawable/menu_background"銆傛澶栵紝layout_width鍜宭ayout_height 鍒欒鏄庤繖涓狪mageButton鏄劇ず鍑轟締鐨勫ぇ灝?Size)銆俿plash.xml涔熸垚鐐轟竴闋呮柊鐨勮硣婧愩傛墍浠ュ湪R.java瑁′篃鏈冭嚜鍕曠敘鐢熸柊鐨勪竴琛岋紝濡備笅錛?/p>

public static final int splash=0x7f030001;


緇樺埗鍚姩鐢婚潰

 

鐜板湪錛屼綘鐨勫垵濮嬬敾闈㈣瀹氫箟瀹屾垚錛屽彲浠ユ縺媧誨拰鏄劇ず銆備綘鐜版湁鐨凙ndroid媧誨姩宸插埗瀹氫簡main.xml錛屾墍浠ヤ綘瑕佽漿縐誨埌鏂扮殑鍒濆甯冨眬銆備負浜嗗垏鎹紝鏇存敼OnCreate鏂規硶涓殑浠g爜錛?

setContentView錛圧.layout.main錛夛紱

涓?

setContentView錛圧.layout.splash錛夛紱

榪愯搴旂敤紼嬪簭錛岀湅鐫浣犳柊鍒涘緩鐨勫惎鍔ㄧ敾闈€傚埌鐩墠涓烘錛屽鏋滀綘寰楀埌浜嗛敊璇俊鎭紝媯鏌ヤ互紜浣犵殑鍚嶅瓧鏄惁鍖歸厤銆傚鏋滃浘鐗囨病鏈夋樉紺猴紝紜繚瀹冭姝g‘鍦版斁緗湪res/rawable鏂囦歡澶癸紝騫秙plash.xml搴旂敤浜嗘紜殑鍚嶇О鍜屾枃浠躲?

   

鏃墮棿鍙互瑙e喅浠諱綍闂

 

鍚姩灞忓箷寮濮嬪睍鐜幫紝浣嗗惎鍔ㄧ敾闈㈠崟鐙綔鏃犺亰鐨勫簲鐢ㄧ▼搴忥紝鎵浠ヤ綘闇瑕佽繘鍏ヤ富鑿滃崟銆備綘浼氫嬌鐢ㄧ畝鍗曠殑鍐呭祵瀹氫箟綰跨▼鏉ュ畬鎴愮殑瀹氭椂鍣紝鏈変竴浜涘父鏁伴渶瑕佸湪瀹氫箟綰跨▼鍓嶅垵濮嬪寲銆備負浜嗙湅涓婂幓瀹屾暣錛屾垜灝嗗寘鎷叏閮ㄧ殑OnCreate鏂規硶銆備唬鐮佸涓嬨?

Code Listing 2-1. Timing the Splash Screen

long m_dwSplashTime = 3000;

boolean m_bPaused = false ;

boolean m_bSplashActive = true ;

public void onCreate(Bundle icicle)

{

super .onCreate(icicle);

//Draw the splash screen

setContentView(R.layout.splash);

//Very simple timer thread

Thread splashTimer = new Thread()

{

public void run()

{

try

{

//Wait loop

long ms = 0;

while (m_bSplashActive && ms < m_dwSplashTime)

{

sleep(100);

//Advance the timer only if we're running.

if (!m_bPaused)

ms += 100;

}

//Advance to the next screen.

startActivity(new Intent(

"com.google.app.splashy.CLEARSPLASH"));

}

catch (Exception e)

{

Log.e("Splash", e.toString());

}

finally

{

finish();

}

}

};

splashTimer.start();

}

  

鍒扮幇鍦?錛?浣犳墠寮濮嬬湅鍒頒竴浜?Java 浠g爜銆傝繖涓畝鍗曠殑綰跨▼鐩村埌榪愯鏃墮棿璁℃暟鍣ㄨ秴榪?m_dwSplashTime 鎵嶅仠姝€傝櫧鐒舵湁瀹炵幇涓涓鏃跺櫒澶氱鏂瑰紡錛岄夋嫨榪欑鏂瑰紡鏈変袱涓師鍥狅細


姝よ鏁板櫒鍙互鏆傚仠銆傝璁℃椂鍣ㄥ彧鏈塵_bPaused鏍囧織涓篺alse鏃舵墠鎺ㄥ姩銆傛濡備綘灝嗙湅鍒板湪涓鍒嗛挓鍐咃紝濡傛灉浣犺皟鐢ㄦ椿鍔ㄧ殑OnPause鏂規硶錛屽彲浠ユ柟渚挎殏鍋滆鏃跺櫒銆傝繖騫朵笉鎬繪槸瀵瑰惎鍔ㄧ敾闈㈢殑闇姹傦紝榪欏鍏朵粬浠ユ椂闂翠負鍩虹鐨勪笟鍔℃槸閲嶈鐨勩?
 


縐誨姩鍒頒笅涓涓睆騫曞緢綆鍗曪紝鍙鏀瑰彉鐨刴_bSplashActive鏍囪涓篺alse銆傛帹榪涘埌涓嬩竴涓睆騫曪紝濡傛灉浣犳墽琛岃繖鍦ㄦ椂灝氾紝涓嶈姹備綘浣滃嚭鐨勮鍔紝鐒跺悗鍙栨秷鏇翠紶緇熺殑璁℃椂鍣ㄣ?
 

鏈変簡榪欎釜浠g爜錛屽彧瑕佷綘浠ユ縐掍負鍗曚綅璁劇疆m_dwSplashTime錛屼綘搴旇鐪嬪埌鍚姩鐢婚潰銆傚綋鏃墮棿鍒頒簡鎴栫敤鎴蜂嬌鐢ㄦ寜閿腑鏂簡鍚姩鐢婚潰錛宻tartActivity灝嗚璋冪敤銆俧inish鍙互鍏抽棴鍚姩媧誨姩錛屼嬌鐢ㄦ埛涓嶅繀閫氳繃浠庝富鑿滃崟涓婇夋嫨Back榪斿洖銆備綘闇瑕佹墽琛屼竴欏規椿鍔紝鎺ュ彈CLEARSPLASH鎰忓浘鐨勮鍔ㄣ備笌姝ゅ悓鏃訛紝璁╂垜浠洖欏句竴浜涘叾浠栭噸瑕佹椿鍔ㄧ殑鏂規硶浣犻渶瑕侀噸鍐欍?

 

鏆傚仠錛屾仮澶嶏紝鍐叉礂錛岄噸澶?

鐢變簬鍛煎叆鐢佃瘽錛岀煭淇℃垨鍏朵粬涓柇錛屼綘鐨勬椿鍔ㄨ鎸傝搗鏃訛紝鏆傚仠鍚姩璁℃椂鍣紝濡備笅錛?

protected void onPause()

{

super.onPause();

m_bPaused = true;

}

瀵逛簬榪欎簺澶ч儴鍒嗚鐩栫殑鏂規硶 錛?鍦ㄥ仛浠諱綍浜嬫儏涔嬪墠 錛?浣犻渶瑕佽皟鐢ㄨ秴綾匯傚鏋滀綘鏌ョ湅璁℃椂鍣ㄧ嚎紼嬶紝濡傛灉m_bPaused鏄痶rue錛屼綘浼氱湅鍒拌礋璐h窡韙椂闂寸殑MS璁℃暟鍣ㄤ繚鎸佹椂闂存病鏈夊墠榪涖傚湪榪欎竴鐐逛笂錛屾垜鐩鎬俊浣犲彲浠ョ寽嫻媜nResume鐨勬牱瀛愶細

protected void onResume()

{

super.onResume();

m_bPaused = false;

}

褰撲綘鐨勫簲鐢ㄧ▼搴忔仮澶嶏紝璁℃椂鍣ㄧ嚎紼嬫坊鍔犳椂闂存仮澶嶅埌MS璁℃暟鍣ㄣ?

 

鍩虹鐨?Key Handling

鍦ㄦ椿鍔ㄥ唴錛孠ey Handling鏄鐞嗚鐩杘nKeyDown鏂規硶銆傛垜浠皢浣跨敤姝ゅ姛鑳藉厑璁哥敤鎴峰彇娑堜綘涓嶅畬緹庣殑鍚姩鐢婚潰銆傛濡傚湪鏈妭寮濮嬩綘鐪嬪埌鐨勮鏃跺櫒綰跨▼錛岄氳繃m_bSplashActive璁劇疆錛屼綘鍦ㄨ鏃跺櫒寰幆涓簡寮傚父璇彞銆備負浜嗗紓甯稿鐞嗭紝浣犲彧闇瑕侀噸鍐檕nKeyDown鏂規硶浣夸箣鍒囨崲鍚姩鏍囪涓篺alse銆備笅闈㈢殑浠g爜闇瑕佹坊鍔狅細

public boolean onKeyDown(int keyCode, KeyEvent event)

{

//if we get any key, clear the splash screen

super .onKeyDown(keyCode, event);

m_bSplashActive = false ;

return true;

}

鐜板湪 錛?褰撶敤鎴鋒寜涓嬩換鎰忛敭 錛?灞忓箷灝嗚鎺ㄨ繘鍒頒笅涓涓礬紼嬮氳繃璁℃椂鍣ㄥ驚鐜?

 

Clear intent

鏈変竴浠朵簨浣犻渶瑕佸湪鍚姩鐢婚潰涔嬪墠鍋?錛?鎴戠浉淇′綘鎯崇煡閬撴湁鍏?startActivity 鏂規硶璋冪敤銆傝繖閲屽簲璇ョ畝鍗曚粙緇嶄竴涓媔ntent銆侷ntent鏄竴涓璞★紝鍦ㄤ袱涓垨涓や釜浠ヤ笂媧誨姩銆佸唴瀹瑰鐞嗭紙content handlers錛夈佹剰鍥炬帴鏀跺櫒錛坕ntent receiver錛夈佹垨鏈嶅姟涔嬮棿錛屽彲浠ヤ綔涓轟竴涓氳浜嬩歡銆備綘浼氫嬌鐢╟om.google.app.splashy.CLEARSPLASH璋冪敤 startActivity 銆傚綋startActivity琚皟鐢ㄦ椂錛孉ndroid鎼滅儲鎵鏈夐厤緗竻鍗曟枃浠訛紝瀵繪壘宸叉敞鍐屼負CLEARSPLASH Intent action鑺傜偣銆?

浣犺澧炲姞涓涓柊綾籑ainMenu錛屽叾浣滀負涓昏彍鍗昦ctivity銆傚畠瑕佺戶鎵緼ctivity綾伙紝瀹炵幇OnCreate鏂規硶錛屽湪R.layout.main涓皟鐢╯etContentView鏂規硶銆備綘瑕佹墦寮鐨凙ndroidManifest.xml騫跺鍔犳柊鐨?activity 鍏冪礌銆傚湪 </activity> 緇撴潫絎︿箣鍚庯紝 浣犲簲璇ユ彃鍏ヤ互涓嬪唴瀹癸細

<activity android:name=".MainMenu"

android:label="@string/app_name">

<intent-filter>

<action android:name=

"com.google.app.splashy.CLEARSPLASH"/>

<category android:name=

"android.intent.category.DEFAULT"/>

</intent-filter>

</activity>

紜畾媧誨姩鐨勫悕縐頒負 .MainMenu 銆傝繖浼氬憡璇?Android 鍔犺澆鍜岃繍琛?Java 綾匯傚湪 Intent filer 鏍囩涓?錛?娉ㄥ唽涓?com.apress.splash.CLEARSPLASH 鐨?Intent Action 銆傚湪鐜板疄涓紝鍚嶇О鎰忓浘鍙兘鏄痓eef.funkporium.swizzle錛屽彧瑕佸悕縐板湪startActivity璋冪敤鍜屽墠闈㈢殑Android閰嶇疆娓呭崟涓竴鑷達紝鎵鏈夋紜殑浜嬫儏搴旂戶緇彂鐢熴?

 

涓欏規椿鍔ㄧ殑鐢熷懡鍛ㄦ湡

Activity鐨勭敓鍛藉懆鏈熻鍖呮嫭鍦℅oogle鐨勬枃妗d腑銆備絾鏄紝濡傛灉浣犲厛浠旂粏鑰冭檻鐢熶駭Activity鐨勫簳灞傚師鐞嗭紝浣犱笉鑳介敊榪囪繖涓噸瑕佺殑淇℃伅銆傚湪榪欎竴鐐癸紝浣犵殑鍚姩鐢婚潰錛屼綘搴旇鍑嗗濂芥帹鍑恒?

涓轟簡璇存槑錛屾垜榪樺鍔犱簡浠ュ姛鑳藉湪鍚姩鐢婚潰媧誨姩涓細

protected void onStop()

{

super.onStop();

}

protected void onDestroy()

{

super.onDestroy();

}

濡傛灉浣犳柟鏂偣鍦ㄤ笂闈㈡椿鍔ㄧ殑鎵鏈夊姛鑳斤紝鍦ㄨ皟璇曟ā寮忎笅榪愯瀹冿紝浣犱細鐪嬪埌鏂偣涓庝笅闈㈤『搴忎竴鑷?

1. onCreate

2. onStart

3. onResume

4. 鍦ㄨ繖涓鐐逛笂錛屼綘鐨勬椿鍔ㄧ洰鍓嶅凡緇忚繍琛屻傚湪涓夌閽熷唴錛岃鏃跺櫒綰跨▼灝嗚揪鍒扮粨鏉燂紝騫惰皟鐢╯tartActivity緇撶畻鐨勬剰鍥俱備笅涓姝ワ紝瀹冨皢璋冪敤finish錛屽畠鍛婅瘔Android鍏抽棴鍚姩鐢婚潰媧誨姩銆?

5. onPause

6. onStop

7. onDestroy

5. onPause

6. onStop

7. onDestroy

浠庡紑濮嬪埌緇撴潫 Activity 錛?榪欐槸涓鑸殑鐢熷懡鍛ㄦ湡鏉ャ備綘鍙互鎵懼埌瀵圭敓鍛藉拰鏃朵唬鐨?Android 媧誨姩鏇村叏闈㈠湴鎶湶 錛?鍦ㄨ胺姝岀殑鏂囨。媧誨姩涓?http://code.google.com/android/reference/android/app/ Activity.html 銆備綘鐢氳嚦鍙互鎵懼埌婕備寒鍥懼艦銆備粠鏈川涓婅錛屾墜鏈轟嬌鐢ㄤ簡浠ュ墠鐨勭粍鍚堝姛鑳芥彁閱掍綘鐨勪富瑕佷簨浠跺彲浠ュ彂鐢熷湪浣犵殑搴旂敤紼嬪簭錛氬惎鍔紝鍏抽棴錛屾殏鍋滃拰鎭㈠銆傛垜宸茬粡璁ㄨ榪囷紝Activity灝嗚鎴愪負浠諱綍浼犵粺搴旂敤鐨勭殑鏍稿績緇勪歡錛涗粬浠粰浣犳帶鍒朵簡灞忓箷錛岃兘澶熸帴鏀剁敤鎴瘋緭鍏ャ?

 

鎬葷粨

鍒扮洰鍓嶄負姝紝鎴戝凡緇忔帰璁ㄤ簡媧誨姩濡備綍鎴愬湪鎵嬫満涓紝浠栦滑濡備綍鍚姩鍜屽仠姝紝浠ュ強浠栦滑濡備綍涓庡熀紜灞傛矡閫氥傛垜婕旂ず浜嗗浣曟樉紺轟竴涓畝鍗曠殑XML瑙嗗浘灞忓箷錛屼互鍙婂浣曟椿鎬т箣闂村垏鎹袱涓弽搴旈兘鍦ㄤ竴涓叧閿殑浜嬩歡鍜岀粨鏉熸椂鐨勪竴涓寚瀹氱殑鏃墮棿閲忋傚湪鐭湡鍐咃紝浣犻渶瑕佷簡瑙f洿澶氭湁Android濡備綍浣跨敤鎰忓悜錛屾剰鍥炬帴鏀跺櫒錛岃繃婊ゅ櫒鍜屾剰鍥炬矡閫氥傝鍋氬埌榪欎竴鐐癸紝浣犻渶瑕佷竴涓ず渚嬪簲鐢ㄧ▼搴忋?

 

鍒涘緩涓涓狪ntent Receiver

Intent Receiver鏄疉ndroid閲嶈鐨勭粍鎴愰儴鍒嗭紝浠庡畠鐨勫悕瀛楀彲浠ョ湅鍑哄叾浣滅敤銆傚畠鐨勪綔鐢ㄦ槸絳夊緟鎺ユ敹娉ㄥ唽鐨処ntent Action錛孉ndroid鏄寜鐓REW鐨勯氱煡妯″紡瀹炵幇鐨勩傛垜浠皢浣跨敤涓涓畝鍗曠殑搴旂敤錛屽睍鐜頒竴涓鏉傜殑Intent Receiver浠誨姟錛氳緭鍏ユ枃鏈秷鎭殑鎺ユ敹鍜屽搷搴斻?

 

浜嬫儏鐨勮搗鍥?

鎴戜滑寮濮嬭鎯寵繖鏍蜂竴騫呯敾闈細涓澶╀笅鍗堬紝褰撲綘鍥炲埌浣犵殑鍔炲叕妗岋紝浣犲彂鐜頒綘鐨勫姙鍏錛屼粠鍦版鍒板ぉ鑺辨澘涓庡彲鐖辯殑綺夌孩鑹茬殑鍥劇墖錛岄摵婊℃渶浠や漢璁ㄥ帉鐨勫浘鐢匯備綘鐭ラ亾榪欐槸璋佸湪鍋氾紝鐜板湪鏄綘鎶ュ鐨勬椂鍊欎簡銆備綘涔熺煡閬撲綘鐨勫伐紼嬮儴鍓昏鏈鍘屾伓涓棣栫壒孌婄殑姝屻傝繖棣栨瓕鏄?“ La Bamba “ 銆傝浣犲喅瀹氶氳繃涓涓紤鐪犵▼搴忔搷綰典綘鍚屼簨鐨凙ndroid鎵嬫満銆傛垜浼氬憡璇変綘濡備綍鍒朵綔涓涓狝ndroid搴旂敤紼嬪簭錛屾敹鍒扮壒瀹氱殑鐭俊鍚庯紝鎾斁榪欑鑰昏頸鏁堝簲鐨勯煶棰戞枃浠躲傝繖浼氫嬌浣犵殑鍓誨浣犵殑鏂版晫浜轟駭鐢熷己鐑堢殑鎰ゆ叏銆傚悓鏃訛紝浣犺緇欎粬涓涓満浼氬叧闂0闊充簡銆傝繖縐嶆伓浣滃墽紼嬪簭瑕佹眰Intent Receiver錛孉ctivity錛孲ervice錛屼互鍙婃墍鏈変笁縐嶆柟寮忚繘琛岄氫俊銆?

   

榪欐湁浠涔堝疄闄呯殑閫氶斿悧錛熻繖鍙兘鏈夊悧錛?

榪欐槸涓涓緢濂界殑闂銆傝櫧鐒惰〃闈笂鐪嬫潵涓嶆槸寰堝疄鐢ㄥ簲鐢紝鎴戠浉淇★紝濡傛灉鏈変竴鐐規兂鍍忓姏錛屼綘鍙互鍙戠幇鍏跺緢澶氶噸瑕佺殑鐜板疄鐢ㄩ旓細浠庢帹閫佺數瀛愰偖浠墮氱煡鍒板唴閮ㄧ數璇濆簲鐢ㄩ氫俊銆?

浣犲皢鍚戝墠榪堣繘鍥涗釜闃舵銆傚湪姣忎釜闃舵錛屼綘灝嗕簡瑙f洿澶氬叧浜嶪ntent receives錛宻ervices錛屾墍鏈夎繖浜涘簲鐢ㄧ▼搴忎箣闂寸殑鐩鎬簰浣滅敤浠訛細


閫氱煡鏀跺埌涓涓煭淇?
 


鎵撳紑鐭俊鐨勫唴瀹瑰拰鎵懼埌鐗規畩鐨勫噣鑽?
 


褰撶煭淇″埌杈続ctivity鍚姩錛屽茍涓旀剰璇嗗埌鍚姩鍙戠敓鍦ㄦ帴鏀跺櫒鐨勬帶鍒朵笅
 


寮濮嬩竴涓柊鐨勬湇鍔★紝灝嗘挱鏀鵑煶棰戞枃浠?
 

   

浣跨敤Intent Receiver

鍦ㄤ綘寮濮嬬紪鍐橧ntent Receiver涔嬪墠錛屼綘闇瑕佷簡瑙d綘涓轟粈涔堜細浣跨敤浠栥侷ntent Receriver娌℃湁鎴栧嚑涔庢病鏈夊唴瀛樺崰鐢ㄣ乴inkage鍜岀郴緇熷紑閿銆傚湪鍚姩鏃訛紝涓涓椿鍔ㄥ繀欏誨皢鎵鏈夊ぇ閲忕殑寮曞叆鐨勭被鍔犺澆錛孖ntent Receriver鍒欐病鏈夎繖浜涚害鏉熴傜敱浜庢煇縐嶇被鍨嬬殑鏂癐ntent鍙互杈懼埌鐮寸棰戠巼錛堜緥濡傜綉緇滅姸鎬佹洿鏂幫級錛屼竴涓交閲忕駭鐨勫璞″繀欏誨湪鍒嗘瀽鏁版嵁鐨勭涓闃舵銆傚鏋滃畠鏄竴涓傚綋鐨勬椂闂村敜閱掍竴涓洿澶х殑鐢ㄦ埛鐣岄潰紼嬪簭鎴栧ぇ騫呭悗鍙版湇鍔★紝鎰忓浘鎺ユ敹鏈哄簲閲囧彇榪欑琛屽姩銆?

 

鎻愮ず錛氭剰鍥炬帴鏀跺櫒鍙互緇忓父鐨勫惎鍔ㄥ拰鍏抽棴錛堣繖渚濋潬浠栦滑鐨勭洃鍚級錛岃瘯鍥捐瀹冧滑鍙樺湴閲嶉噺杞伙紝浣跨敤灝藉彲鑳藉皯鐨勭被搴撱備綘鐨勭敤鎴蜂笉浼氶珮鍏達紝濡傛灉浠栦滑鐢佃瘽鍦ㄧ紦鎱㈠湴鐖錛屽洜涓轟綘宸茬粡鎻掑叆鍒板お澶氱壒瀹氱殑浜嬩歡澶勭悊寮閿銆?

 

緙栧啓Intent Receiver

絎竴浠朵簨棣栧厛浣犻渶瑕佸垱寤轟竴涓繖涓皬鎭朵綔鍓у簲鐢ㄧ▼搴忓緩绔嬫柊欏圭洰銆傚湪婧愮洰褰曚腑錛屽垱寤轟竴涓柊綾伙紝灝嗘垚涓烘柊鐨処ntent Receiver銆傚湪絎竴闃舵錛屽畠鐪嬭搗鏉ュ簲璇ュ儚榪欐牱錛?

public class PrankSMSReceiver extends IntentReceiver

{

public void onReceiveIntent

(Context context, Intent intent)

{

return;

}

}

鐜板湪浣犲凡緇忚瀹氫簡闃剁駭 錛?浣犲繀欏誨憡璇変綘鎯寵 Android 鎺ユ敹 SMS 浜嬩歡銆備綘鍙互閫氳繃淇敼 AndroidManifest.xml 鏂囦歡緇欎綘璁稿彲鍜岀櫥璁?RECEIVE_SMS 鐨?Intent action 銆?

 

鏉冮檺

榪愯惀鍟嗭紝鐢ㄦ埛錛岀敋鑷沖紑鍙戜漢鍛樺彲鑳戒笉甯屾湜緇橝ndroid搴旂敤鑷敱鏀厤錛岃瘡絀垮叾鎵嬫満鍜岀綉緇滅殑鐗規潈灞傘傚洜姝わ紝璋鋒瓕鎺ㄥ嚭涓縐嶈縐誨姩鍙戜漢鍛樿鍙殑鏉冮檺姒傚康銆備負浜嗚兘澶熸帴鏀剁煭淇℃伅錛屼綘闇瑕侀氱煡鎵嬫満浣犲彲浠ユ帴鏀躲?

鍦ˋndroid涓紝鎵鏈夊厓绱犵殑鏉冮檺澹版槑鍦ㄧ壒鍒殑閰嶇疆鏂囦歡涓紝浣犳坊鍔犵殑鏉冮檺鍦?lt;manifest>鏍囪鍚庯紙浠g爜2-2錛夈傝紺轟緥搴旂敤紼嬪簭灝嗚縐頒負PrankApp銆傚叾媧誨姩涓昏鏄痳ankActivity銆?

Code Listing 2-2. Adding Permissions to Receive SMS Messages

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android=

"

package="com.apress.book.PrankApp">

<uses-permission android:name=

"android.permission.RECEIVE_SMS" />

娌℃湁鏉冮檺鏍囧織錛孉ndroid灝嗕綘鐨勫簲鐢ㄧ▼搴忔棤娉曞惎鍔ㄥ綋瀹冩帴鏀跺埌涓涓煭淇°傝繕鏈夊叾浠栫殑鏉冮檺鎴戦渶瑕佹兜鐩栦綘鍚戝墠鐪嬨傚湪姝ゆ湡闂?錛?浣犲彲浠ユ壘鍒版墍鏈夊湪鍒楄〃鐨勬潈闄?Android 鐨勬枃浠惰祫鏂?http://code.google.com/android/reference/android/ Manifest.permission.html 銆?

 

鍚戞垜鍙戦佺煭淇★紒

鐜板湪錛屼綘宸茬粡鍏佽榪涜涓庢墜鏈虹殑SMS灞備氦浜掞紝浣犲繀欏誨憡璇夋墜鏈哄仛浠涔堬紝褰撲竴涓柊鐨勬枃鏈俊鎭埌杈炬椂銆傝鍋氬埌榪欎竴鐐癸紝浣犲繀欏繪墦寮AndroidManifest.xml鏂囦歡錛屾坊鍔犱竴涓柊鐨処ntent Receiver銆備唬鐮佹竻鍗?-3鏄劇ず浜嗚鎻掑叆鐨勪唬鐮併?

Code Listing 2-3. Registering the New Intent Receiver for

Incoming SMSs

</activity>

<receiver android:name=

"PrankSMSReceiver"android:enabled="true">

<intent-filter>

<actionandroid:name="android.provider.Telephony.SMS_RECEIVED"

/>

<categoryandroid:name="android.intent.category.DEFAULT" />

</intent-filter>

</receiver>

榪欏氨鏄綘姣忔蹇呴』瑕佹帴鍙楃殑 Intent notification 錛?褰撴墜鏈哄緱鍒頒竴涓帴鏀跺埌鐨?SMS 銆?

 

   

鍦?Action 涓垎鏋?Intent Receiver

瑕佸畬鎴愯繖涓姣旀垜浠兂璞$殑鏈変竴鐐瑰洶闅俱備竴涓繘紼嬪繀欏誨湪涓涓?DDMS 涓繍琛?銆備絾鍦ㄥぇ澶氭暟鎯呭喌涓嬶紝浣犱笉鎯寵搴旂敤紼嬪簭榪愯錛岄櫎闈炴柊鐨勪簨浠惰Е鍙戝畠銆傝繖闂鐨勮В鍐蟲柟妗堝湪Eclipse IDE涓彧鏄竴涓皬灝忕殑鎶婃垙銆傚綋浣犱竴姝ヤ竴姝ュ線涓嬭蛋鏃訛紝榪欏彲鑳戒細涓鐐逛竴鐐瑰彉寰楀鏉傘?

鍦ㄤ綘鐨刼nReceiveIntent鏂規硶涓斁緗竴涓柇鐐廣傚紑濮嬭皟璇曞簲鐢ㄧ▼搴忥紝騫惰妯℃嫙鍣ㄤ綅浜?#8220;Hello World錛孭rankActivity”灞忓箷涓娿傚湪Eclipse涓紝鍒囨崲瑙嗗浘鍒癉DMS銆備綘鍙互鎸夎繖鍛戒護+ F8閿嚑嬈℃垨閫夋嫨鑿滃崟 Window 魛仺 Open Perspective 魛仺 DDMS 銆?

 

娌跨潃宸﹁竟紿楀彛錛屽湪Device閫夐」鍗′笂錛屼綘鐜板湪搴旇鐪嬫湁涓涓豢鑹瞓ug鍥炬爣鍦ㄤ綘鐨勫簲鐢ㄦ梺杈廣傝繖鏄疍DMS鍛婅瘔浣犺皟璇曞櫒闄勫姞鍒頒綘鐨凱rankApp榪涚▼涓傚湪瀹冪殑涓嬮潰鏄疎mulator Control閫夐」鍗°傚湪榪欓噷浣犲彲浠ュ彂閫佺煭淇℃秷鎭傞鍏堣緭鍏ヤ換浣曚竴涓數璇濆彿鐮侊紝閫夋嫨SMS錛岄敭鍏ヤ竴涓祴璇曟秷鎭紝騫舵寜涓婼end銆?

 

濡傛灉浣犵殑閰嶇疆姝g‘錛屼綘搴旇鐪嬪埌Eclipse鍒囨崲鍒癉ebug閫忚鍥撅紝騫跺仠姝㈠湪浣犵殑鏂拌緗柇鐐逛笂銆?

 

娉ㄦ剰錛氬鏋滄病鏈夊彂鐢燂紝棣栧厛紜繚浣犺緗簡鏉冮檺姝g‘銆傚鏋滀粬浠笉姝g‘錛屼綘搴旇鐪嬪埌涓涓け璐ョ殑鏉冮檺淇℃伅鏄劇ず鍦―DMS灞忓箷搴曢儴鐨凩ogCat鏍囩涓傛澶栵紝璇風‘淇濅綘鐨勫簲鐢ㄧ▼搴忓凡緇忓湪榪愯錛屽茍鍦―evices閫夐」鍗℃湁緇胯壊璋冭瘯鍥炬爣鍦ㄥ畠鐨勬梺杈廣傚鏋滄墍鏈夎繖浜涢兘涓嶅鏁堬紝姣旇緝浣犵殑欏圭洰涓庢枃涓殑紺轟緥銆?

 

鐩墠涓烘錛屽鏋滀綘姝g‘鍦板畬鎴愪簡銆備綘鐨処ntent鐨刼nReceiveIntent鍔熻兘琚皟鐢紝褰撴瘡涓涓猄MS娑堟伅鍙戦佸埌鎵嬫満涓娿傛帴涓嬫潵錛屼綘灝卞繀欏誨紕娓呮濡備綍寰楀埌鐭俊鐨勫唴瀹廣?

 

浠涔堟槸鍦ㄤ竴涓猄MS涓紵

鍙偛鐨勬槸錛屽埌鐩墠涓烘Android鍏充簬鎺ユ敹鍜岃繃婊MS淇℃伅鐨勬枃妗e彧涓嶈繃鏄販涔辯殑銆傛垜鎬鐤戣繖涓嶆槸涓欏歸渶瑕佸憡璇夊紑鍙戜漢鍛樼殑閲嶈鍔熻兘銆傛垜涓嶅悓鎰忚繖浜涗紭鍏堜簨欏癸紝浣嗘槸浣挎垜鏈夋満浼氬~琛ョ┖緙恒?

涓嬮潰鏄痬ethodonReceiveIntent鐨勪唬鐮侊紝鍔熻兘鏄洃鍚柊鐨凷MS淇℃伅錛?

public void onReceiveIntent

(Context context, Intent intent)

{

SmsMessage msg[] =

Telephony.Sms.Intents.getMessagesFromIntent(intent);

for(int i = 0; i < msg.length; i++)

{

String msgTxt = msg[i].getMessageBody();

if (msgTxt.equals("0xBADCAT0_Fire_The_Missiles!"))

{

//Start the pranking here

}

}

return;

}

浣犺繕闇瑕佽緭鍏ヤ袱涓被搴撴潵瀹屾垚榪欓」宸ヤ綔錛?

Import android.telephony.gsm.SmsMessage;

Import android.provider.Telephony;

getMessageFromIntent 鏂規硶鏄湪 Telephony 綾諱腑 錛?榪欏皢榪斿洖 SMS 淇℃伅鐨勬暟緇勩傜幇鍦ㄥ墿涓嬬殑灝辨槸寰楀埌鐭俊鐨勬湁鏁堣澆鑽楓備綘瑕佹壘鐨勮Е鍙戞伓浣滃墽媧誨姩鐨勭壒孌婁唬鐮佷負鏂囨湰

“ 0xBADCAT0_Fire_The_Missiles 錛?”

瀹冨繀欏繪槸涓涓傚綋鐨勭嫭鐗圭粍鍚堬紝浠ヤ究瀹冧笉浼氳瑙﹀彂浜嬫晠銆備綘涓嶄細甯屾湜鑷繁鐨勬伓浣滃墽澶辯伀騫舵彁閱掑彈瀹充漢澶棭鐨勩?

娉ㄦ剰錛氬湪Android閲岋紝娌℃湁璁拌澆鐨勫姛鑳芥槸寰堝彲鑳借繕娌℃湁瀹屾垚銆傜敱浜庢帴鏀剁煭淇$殑鏂囨。鍑犱箮涓嶅瓨鍦紝浣犲簲璇ヤ細鏈変簺鍙樺寲鍦ㄥ浣曞鐞嗘墜鏈虹畝璁笂銆傛洿鍙兘鐨勬槸鏁翠綋鐨勬柟娉曞簲璇ユ槸鐩鎬技鐨勶紝浣嗗畠鏈夋妸鎻″湴璁や負鍏朵腑鐨勪竴浜涚粏鑺傚皢鏀瑰彉SDK鐨勫墠鍒拌揪瀹冪殑鏈緇堢増鏈傝繖涓緥瀛愭槸鏈夊叧瀛︿範濡備綍浣跨敤鎰忓浘鎺ユ敹鍣ㄥ鏄湁鍏蟲枃鏈殑娑堟伅閫氫俊璧勬枡銆?

 

瑙﹀彂媧誨姩

閲嶈鐨勬槸瑕佽浣忥紝鎰忓浘鎺ユ敹鍣ㄧ殑鐢熷懡鍛ㄦ湡鐭紝鍙湁鍙鏂規硶璋冪敤onReceiveIntent銆備竴鏃﹀嚭浜庤繖涓鑱岃兘錛孉ndroid鏄厤璐規潃姝昏繘紼嬩腑榪愯浣犵殑搴旂敤紼嬪簭銆備換浣曞紓姝ュ姛鑳戒細姝誨幓錛屽鏋滄槸涓涓崄鍒嗘鎵嬬殑姝諱骸寮濮嬨傚鏋滀綘鎯寵鍋氳秴瓚婁簡綆鍗曠殑澶勭悊鏂規硶鍐呯殑浠諱綍浜嬫儏錛屼綘闇瑕佸惎鍔ㄦ湇鍔℃垨媧誨姩銆傛棦鐒朵綘瑕佸悓鏃舵挱鏀鵑煶涔愬拰璀︽姤浣犵殑鍙楀鑰咃紝浠栦滑鍘昏繃浜嗭紝浣犻渶瑕佸惎鍔ㄧ殑涓欏規椿鍔ㄣ備綘瀹屾垚姝ゆ儏鍐靛涓嬶細

if (msgTxt.equals("0xBADCAT0_Fire_The_Missiles!"))

{

//Start the Activity

Intent startActivity = new Intent();

startActivity.setLaunchFlags(Intent.NEW_TASK_LAUNCH);

startActivity.setAction("com.apress.START_THE_MUSIC");

context.startActivity(startActivity);

}

浣犱細鐪嬪埌榪欓噷鏄琛?NEW_TASK_LAUNCH 鍦?setLaunchFlags 銆備綘闇瑕佸仛浠諱綍浣犺鍙戦佺殑 Intent action 錛?灝嗗惎鍔ㄤ竴欏規柊鐨勬椿鍔ㄣ傛澶栵紝姝e浣犲湪鍚姩鐢婚潰紺轟緥搴旂敤紼嬪簭錛屼綘蹇呴』娣誨姞涓涓柊鐨勮鍔紝浣犵殑Activity鐨処ntent filter銆傞偅涓繃紼嬪簲璇ョ湅璧鋒潵寰堢啛鎮夛細

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<action android:name="com.apress.START_THE_MUSIC" />

<category android:name=

"android.intent.category.LAUNCHER" />

<category android:name=

"android.intent.category.DEFAULT" />

</intent-filter>

鐜板湪 錛?濡傛灉浣犲湪鍓嶉潰姝g‘鍦版坊鍔犱簡浠g爜 錛?褰撲綘浠?DDMS 閫忚鍥句腑 鍙戦?SMS 娑堟伅鏃?錛?浣犲簲璇ョ湅鍒頒綘鐨勫簲鐢ㄨ煩鍑哄埌鍓嶅彴 錛?鏄劇ず “Hello World 錛孭rankActivity ” 鏂囨湰鍦ㄥ睆騫曚笂銆?

 

绱㈠叿鐨勬椿鍔?

涓涓渶鍚庣殑宸ヤ綔浣犻渶瑕佹坊鍔?錛?鍦ㄥ緱鍒板崙閯欑殑闊充箰鎾斁鏈嶅姟涔嬪墠 錛?瑁呴厤 Activity 錛?浠ュ洖搴斾綘鐨?Intent Receiver 鍙戦佺殑媧誨姩 銆傚鏋滃簲鐢ㄧ▼搴忔甯稿惎鍔紝浣犺绔嬪嵆鍏抽棴浜嗐傚悓鏍鳳紝濡傛灉鍙互閫氳繃鑿滃崟鍚姩錛岃繖鏍蜂綘鐨勬伓浣滃墽鐨勮鍒掑氨浼氳繃鏃╃殑鏇濆厜銆傝鍋氬埌榪欎竴鐐癸紝浣犲繀欏繪绱㈠彂灝勭殑Intent錛屽茍璋冪敤getAction鏂規硶鏉ヨ綆楀嚭鍦ㄤ粈涔堟儏鍐典笅錛屽畠宸茬粡鍚姩銆傝PrankActivity鐨凮nCreate鏂規硶鐜板湪鐪嬭搗鏉ュ簲璇ヤ唬鐮?-4銆?

Code Listing 2-4. Launching on a Specific Intent Action

public void onCreate(Bundle icicle)

{

super .onCreate(icicle);

Intent i = getIntent();

String action = i.getAction();

if (action != null &&

action.equals("com.apress.START_THE_MUSIC"))

{

setContentView(R.layout.pranked);

//We'll need to start the music service here

}

else

finish();

}

 

棣栧厛浣犱細寰楀埌鍙戣搗 Activity 鐨処ntent 銆備嬌鐢ㄧ洰鍓嶅緱鍒扮殑 Intent 錛?浣犲彲浠ョ敤 getAction 鏂規硶媯绱㈣皟鐢ㄧ殑琛屽姩銆傝繖涓皢榪斿洖涓涓寘鍚惎鍔ㄤ簨浠剁殑瀛楃涓詫紝浣犳牳瀵逛綘鐨勮憲鍚嶉煶涔愯鍔ㄥ垪鍦ㄥ師鏉ョ殑XML銆傚鏋滃湪鍚姩浜嬩歡涓轟綘鐨勬椿鍔ㄦ潵鑷甯哥殑鏂瑰紡錛堜粠鑿滃崟鎴栦粠鍚姩璋冭瘯鍣級錛岃琛屽姩瀛楃涓插皢鏄痭ull銆傚鏋滄槸榪欐牱鐨勮瘽錛屼綘瑕佺珛鍗充嬌鐢╢inish鏂規硶鍏抽棴媧誨姩銆?

娉ㄦ剰錛歄nCreate鏂規硶琚皟鐢ㄥ綋浣犵殑搴旂敤琚嬈″惎鍔ㄦ椂銆傚鏋滀綘宸茬粡鍚姩浣犵殑搴旂敤紼嬪簭錛岀劧鍚庨鍑猴紙浣跨敤榪斿洖閿級錛屽簲鐢ㄧ▼搴忎粛鐒跺湪鍚庡彴榪愯銆傚鏋滃湪榪欐椂錛屼綘鍙戦佺煭淇★紝浣犵殑媧誨姩灝嗗洖鍒板墠鍙幫紝浣嗗叾OnStart鏂規硶灝嗚皟鐢ㄨ屼笉鏄疧nCreat銆?

 

浣犱粖澶╂兂緹炶頸璋佸憿錛?

铏界劧鍙兘鏈変簺鐭瀴榪囨錛屼綘瑕佷嬌鐢ˋndroid鐨剆ervice瀵硅薄鏉ュ鐞嗛煶涔愭挱鏀俱傛垜鎵撶畻榪欐牱鍋氭湁鍥犱負鍙︿釜鍘熷洜錛?

n         魛們 榪欐槸涓涓ソ鐨勬満浼氭潵灞曠ず浠ョ畝鍗曠殑鏂瑰紡service鐨勪嬌鐢紝鍦ㄧ畝鍗曠殑鐜銆?

n         魛們 娼滃湪鐨勶紝瀹冧細璁╀綘鍚姩闊充箰涓嶇敤鐪嬪埌搴旂敤紼嬪簭錛屼嬌浣犵殑鎭朵綔鍓х殑搴旂敤紼嬪簭鏇村崙閯欍?

紲炵粡涓庢湇鍔?

涓轟粈涔堜綘瑕佷嬌鐢ㄧ殑鏈嶅姟錛熶粠鏈川涓婅錛屽畠鎰忓懗鐫鏄竴涓璞★紝涓庣敤鎴風晫闈㈠垎紱葷殑鍙繍琛屽湴榪囩▼銆傝繖鏄畬緹庣殑鎯呭喌錛屽綋涓涓紑鍙戜漢鍛樺笇鏈涚殑鍔熻兘錛堟棤璁烘槸緗戠粶鎴栧濯掍綋鐩稿叧錛夎兘澶熺嫭绔嬭繍琛屻備緥瀛愬寘鎷細闊抽鎾斁錛岀綉緇滀氦鏄撶殑鍚庡彴錛屽拰閭伓鐨勬伓浣滃墽紼嬪簭銆傝櫧鐒舵湇鍔″厑璁稿涓簲鐢ㄧ▼搴忥紙鎵撳紑閫氫俊淇¢亾錛変笌浠栦滑緇戝畾錛屼綘浼氫嬌鐢ㄥ畠浣滀負涓涓畝鍗曠殑鍚庡彴榪涚▼銆傚悓鏍鳳紝services鏈夊緢澶氱敤閫斾笉鍙槸榪欎釜綆鍗曠殑渚嬪瓙銆?

鍒涘緩service

娣誨姞涓涓柊綾葷殑婧愮爜鍖呫傛垜宸茬粡鍐嶆璋冪敤PrankService錛堟病鏈夌偣鍒涙剰錛夈傚湪鏈鍩烘湰鐨勫眰闈紝service瑕侀噸鍐檕nBind鏂規硶銆傝鑾峰緱鏈嶅姟綾葷紪璇戯紝瀹冨繀欏葷湅錛岃嚦灝戞湁涓鐐圭偣錛屽浠g爜2-5銆?

Code Listing 2-5. A Stripped-Down Service

public class PrankService extends Service

{

public IBinder onBind(Intent intent)

{

return null;

}

}

鍦ㄨ繖涓緥瀛愪腑錛屼綘涓嶄細浣跨敤璇ユ湇鍔nBind鏂規硶榪涜浜掑姩銆備綘鍙互綆鍗曞湴鍚姩鍜屽仠姝㈡湇鍔″湪浣犵殑涓昏媧誨姩鍐呫傝鍋氬埌榪欎竴鐐癸紝浣犲繀欏婚噸鍐欎袱涓柟娉曞湪鏈嶅姟綾伙細

OnStart 錛圛nt startId 錛孊undle argument 錛?
onDestroy錛堬級

褰揙nStart琚皟鐢ㄦ椂錛屼綘浼氬紑濮嬫挱鏀劇殑濯掍綋鏂囦歡銆傚綋鏈嶅姟琚牬鍧忥紝灝變細鏄庣‘鍦板仠姝€傝繖涓嶆槸蹇呯劧瑕佹眰錛屼絾浣犱細鏄庣櫧銆?

鍚姩鏈嶅姟

寮濮嬩竴涓柊鐨勬湇鍔″簲璇ョ被浼間簬寮濮嬫椿鍔ㄣ傝嚜浠庝綘宸茬粡鎺ヨЕ鍒拌繖鏄嚑嬈★紝鎴戝氨鍦ㄧ粰浣犱竴孌典唬鐮侊紝璁╀綘鏁寸悊涓涓嬨?璋冪敤鍓嶉潰鍒楀嚭鐨凱rankActivity OnCreate鏂規硶銆傜畝鍗曟浛鎹㈡敞閲?#8220; We’ll need to start the music service here ”鐢ㄤ笅闈㈢殑浠g爜琛岋細

startService(new Intent

("com.apress.START_AUDIO_SERVICE"), null );

鍚屾牱錛岃繖涓湅涓婂幓寰堢啛鎮夈傚惎鍔ˋctivity鍜屽惎鍔╯ervice涔嬮棿鍞竴鐨勫尯鍒槸錛堥櫎浜嗕笉鍚岀殑鏂規硶璋冪敤錛夋槸闅廔ntent浼犻抌undle錛堝疄闄呬笂鏄竴涓湴鍥炬垨鍝堝笇琛級鍙傛暟鐨勮兘鍔涖傝繖bundle灝嗚浼犻掑埌OnCreate鏂規硶鏈嶅姟銆?

鍚姩闊充箰

BREW鍜孞ava涓鏍鳳紝Android鐨勫獟浣撴挱鏀撅紙綆鍗曠殑鎾斁/鍋滄璁$畻錛夐潪甯哥畝鍗曟槗鐢ㄣ傚綋浣犳湇鍔$殑OnStart鍑芥暟琚皟鐢紝浣犱細鍔犺澆鍜屾挱鏀?res/raw 鐩綍涓殑嫻嬭瘯闊抽鏂囦歡棣栧厛瑕佸仛鐨勬槸澶嶅埗闊抽鏍鋒湰鏂囦歡瀵煎叆/res/raw錛堝鏋滄病鏈夎繖涓洰褰曪紝緇х畫騫跺垱寤哄畠錛夈備笅涓姝ワ紝鏀句笅緹炶頸錛屽茍澶嶅埗鍐欏叆灝婇噸錛岄煶棰戞枃浠跺師濮嬫枃浠跺す銆傚鏋滀綘浣跨敤Eclipse錛屼綘搴旇娣誨姞鐩稿簲鐨勫厓绱燫.raw銆傚湪浣犵殑鎯呭喌涓嬶紝瀹冪殑R.raw.test銆?

鐜板湪浣犳湁涓涓煶涔愭枃浠剁殑寮曠敤錛屼綘鍙互娣誨姞紼嬪簭 PrankService 鐨勮姹傚涓?錛?

public void onStart(int startId, Bundle arguments)

{

MediaPlayer p;

super .onStart(startId, arguments);

player = MediaPlayer.create(this , R.raw.test);

player.start();

}

璇瘋浣?錛?鏄竴涓噸鍐欑殑 OnStart 鏂規硶 錛?鍥犳浣犲繀欏昏皟鐢ㄧ埗綾誨悓涓鍑芥暟鎴?Android 灝嗗彉寰椾笉紼沖畾銆傚湪榪欎竴鐐逛笂錛屼綘闇瑕佺敤MediaPlayer鐨勯潤鎬佺被鍒涘緩涓涓柊鐨勫獟浣撴挱鏀懼櫒瀵硅薄銆傚洜涓簊ervice鏄痗ontext鐨勫瓙綾伙紝浣犲皢涓涓寚閽堜紶閫掔粰浣犲綋鍓嶇殑context鍜岄潤鎬佸彉閲忎唬琛ㄤ綘鐨勬祴璇曞獟浣撱傚湪榪欎竴鐐逛笂錛屼綘鍙互璋冪敤play錛岀幇鍦ㄤ綘鍙互寮濮嬪繖浜嗐傛挱鏀句細緇х畫鍦ㄥ悗鍙拌繍琛岋紝鐩村埌stopService榪欎釜鏂規硶鏄敱浣犵殑涓籄ctivity璋冪敤銆?

褰搒topService琚皟鐢ㄦ椂錛屼笅闈㈢殑鏂規硶灝嗚皟鐢細

public void onDestroy()

{

super.onDestroy();

player.stop();

}

 

鍚屾儏鐨勮鍔?

鏃㈢劧浣犳槸涓涓笉閿欑殑鐖卞紑鐜╃瑧鐨勪漢 錛?浣犺緇欎綘鐨勫彈瀹寵呬竴涓彴闃朵笅銆傛濡備綘涔嬪墠瑙佽繃鐨勶紝Activity鏄敱Intent Receiver瑙﹀彂鐨勶紝鍦ㄦ椿鍔ㄥ惎鍔ㄦ湇鍔$殑鏃墮棿鐐逛笂銆傛濡備綘鍒氭墠鐪嬪埌鐨勶紝service鏄礋璐f挱鏀懼櫔澹版縺鎬掍綘鍓誨伐紼嬪笀銆傚悓鏍鳳紝鍥犱負浣犳槸浠佹厛鐨勫湪浣犵殑鎵ц鍥炴姤鐨勫悓鏃訛紝浣犲繀欏諱負鍙楀鑰呰璁″叧闂煶涔愭柟娉曘傛坊鍔犲湪浣犵殑PrankActivity涓嬮潰鐨勬柟娉曞彲浠ュ疄鐜頒綘鍠勬剰鐨勮鍔細

public boolean onKeyDown(int keyCode, KeyEvent event)

{

stopService(new Intent(

"com.apress.START_AUDIO_SERVICE"));

finish();

return true;

}

 

閰嶇疆鏂囦歡

涓嬮潰鏄〃鐜板涓嬫墍紺?錛?

<service android:name=".PrankService">

<intent-filter>

<action android:name=

"com.apress.START_AUDIO_SERVICE" />

<category android:name=

"android.intent.category.DEFAULT" />

</intent-filter>

</service>

 

 

紱呭畻鍜屾姤澶嶇殑鑹烘湳

閫氳繃涓嶅厜鏄庢澶х殑灝忔伓浣滃墽搴旂敤紼嬪簭鐨勪嬌鐢?錛?浣犲簲璇ユ槑鐧戒簡 Intents 錛孖ntent Receivers 錛宻ervices 鍜孉ctivities 濡備綍 鍏卞悓鍦ㄥ厛榪涚殑 銆?涓昏鏄悗鍙?鐨?搴旂敤紼嬪簭涓繍琛岀殑銆傛垜鐜板湪瑕佹敼鍙樹竴涓嬫柟寮忥紝涓姝ヤ竴姝ュ仛錛屼綘鍋氫簡浠涔堜互鍙婂浣曞疄鐜板畠銆?

璁╂垜鍋氱殑鏇村ソ

浣犲仛浜嗕互涓嬪唴瀹癸細

1銆備綘浣跨敤姝g‘鐨勬潈闄愬拰緋葷粺鎺ユ敹鍣ㄧ殑鎰忓浘綰х煭淇$殑鎰忓浘瀹夋帓鐨勫璞℃槸PrankSMSReciever姣忔瀹炰緥鍖栦竴涓墜鏈轟笂鐨凷MS鍒拌揪銆傚鏋滀綘鐨処ntent Receiver鍙戠幇涓涓潪甯哥壒瀹氱殑SMS鐨勬湁鏁堣澆鑽鳳紝瀹冨皢閫氳繃鍙戦両ntent灝嗗惎鍔ㄤ綘鐨勬椿鍔ㄣ?

2銆傝繖欏規椿鍔ㄥ悕涓篜rankActivity錛屼細鐩戝惉琚玃rankSMSReceiver鐨勭壒瀹歩ntent action銆傚綋瀹冩敹鍒扮‘鍒噄ntent action錛屼綘鐨勬椿鍔ㄥ皢鏄劇ず涓涓?#8220;gotcha”娑堟伅緇欏彈瀹寵呫傚悓鏃訛紝璇ユ椿鍔ㄥ皢鍙戝嚭鎰忓浘鏃ㄥ湪鍚姩鏈嶅姟銆傚鏋滃湪浠諱綍鏃跺欏彈瀹充漢/鐢ㄦ埛鎸変笅涓涓數璇濅笂鐨勯敭錛屽簲鐢ㄧ▼搴忓皢閫鍑猴紝闊充箰鏈嶅姟灝嗙粓姝€?

3銆傛湇鍔$被錛岀О涓篜rankService錛岀洃鍚琍rankActivity鐨刬ntent錛屽皢鍚姩騫跺紑濮嬫挱鏀句護浜鴻鍘岋紝棰勫畾涔夌殑闊抽鏂囦歡銆傚畠灝嗙戶緇挱鏀撅紝鐩村埌瀹冭瑕佹眰鍋滄閫氳繃PrankActivity鐨勮皟鐢ㄦ柟娉晄topService銆?

娉ㄦ剰錛氭紺轟緥搴旂敤紼嬪簭涓嶆秹鍙婃墜鏈虹殑鏈湴鐭俊搴旂敤銆傚洜涓烘墍鏈夌殑intent receiver浼犲叆鐨勯氱煡鎰忓浘錛屼綘鐨勫簲鐢ㄥ皢琚簤澶虹敤鎴蜂笌Android鐨勫叧娉ㄧ煭淇℃敹浠剁鐨勫簲鐢ㄣ傚湪鐢熶駭涓紝榪欏彲鑳介渶瑕佺浉褰撹鏃跺櫒涔熻瑙﹀彂鏂囨湰鏈夋晥杞借嵎錛岃繖鏄竴涓井濡欏涓鐐?“0xBADCAT0_Fire_The_Missiles 錛?#8221;

 

鍦ˋndroid涓Щ鍔ㄦ暟鎹?

鏈鍚庯紝浣犻渶瑕佹妸閲嶇偣鏀懼湪鍐呭瑙f瀽鍣ㄣ?Android涓嶄細緇橲DK鐗瑰埆鐨勬墜鏈烘枃浠剁郴緇熺殑璁塊棶鏉冮檺錛屽Brew涓鏍楓傚畠涔熸病鏈夋彁渚涗竴涓猂ecordStore錛屽儚Java ME涓鏍楓傚湪浣犵殑Activities銆両ntent  Receiver鍜宻ervices涔嬮棿錛屼綘浼犻掓暟鎹殑涓昏鏂規硶鏄繀欏婚氳繃ContentResolver瓚呯被銆傝櫧鐒朵綘鍙互瀛樺偍鏁版嵁閫氳繃鏂囦歡錛屽弬鏁幫紝鍜屽叾浠栨暟鎹簱錛屽彲浠ラ噰鍙栬澶氬艦寮忥紝Android闄勫甫鐨勫嚑涓噸瑕佸唴緗甤ontent resovlers銆傝繖閲屾湁涓涓垪琛紝Android鐨勪富瑕乧ontent resovlers錛屼綘鍙兘瑕佺粡甯鎬簰鍔ㄥ熀紜涓婏細


嫻忚鍣?

涔︾
鎼滅儲鍘嗗彶


鐢佃瘽鍛煎彨
閫氳瘽璁板綍
鏈榪戦氳瘽


鑱旂郴

緋葷粺璁劇疆
紜歡璁劇疆錛堣摑鐗欙紝緗戠粶璁劇疆錛?
杞歡璁劇疆

Android 鐨勬枃妗f彁渚涗簡闈炲父濂界殑紺轟緥 錛?a >http://code.google.com/android/ devel /data/contentproviders.html 錛僽singacp 銆傞┈涓婃垜瑕佺粰浣犳紨紺烘庢牱娣誨姞涓涓功絳懼埌鎵嬫満嫻忚鍣ㄧ殑涔︾鍒楄〃銆傞鍏堬紝浣犺鎼滅儲褰撳墠鐨勪功絳懼垪琛紝鏌ョ湅浣犵殑閾炬帴鏄惁瀛樺湪銆傜浜岋紝浣犺娣誨姞涔︾錛屽鏋滀笉瀛樺湪銆?

 

娉ㄦ剰錛氬彲浠ュ垱寤轟綘鑷繁鐨刢ontent provider錛屼綔涓轟竴縐嶆柟寮忥紝涓轟簡鍏叡璁塊棶灝佽Android鐨凷QLite鐨勬墽琛屻備綘灝嗚繘鍏ュ浣曞湪鍚庨潰鐨勭珷鑺備腑榪欎竴鐐廣傜幇鍦ㄤ綘鍙槸鍘誨鐞哻ontent resolver浜ょ粰鐨?#8220;client”鏂歸潰銆?

 

Android閲囩敤浜嗚嚜瀹氫箟鐨凷QLite瀹炵幇錛屾潵瀛樺偍鏈湴淇℃伅銆傚鏋滀綘涓嶇啛鎮塖QL鐨勫熀紜鐭ヨ瘑錛岀幇鍦ㄤ篃璁告槸涓涓涔犵殑鏈轟細銆備負琛ㄨ堪鏂逛究錛屾垜瑕佸亣璁句綘浜嗚В鍩烘湰鐨凷QL鏌ヨ鍛戒護銆傚鏋滀綘闇瑕佽繘涓姝ユ彁楂橈紝Apress涓婃湁涓涓緢濂界殑璧勬簮http://apress.com/book/ catalog?category=145 銆?

 

鏃犺葷殑鑷垜鎺ㄩ攢

璁╂垜浠涓涓嬩綘鐨勫簲鐢ㄧ▼搴忎腑“about”閮ㄥ垎錛屼綘鎯蟲湁涓涓寜閽紝娣誨姞浣犵殑鍟嗕笟杞歡緗戦〉鍒扮敤鎴風殑web涔︾銆備綘瑕佺‘淇濆畠涓嶆坊鍔犱袱嬈★紝濡傛灉浣犵殑鐢ㄦ埛鏈夊啀嬈$偣鍑昏鎸夐挳鎰忓銆備負浜嗕嬌榪欎釜瀹炰緥綆鍗曪紝浣犲皢瑙﹀彂榪欎釜浜嬩歡鍦ㄤ綘紺轟緥搴旂敤紼嬪簭涓紝褰撶敤鎴鋒寜涓嬩竴涓敭銆?

娉ㄦ剰錛氬湪涓涓湁瓚g殑娉ㄦ剰錛屽鏋滀綘闇瑕佽瘉鏄庯紝浣滀負涓涓紑鍙戜漢鍛橈紝Android鏄繕娌℃湁瀹屽叏鎴愮啛鐨勶紝浣犲彧瑕佺湅鐪嬫瘮瀵逛笅鏂囦歡鐨刟ndroid.content.ContentResolver鏂規硶getDataFilePath錛屽叾涓瀹氾細 “ 璇蜂笉瑕佷嬌鐢ㄦ鍔熻兘錛佹湁浜鴻榪欎竴鐐癸紝浠栦滑涓嶅簲璇ャ備綘娌℃湁鐩存帴鐨勮闂枃浠跺唴鐨勫唴瀹規彁渚涘晢銆備笉瑕佺榪欎釜銆傝蛋寮銆?“ 榪欐槸濂斤紝鐭ラ亾鍗充嬌鏄Android鐨勬枃妗f妧鏈綔瀹舵湁騫介粯鎰熴?

 

鑾峰彇鐢ㄦ埛鐨勪功絳?

榪欏簲璇ユ槸鏄捐屾槗瑙佺殑錛岃嚦灝戝湪榪欎竴鐐癸紝寮鍙戜漢鍛樺彲浠ュ仛涓浜涢潪甯擱偑鎭剁殑浜嬫儏錛岃闂敤鎴風殑涔︾銆傜洰鍓嶈繕涓嶆竻妤氾紝鍦ㄨ繖涓鐐癸紝Android浼氬仛浠涔堜互闃叉鍙戠敓榪欑被浜嬫儏銆傛垜鎯寵繖寰楃敱榪愯惀鍟嗘潵閿佸畾鎴栫洃瑙嗘琛屼負銆傚湪浠諱綍鎯呭喌涓嬶紝浣犲皢浣跨敤涓涓皟鐢ㄦ柟娉昺anagedQuery錛屽畠灝嗚繑鍥炰竴涓垪琛ㄧ敤鎴風殑涔︾錛?

 

Cursor bookmarks =

android.provider.Browser.getAllBookmarks

(getContentResolver());

int urlColumn = bookmarks.getColumnIndex(

android.provider.Browser.BookmarkColumns.URL );

Cursor results;

String[] proj = new String[]

{

android.provider.BaseColumns._ID,

android.provider.Browser.BookmarkColumns.URL,

android.provider.Browser.BookmarkColumns.TITLE

};

results =

managedQuery(android.provider.Browser.BOOKMARKS_URI,

proj, null ,

android.provider.Browser.BookmarkColumns.URL

+ " ASC");

鐜板湪鎴戝皢鍒嗚В姣忎竴涓搷浣溿備綘棣栧厛瑕佷功絳劇綉鍧鍒楃儲寮曘傚啀嬈★紝鍥犱負Android閫氳繃SQL鏍煎紡鎻愪緵鍏跺鏁板唴閮ㄦ暟鎹殑璁塊棶錛屼綘搴旇涔犳儻浜庣敤鏁版嵁搴撶殑鏂瑰紡寮曚綘淇濆瓨鐨勪俊鎭傛帴涓嬫潵錛屼綘灝嗚緗父鏍囷紝涓涓被浼糐ava ME涓璕ecordStore鏋氫婦瀵硅薄錛岃緗瓧絎︿覆鏁板肩殑鏄犲皠銆傚洜涓轟綘鍙叧蹇冨垪鍖呭惈鐨勭綉鍧錛屽畠淇濆瓨闈炲父綆鍗曘傛柟娉曡皟鐢╩anagedQuery鏄皟鐢ㄥ皢榪斿洖浣犵殑鏁版嵁銆備綘鍙互閫氳繃URI涓負涔︾瀛樺偍瀛楃涓詫紝浜ょ粰浣犱簡綆鍗曠殑鏄犲皠鏁板鹼紝涓嶉渶瑕亀here璇彞錛屽茍鍛婅瘔瀹冩寜闄嶅簭鎺掑垪鐨勭綉鍧銆?

 

鎼滅儲緇撴灉

鎼滅儲緇撴灉寰堢畝鍗曞彧瑕佽凱浠f父鏍囧璞★紝鏄氳繃綆鍗曠殑鍏夋爣榪唬瀵硅薄鍜岄鍑轟竴鍒椾粠URL瀛楃涓睮D浣犳绱㈠墠 錛?

Cursor results =

android.provider.Browser.getAllBookmarks

(getContentResolver());

int urlColumn =

results.getColumnIndex

(android.provider.Browser.BookmarkColumns.URL);

results.first();

do

{

//url is a method param

//containing what we're looking for

if(results.getString(urlColumn).equals(url))

return false;

} while (results.next());

浣犲彲浠ュ仛鏇村鐨勫熀浜?URL 鐨勫唴瀹?錛?浣嗙幇鍦ㄤ綘浼氬彧鏄湅浣犵殑 www.apress.com 閾炬帴銆傚緢鏄庢樉錛屽鏋滄浠g爜鐨勮繍琛屾槸涓婅堪Apress緗戝潃錛屼綘涓嶄細鎵懼埌瀹冦傚洜涓虹敤鎴峰笇鏈涙坊鍔犺吹鍏徃鐨勭綉鍧鍦ㄨ櫄鎷熺殑“About” ” 閮ㄥ垎涓紝浣犱篃瑕佺粰浠栦滑銆?

浣跨敤Content Resolver娣誨姞閭伓鍏徃緗戝潃

涔熻浠栦滑涓嶆槸閭伓錛屼絾浣犲姞鍏ヤ粬浠傜敱浜嶢press涔熻鏄叕鍙告渶閭伓閭i噷錛堜笉鏄垜鏈夊亸瑙侊紝璁頒綇錛夛紝浣犺浠栦滑鎽嗚劚瀹冿紝鍙涓嬈°備笅闈㈡槸涓涓編涓界殑ContentReceiver鏂瑰紡娣誨姞涔︾璁板綍錛?

ContentValues inputValues = new ContentValues();

inputValues.put

(android.provider.Browser.BookmarkColumns.BOOKMARK,

"1");

inputValues.put

(android.provider.Browser.BookmarkColumns.URL,

"

inputValues.put

(android.provider.Browser.BookmarkColumns.TITLE,

"Apress, the not so evil company");

ContentResolver cr = getContentResolver();

Uri uri =

cr.insert

(android.provider.Browser.BOOKMARKS_URI,

inputValues);

鎯沖ぇ澶氭暟杞歡寮鍙戝伐鍏峰寘錛屾湁涓嶆涓縐嶆柟娉曟潵瀹屾垚鐩稿悓鐨勪換鍔°傛棭浜涙椂鍊欙紝浣犳湁鏇村鏉傜殑鏂規硶鍔犱功絳俱傝繖涓柟娉曟槸鏈夌敤鐨勶紝鍥犱負瀹冪粰浣犱竴涓弬鑰冨浣曟坊鍔犲厓绱犻氳繃ContentResolver涓嶅叿鏈夎緟鍔╁姛鑳姐傜幇鍦紝榪欓噷鐨勭畝鍗曠殑鏂規硶錛歛ndroid.provider.Browser.saveBookmark錛坱his錛?#8220;Apress”錛寀rl錛夛紱甯姪鍑芥暟浼氬惎鍔ㄤ竴涓璇濇錛岃姹傜敤鎴風‘璁ゅ鍔犱功絳俱傝繖鍙兘鏄渶鐢ㄦ埛鍙嬪ソ鐨勬柟寮忔潵娣誨姞涔︾錛岄櫎闈炰綘鎯蟲帶鍒跺璇濇鐨勬ā鏍楓?

騫寵 鏃╅鐨勭粍鎴?

鍦ㄨ繃鍘葷殑涓変釜渚嬪瓙浣犳帰璁ㄤ簡Android鐨勬墍鏈変富瑕佹瀯寤烘ā鍧椼備竴寮濮嬩綘鐪嬪埌浜嗗疄鐢ㄧ殑鍚姩鐢婚潰銆傝繖璁╀綘鎺㈢儲浜嗗熀鏈煡璇嗗叧浜庡惎鍔ㄣ佺淮鎶ゅ拰縐誨姩閫氳繃Activity瀵硅薄銆傝繖鏄綘瀛︿範intents and interprocess/object communication榪堝嚭鐨勭涓姝ャ備嬌鐢ㄥ拰浼犻掓剰鍥懼湪媧誨姩錛屾湇鍔★紝鍐呭澶勭悊錛屾帴鏀跺櫒鍜屾剰鍥句箣闂村彲鑳芥槸涓涓渶閲嶈鐨勪簨鎯咃紝榪欐槸Android涓庡叾浠栫Щ鍔ㄧ幆澧冪殑鍖哄埆銆?

瀵逛簬Activity鍜岄氫俊鍩虹鐭ヨ瘑錛屼綘宸茬粡鏈変簡緇忛獙錛屼綘緇х畫瀛︿範鏈嶅姟鍜屾剰鍥炬帴鏀跺櫒銆傝浣跨敤榪欎袱涓粍鎴愰儴鍒嗭紝浣犵児璋冧簡 鐙$尵鐨?鎭朵綔鍓у簲鐢ㄧ▼搴忥紝鏃㈣兘寮鴻揩浣犱嬌鐢ㄦ墍鏈?涓粍寤猴紙媧誨姩錛屾湇鍔★紝鍜屾剰鍥劇殑鎺ユ敹鍣級錛屼嬌鎵鏈変笁涓簰鐩告矡閫氥傚嚑涔庢槸鏃佹敞錛屼綘鐮旂┒浠涔堥渶瑕佸緱鍒伴氱煡鏃訛紝鐭俊鍦ㄦ墜鏈轟笂鍒拌揪銆傛渶鍚庯紝浣犳帰璁ㄥ浣曟绱㈠拰鍐欏叆鐨勫唴瀹規槸瑙f瀽鍣ㄦ湰鏈鴻澶囷細嫻忚鍣ㄧ殑涔︾鏁版嵁搴撱備簨鎯呯殑璇佹槑騫墮潪鎬繪槸鎸夎鍒掕繘琛岋紝Android鎷掔粷鍔犲叆浣犲湪涓涓柊鐨勫皾璇曢氳繃浼犵粺鐨勪功絳懼唴瀹硅В鏋愭柟娉曪紝璇ユ柟娉昮orcedthat鎴戝凡緇忎粙緇嶇殑鍩烘湰鐭ヨ瘑錛岀幇鍦ㄦ槸鏃跺欒鎵嬫満鐢ㄦ埛鍦ㄦ潈琛″涓鐐廣?

 

鏈枃鏉ヨ嚜CSDN鍗氬錛岃漿杞借鏍囨槑鍑哄錛?a >http://blog.csdn.net/lihaifeng555/archive/2009/09/27/4599691.aspx



婕傛紓 2010-05-10 20:51 鍙戣〃璇勮
]]>
Android妯℃嫙鍣ㄥ叆闂╗杞琞http://m.shnenglu.com/AutomateProgram/archive/2010/04/29/113953.html婕傛紓婕傛紓Thu, 29 Apr 2010 06:13:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/04/29/113953.htmlhttp://m.shnenglu.com/AutomateProgram/comments/113953.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/04/29/113953.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/113953.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/113953.htmlhttp://blog.csdn.net/kome2000/archive/2009/07/23/4374684.aspx
Android妯℃嫙鍣ㄥ叆闂╗杞琞
2009-06-15 17:31

瑕佺帺google 鎵嬫満 G1鐨勬ā鎷熷櫒錛屽綋鐒墮渶瑕佸厛鍘籫oogle涓婇潰涓嬭澆Android鐨凷DK錛岃В鍘嬪嚭鏉ュ悗鍦⊿DK鐨勬牴鐩綍涓嬫湁涓涓猼ools鏂囦歡澶癸紝閲岄潰灝辨槸妯℃嫙鍣ㄥ拰涓浜涢潪甯告湁鐢ㄧ殑宸ュ叿銆?/p>

鍙屽嚮“emulator.exe”錛岀洿鎺ュ惎鍔ㄦā鎷熷櫒錛岀畝鍗曞惂銆傚綋鐒訛紝濡傛灉瑕佸妯℃嫙鍣ㄨ繘琛屼竴浜涘畾鍒訛紝榪樻槸瑕佷粠鍛戒護琛岃皟鐢紝甯︿笂鍙傛暟鍚姩銆備笅闈㈠氨鏉ヤ粙緇嶄竴涓嬪惎鍔ㄦ槸甯哥敤鐨勫嚑涓弬鏁幫細

1.妯℃嫙鍣ㄥ瑙傜殑瀹氬埗錛?br>480x320, landscape: emulator -skin HVGA-L
320x480, portrait : emulator -skin HVGA-P (default)
320x240, landscape: emulator -skin QVGA-L
240x320, portrait : emulator -skin QVGA-P

2.涓烘ā鎷熷櫒鍔犱笂SD鍗★細
emulator -sdcard D:\sdcard.img

涓嬮潰鎴戜滑鍐嶆潵璇磋濡備綍鍒涘緩"sdcard.img"鏂囦歡錛?br>“tools”鐩綍涓嬭繕鏈夊彟澶栦竴涓緢濂界敤鐨勫伐鍏?#8220;mksdcard.exe”錛屼竴鐪嬪悕瀛楀氨鐭ラ亾鈥斺攎ake sdcard銆傚錛屽氨鐢ㄥ畠鏉ュ垱寤轟竴涓?#8220;SD鍗?#8221;銆?/p>

鍛戒護涓猴細
mksdcard 1024M D:\sdcard.img

OK,榪欐牱涓涓閲忎負1G鐨凷D鍗″氨鍒涘緩瀹屾瘯浜嗐?/p>

浣跨敤SDCard:

鍒涘緩: mksdcard <1024M> <sdcard.img>
(bytes(default)錛孠錛孧)

榪炴帴鍒版ā鎷熷櫒: emulator -sdcard <鐩綍/sdcard.img>

浼犳枃浠跺埌SDCard: adb push <鐩綍/audio.mp3> </sdcard/audio.mp3>

 

鐜╄繃鎵嬫満妯℃嫙鍣ㄧ殑浜轟竴鑸渶鎰熷叴瓚g殑褰撶劧鏄ā鎷熷櫒鑳藉仛浠涔堝憿錛熶笅闈竴涓閬撴潵錛?/p>

GPhone鐨勬ā鎷熷櫒鏈変釜鐗規湁鐨勫彿鐮侊細15555218135錛岃繖涓氨綾諱技鎴戜滑瀹炰綋鎵嬫満鐨凷IM鍗″彿鐮佸暒銆傝瀹炵幇鎷ㄥ彿錛岀敤鎵嬫満錛熷綋鐒朵笉琛岋紒

鏇寸畝鍗曪紝涓夋錛?br>1.榪愯 cmd
2.榪炴帴: telnet localhost 5554
3.鍛戒護:gsm call 15555218135

look錛佹槸涓嶆槸妯℃嫙鍣ㄤ笂鏄劇ず鏉ョ數浜嗭紵鎺ュ惉/鎸傛柇鍜屽疄浣撴墜鏈轟竴鏍楓?/p>

鍙戠煭淇′篃涓鏍風畝鍗曪紝閲嶅涓婇潰1錛?涓ゆ錛岀涓夐儴鍛戒護鏀逛竴涓嬶細
sms send 15555218135 Hello,this is a Message.

鏉ヨ璇碢C涓庢ā鎷熷櫒鏂囦歡浼犺緭鐨勬柟娉曞惂銆傝繖閲岄渶瑕佺敤鍒板彟涓涓噸瑕佸伐鍏鳳紝涔熷湪“tools”鐩綍涓嬶紝“adb.exe”銆?/p>

adb:

adb(Android Debug Bridge)鏄?span class="t_tag" style="line-height: 19px; ">Android 鎻愪緵鐨勪竴涓氱敤鐨勮皟璇曞伐鍏鳳紝鍊熷姪榪欎釜宸ュ叿錛屾垜浠彲浠ョ鐞嗚澶囨垨鎵嬫満 妯℃嫙鍣?/span> 鐨?span class="t_tag" style="line-height: 19px; ">鐘舵?/span> 銆傝繕鍙互榪涜浠ヤ笅鐨勬搷浣滐細
1銆佸揩閫熸洿鏂拌澶囨垨鎵嬫満妯℃嫙鍣ㄤ腑鐨勪唬鐮侊紝濡傚簲鐢ㄦ垨Android緋葷粺鍗囩駭錛?br>2銆佸湪璁懼涓婅繍琛宻hell鍛戒護錛?br>3銆佺鐞嗚澶囨垨鎵嬫満妯℃嫙鍣ㄤ笂鐨勯瀹氱鍙o紱
4銆佸湪璁懼鎴栨墜鏈烘ā鎷熷櫒涓婂鍒舵垨綺樿創鏂囦歡

涓浜涘父鐢ㄧ殑鎿嶄綔錛?/p>

榪涘叆Shell: adb shell

閫氳繃涓婇潰鐨勫懡浠わ紝灝卞彲浠ヨ繘鍏ヨ澶囨垨妯℃嫙鍣ㄧ殑shell鐜涓紝鍦ㄨ繖涓?span class="t_tag" style="line-height: 19px; ">Linux Shell涓紝浣犲彲浠ユ墽琛屽悇縐?span class="t_tag" style="line-height: 19px; ">Linux 鐨勫懡浠わ紝鍙﹀濡傛灉鍙兂鎵ц涓鏉hell鍛戒護錛屽彲浠ラ噰鐢ㄤ互涓嬬殑鏂瑰紡錛?br>adb shell [command]
濡傦細adb shell dmesg浼氭墦鍗板嚭鍐呮牳鐨勮皟璇曚俊鎭?br>(Android鐨刲inux shell鍋氫簡澶ч噺綺劇畝錛屽緢澶歭inux甯哥敤鎸囦護閮戒笉鏀寔)

涓婁紶鏂囦歡: adb push <PC鏂囦歡> </tmp/...>
涓嬭澆鏂囦歡: adb pull </tmp/...> <PC鏂囦歡>

瀹夎紼嬪簭: adb install <*.apk>
鍗歌澆杞歡: adb shell rm /data/app/<*.apk>

琛ュ厖涓鐐癸紝閫氳繃adb瀹夎鐨勮蔣浠?*.apk)閮藉湪"/data/app/"鐩綍涓嬶紝鎵浠ュ畨瑁呮椂涓嶅繀鍒跺畾璺緞錛屽嵏杞藉彧闇瑕佺畝鍗曠殑鎵ц"rm"灝辮銆?/p>

緇撴潫adb: adb kill-server

鏄劇ずandroid妯℃嫙鍣ㄧ姸鎬?
adb devices (绔彛淇℃伅)
adb get-product (璁懼鍨嬪彿)
adb get-serialno (搴忓垪鍙?

絳夊緟姝e湪榪愯鐨勮澶? adb wait-for-device

绔彛杞彂: adb forward adb forward tcp:5555 tcp:1234 
(灝嗛粯璁ょ鍙CP 5555杞彂鍒?234绔彛涓?

鏌ョ湅bug鎶ュ憡: adb bugreport

adb shell sqlite3 璁塊棶鏁版嵁搴揝QLite3 
adb shell logcat -b radio 璁板綍鏃犵嚎閫氳鏃ュ織錛?/span> 涓鑸潵璇達紝鏃犵嚎閫氳鐨勬棩蹇楅潪甯稿錛屽湪榪愯鏃舵病蹇呰鍘昏褰曪紝浣嗘垜浠繕鏄彲浠ラ氳繃鍛戒護錛岃緗褰曪細

搴旂敤紼嬪簭閰嶇疆鏂囦歡:
"AndroidManifest.xml"涓?br>"<category android:name="android.intent.category.LAUNCHER" />"
鍐沖畾鏄惁搴旂敤紼嬪簭鏄惁鏄劇ず鍦≒anel涓?/p>

-----------------------------------------------------------------------------------

am鎸囦護(鍦╯hell鍐呬嬌鐢╝m鏉ュ姞杞絘ndroid搴旂敤):
am [start|instrument]    
    
am start [-a <ACTION>] 
   [-d <DATA_URI>]
   [-t <MIME_TYPE>]                 
   [-c <CATEGORY> [-c <CATEGORY>] ...]  
   [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
   [-n <COMPONENT>] [-D] [<URI>]       

am instrument [-e <ARG_NAME> <ARG_VALUE>] 
   [-p <PROF_FILE>]                 
   [-w] <COMPONENT>

鍚姩嫻忚鍣?
am start -a android.intent.action.VIEW -d http://www.google.cn/

鎷ㄦ墦鐢佃瘽:
am start -a android.intent.action.CALL -d tel:10086

鍚姩google map鐩存帴瀹氫綅鍒板寳浜?
am start -a android.intent.action.VIEW geo:0,0?q=beijing

-----------------------------------------------------------------------------------

鐩綍錛?/strong>
# ls
ls
sqlite_stmt_jou
cache
sdcard
etc
init
init.goldfish.r
init.rc
data
system
proc
sys
sbin
default.prop
root
dev

榪欓噷瑕佽鏄庝笅錛屼粠andorid涓緱鍒扮殑鏂囦歡嫻佺殑瀛楃涓茬殑欏哄簭鏄寜“綾誨瀷+鏉冮檺+鎷ユ湁鑰?鏁扮粍+澶у皬+鏃ユ湡+鍚嶇О+閾炬帴鍒?#8221;欏哄簭鎺掑垪鐨勶紝鍏朵腑綾誨瀷“d”琛ㄧず鐨勬槸鏂囦歡澶癸紝"l"琛ㄧず鐨勬槸閾炬帴,'-'琛ㄧず鐨勬槸鏂囦歡銆?/p>

渚嬪d rwxrwx--- system   cache                2009-01-09 11:46              cache

涓婇潰鐨勭洰褰曞氨鏄氳繃瑙f瀽ls鍛戒護榪斿洖鐨勫瓧絎︿覆榪涜瑙f瀽鐨勩?/p>

-----------------------------------------------------------------------------------

鏁版嵁搴?

鑱旂粶浜?鍚氳瘽璁板綍)鏁版嵁搴擄細/data/data/com.android.providers.contacts/databases/contacts.db
濯掍綋搴?璨屼技璁板綍閾冨0璁劇疆絳変俊鎭?: /data/data/com.android.providers.media/internal.db
緋葷粺璁劇疆: /data/data/com.android.providers.settings/databases/settings.db
鐭俊搴? /data/data/com.android.providers.telephony/databases/mmssms.db
Web璁劇疆: /data.data/com.android.settings/databases/webview.db
鍦板浘鎼滅儲鍘嗗彶璁板綍:/data/data/com.google.android.apps.maps/databases/search_history.db
甯愬彿搴?(鍐呭惈androidId淇℃伅) : /data/data/com.google.android.googleapps/databases/accounts.db

閾冨0: /system/media/audio
鏃跺尯璁劇疆: /data/property/persist.sys.timezone

-----------------------------------------------------------------------------------
鐩墠鐨勫畨瑁呮ā寮?br>銆銆瀹夎鍓嶏細
銆銆1. emulator -wipe-data
銆銆2. adb push busybox ./
銆銆3. adb shell ./busybox tar -cf /tmp/data.tar /data
銆銆4. adb pull /tmp/data.tar .
銆銆5. mkdir original
銆銆6. cd original
銆銆7. tar -xf ../data.tar

銆銆瀹夎鍚庯細
銆銆1. adb shell ./busybox tar -cf /tmp/data.tar /data
銆銆2. adb pull /tmp/data.tar .
銆銆3. mkdir after_install
銆銆4. cd after_install
銆銆5. tar -xf ../data.tar
銆銆
    鐩墠鏉ョ湅錛屽氨鏄?data/app鍜宒ata/data涓嬪浜嗕袱涓浉鍏蟲枃浠訛紝鍚屾椂鍦?data/system/packages.xml涓鍔犱簡瀹夎鐨勭▼搴忎俊鎭備技涔庤彍鍗曚篃鏄粠榪欎釜鏂囦歡涓緱鍒版槸鍚︽柊瀹夎紼嬪簭錛屼互鍙婂浣曟樉紺虹浉鍏充俊鎭瘮濡傚悕縐頒粈涔堢殑銆?/p>

android妯℃嫙鍣ㄥ拰鐪熸満鐨勪笉鍚屼箣澶勶細

    * 涓嶆敮鎸佸懠鍙拰鎺ュ惉瀹為檯鏉ョ數錛涗絾鍙互閫氳繃鎺у埗鍙版ā鎷熺數璇濆懠鍙?鍛煎叆鍜屽懠鍑?
    * 涓嶆敮鎸乁SB榪炴帴
    * 涓嶆敮鎸佺浉鏈?瑙嗛鎹曟崏
    * 涓嶆敮鎸侀煶棰戣緭鍏?鎹曟崏)錛涗絾鏀寔杈撳嚭(閲嶆斁)
    * 涓嶆敮鎸佹墿灞曡蟲満
    * 涓嶈兘紜畾榪炴帴鐘舵?br>    * 涓嶈兘紜畾鐢墊睜鐢甸噺姘村鉤鍜屼氦嫻佸厖鐢電姸鎬?br>    * 涓嶈兘紜畾SD鍗$殑鎻掑叆/寮瑰嚭
    * 涓嶆敮鎸佽摑鐗?/p>

andoroid妯℃嫙鍣ㄤ嬌鐢ㄦ敞鎰忥細
騫蟲椂浣跨敤emulator嫻嬭瘯寮鍙戠殑緗戝弸娉ㄦ剰搴旇瀹氭湡娓呯悊涓婥:\Documents and Settings\sh\Local Settings\Temp\AndroidEmulator鏂囦歡澶癸紝鐢變簬Android妯℃嫙鍣ㄦ瘡嬈¤繍琛屾椂浼氫復鏃剁敓鎴愬嚑涓?tmp鍚庣紑鐨勪復鏃舵枃浠訛紝娌℃湁鍑犱釜鏈堝姛澶畝鍗曚竴鐪嬬珶鐒跺崰鐢ㄧ鐩樼┖闂撮珮杈?GB涔嬪銆傝繖浜涙枃浠剁綉鍙嬪彲浠ュ畨鍏ㄧ殑鍒犻櫎



婕傛紓 2010-04-29 14:13 鍙戣〃璇勮
]]>
android 涓┍鍔ㄧ殑鑷姩瀹夎銆?/title><link>http://m.shnenglu.com/AutomateProgram/archive/2010/04/27/113712.html</link><dc:creator>婕傛紓</dc:creator><author>婕傛紓</author><pubDate>Tue, 27 Apr 2010 06:56:00 GMT</pubDate><guid>http://m.shnenglu.com/AutomateProgram/archive/2010/04/27/113712.html</guid><wfw:comment>http://m.shnenglu.com/AutomateProgram/comments/113712.html</wfw:comment><comments>http://m.shnenglu.com/AutomateProgram/archive/2010/04/27/113712.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/AutomateProgram/comments/commentRss/113712.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/AutomateProgram/services/trackbacks/113712.html</trackback:ping><description><![CDATA[浠婂ぉ鐪嬭繃浜哸pkok.exe鐨刟pk瀹夎杞歡錛岃兘鑷姩鐨勫府浣犲畨瑁呴┍鍔紝<br>涔嬪墠娌℃湁鎬庝箞鍋氳繃錛屽湪codeproject涓壘浜嗙瘒鏂囩珷錛?a ><br>http://www.codeproject.com/KB/system/DevMgr.aspx</a> <img src ="http://m.shnenglu.com/AutomateProgram/aggbug/113712.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/AutomateProgram/" target="_blank">婕傛紓</a> 2010-04-27 14:56 <a href="http://m.shnenglu.com/AutomateProgram/archive/2010/04/27/113712.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>android鍏ㄥ睆鏄劇ずhttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113647.html婕傛紓婕傛紓Mon, 26 Apr 2010 13:35:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113647.htmlhttp://m.shnenglu.com/AutomateProgram/comments/113647.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113647.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/113647.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/113647.htmlandroid涓叏灞忔樉紺?br>1.璁劇疆涓烘棤閫氱煡鏍?br>2.璁劇疆涓烘棤鏍囬鏍?br>
package com.pp.myAdu.util;

import android.app.Activity;
import android.view.Window;
import android.view.WindowManager;

public class ActivityUtil {
 public static void noTitleBar(Activity activity){
  activity.requestWindowFeature(Window.FEATURE_NO_TITLE);
 }
 
 public static void noNotificationBar(Activity activity){
  final Window win = activity.getWindow();
  win.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
 }
 public static void fullScreen(Activity activity){
  noTitleBar(activity);
  noNotificationBar(activity);
 }
}


濂囨殑鏄?.0浠ヤ笂鐨勭増鏈紝
瑕佸湪.xml涓緗?br>AndroidManifest.xml   涓璦ctivity 鍔?android:theme="@android:style/Theme.NoTitleBar"AndroidManifest.xml   涓璦ctivity 鍔?android:theme="@android:style/Theme.NoTitleBar"

灞忓箷澶у皬 320 - 480 480-720



婕傛紓 2010-04-26 21:35 鍙戣〃璇勮
]]>
android鍔ㄧ敾瀹炵幇http://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113637.html婕傛紓婕傛紓Mon, 26 Apr 2010 12:35:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113637.htmlhttp://m.shnenglu.com/AutomateProgram/comments/113637.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113637.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/113637.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/113637.htmlhttp://www.eoeandroid.com/thread-653-1-1.html 
http://www.eoeandroid.com/viewthread.php?tid=4477&highlight=%E5%B1%B1%E5%AF%A8

婕傛紓 2010-04-26 20:35 鍙戣〃璇勮
]]>
濡備綍瀵煎叆android涓殑sample渚嬪瓙http://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113617.html婕傛紓婕傛紓Mon, 26 Apr 2010 09:47:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113617.htmlhttp://m.shnenglu.com/AutomateProgram/comments/113617.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/04/26/113617.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/113617.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/113617.html

鍘熸枃鍦板潃錛?a >http://www.chinaandroid.com/redirect.php?tid=123&goto=lastpost&styleid=13

 

寰堝瀛︿範android鐨勬湅鍙嬮兘鎯崇湅鐪嬪畨瑁呯洰褰曢噷闈ample鐨勬晥鏋?浣嗘槸浣跨敤file-->import ... 閫夋嫨浜唕oot directory 鍚?涓嬮潰鐨刾roject娌℃湁欏圭洰閫夋嫨.璇曡瘯榪欐牱鍋?File-->new-->android project -->閫夋嫨create project from existing source ...-->閫夋嫨鐩綍,濡傛灉鐩綍閫夋嫨鍚嶣uild target娌℃湁閫夋嫨,鑷繁鍕鵑変竴涓?->finish,1.5鐨剆dk涓鑸鍏ユ椂浼氳嚜鍔ㄥ嬀閫塨uild target鐨?瀵煎叆鍚庝篃涓嶄細鏈変粈涔堥棶棰?鎷呬笉鏄?.5鐨?鐒跺悗build target閫夋嫨鐨勬槸1.5鐨?欏圭洰瀵煎叆榪涙潵鍚?src鐨勫寘閲岄潰浼氭湁涓涓猂.java鏂囦歡,gen鐩綍涓嬮潰涔熸湁涓涓猂.java鏂囦歡,姝ゆ椂,鍒犻櫎鎺塻rc鐨勫寘閲岄潰鐨勯偅涓猂.java鏂囦歡灝卞彲浠ヤ簡,1.0鐗堟湰鐨勪竴浜涘姛鑳?.5涓嶆敮鎸?姣斿璇碢hone,1.0鏈塒hone榪欎釜綾?閲岄潰鏈夋寕鎺夌數璇濈殑鏂規硶,浣?.0浠ヤ笂鐨勭増鏈笉鏀寔榪欎釜浜?鏈夎繖縐嶆儏鍐電殑璇濆氨鐢?.0鐨則arget鍠?...

婕傛紓 2010-04-26 17:47 鍙戣〃璇勮
]]>
Android寮婧愰」鐩拰web鍦ㄧ嚎鏌ョ湅http://m.shnenglu.com/AutomateProgram/archive/2010/04/24/113417.html婕傛紓婕傛紓Sat, 24 Apr 2010 03:39:00 GMThttp://m.shnenglu.com/AutomateProgram/archive/2010/04/24/113417.htmlhttp://m.shnenglu.com/AutomateProgram/comments/113417.htmlhttp://m.shnenglu.com/AutomateProgram/archive/2010/04/24/113417.html#Feedback0http://m.shnenglu.com/AutomateProgram/comments/commentRss/113417.htmlhttp://m.shnenglu.com/AutomateProgram/services/trackbacks/113417.htmlhttp://www.netmite.com/android/mydroid/
http://android.git.kernel.org/

鐜板湪android鐨勫紑婧愰」鐩凡緇忓緢澶氫簡錛?br>鍦ㄨ繖涓湴鍧鏈夎緇嗙殑鍒嗙被錛?br>http://www.androidosi.com/index.php

rockon-android錛坅ndroid闊充箰鎾斁鍣級
svn 涓嬭澆鍦板潃錛?/strong>http://rockon-android.googlecode.com/svn/trunk/
涓涓?d鐨勬挱鏀懼櫒銆?

榪涚▼綆$悊鍣?br>http://freetaskmanager.googlecode.com/svn/trunk/

code 涓婄殑浠g爜錛?br>http://code.google.com/hosting/search?q=label%3aAndroid


Android 1.5 澶╂皵widget紺轟緥
http://code.google.com/p/android-sky/



婕傛紓 2010-04-24 11:39 鍙戣〃璇勮
]]>
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
      <noscript id="pjuwb"></noscript>
            <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
              <dd id="pjuwb"></dd>
              <abbr id="pjuwb"></abbr>
              日韩亚洲欧美在线观看| 99精品99| 欧美日韩第一区| 欧美日韩精品一区二区天天拍小说 | 国产精品红桃| 国产精品一区二区久激情瑜伽| 国产精品午夜在线观看| 韩国精品久久久999| 在线观看一区二区视频| 亚洲免费大片| 欧美在线看片a免费观看| 久久影院午夜片一区| 欧美黄色网络| 亚洲免费一级电影| 欧美午夜精品一区| 欧美一进一出视频| 先锋影音网一区二区| 亚洲自拍偷拍色片视频| 久久精品人人做人人综合| 久久综合给合久久狠狠色 | 欧美在线综合视频| 免费欧美视频| 亚洲网站在线播放| 久久人人97超碰国产公开结果 | 久久综合九色欧美综合狠狠| 91久久中文| 亚洲一区免费网站| 欧美成人官网二区| 国产午夜亚洲精品不卡| 日韩视频一区二区三区| 久久九九99| 中国av一区| 欧美激情精品久久久久久免费印度| 国产精品腿扒开做爽爽爽挤奶网站 | 久久精品观看| 国产精品毛片va一区二区三区| 伊人久久综合97精品| 亚洲欧美一区二区视频| 亚洲成人资源网| 久久精品国产第一区二区三区最新章节 | 在线观看亚洲视频| 欧美一级成年大片在线观看| 亚洲国产精品成人一区二区| 欧美专区在线播放| 国产乱肥老妇国产一区二| 一本色道久久88亚洲综合88| 欧美高潮视频| 久久婷婷国产综合精品青草| 国产亚洲电影| 欧美在线看片a免费观看| 正在播放欧美视频| 欧美午夜电影在线观看| 一区二区三区偷拍| 亚洲人成在线观看一区二区| 美女视频黄免费的久久| 亚洲国产成人91精品| 开元免费观看欧美电视剧网站| 亚洲男人的天堂在线| 在线视频免费在线观看一区二区| 另类成人小视频在线| 在线观看福利一区| 欧美va亚洲va香蕉在线| 久久亚洲私人国产精品va媚药| 国产亚洲欧洲997久久综合| 久久精品av麻豆的观看方式| 性欧美激情精品| 黄色一区二区三区四区| 美女成人午夜| 欧美国产精品久久| 9色精品在线| 一区二区三区欧美在线| 国产伦精品一区二区三区高清| 性欧美video另类hd性玩具| 午夜国产精品视频| 在线观看中文字幕不卡| 欧美国产专区| 欧美视频免费在线观看| 欧美一区二区三区成人| 久久精品国产99国产精品澳门| 亚洲高清影视| 一区二区av在线| 国产综合视频在线观看| 女人色偷偷aa久久天堂| 欧美激情精品久久久六区热门| 宅男噜噜噜66一区二区| 亚洲欧美国产视频| 亚洲大片av| 一区二区三区四区五区视频| 国产日韩欧美一区二区三区四区| 老鸭窝毛片一区二区三区| 欧美久久久久中文字幕| 欧美在线免费观看| 欧美 日韩 国产在线| 亚洲欧美日韩第一区| 久久亚洲色图| 先锋影音一区二区三区| 久久尤物电影视频在线观看| 在线视频欧美日韩| 久久精品视频在线| 亚洲一区影音先锋| 免费成人性网站| 欧美在线免费观看视频| 欧美精品一区二区视频| 久久一日本道色综合久久| 欧美日韩视频第一区| 免费成人在线视频网站| 欧美视频中文字幕在线| 欧美国产免费| 国产综合网站| 亚洲一区观看| 在线视频日韩精品| 欧美国产视频在线观看| 久久久精彩视频| 国产精品私房写真福利视频| 亚洲激情视频在线观看| 一区二区在线视频播放| 亚洲永久免费av| 亚洲一区二区三区四区中文| 欧美激情按摩在线| 欧美福利视频在线观看| 狠狠做深爱婷婷久久综合一区| 亚洲特级片在线| 在线亚洲欧美专区二区| 制服诱惑一区二区| 99这里只有久久精品视频| 老鸭窝91久久精品色噜噜导演| 夜色激情一区二区| 亚洲欧洲在线视频| 韩国精品久久久999| 欧美性淫爽ww久久久久无| 亚洲免费中文字幕| 亚洲日本中文字幕| 欧美国产欧美亚洲国产日韩mv天天看完整| 久久午夜精品| 亚洲已满18点击进入久久| 美女免费视频一区| 国产区亚洲区欧美区| 亚洲一区免费观看| 欧美一区二区三区喷汁尤物| 国产精品久线观看视频| 在线一区视频| 午夜欧美大片免费观看| 国产精品综合| 欧美一级一区| 久久久久九九九九| 亚洲国产精品久久91精品| 美女视频网站黄色亚洲| 亚洲激情视频网| 中文av一区特黄| 国产精品欧美一区二区三区奶水| 一本色道婷婷久久欧美| 亚洲欧美日韩中文视频| 国产精品久久久久久妇女6080| 亚洲午夜黄色| 久久精品亚洲精品国产欧美kt∨| 国产亚洲一区在线| 久久在线免费观看| 91久久国产综合久久91精品网站| 亚洲私拍自拍| 国内一区二区三区| 欧美激情精品久久久六区热门| 日韩午夜激情av| 亚洲性感美女99在线| 国产欧美激情| 免费亚洲一区二区| 中文亚洲欧美| 欧美sm视频| 亚洲午夜av电影| 国产亚洲欧美一级| 欧美成人免费观看| 午夜国产欧美理论在线播放 | 久久日韩精品| 99热在线精品观看| 国产精品视频xxxx| 美女91精品| 亚洲欧美在线一区| 亚洲韩国青草视频| 亚洲欧美一区二区三区在线| **性色生活片久久毛片| 欧美色欧美亚洲另类二区| 欧美在线www| 99亚洲视频| 亚洲第一视频| 久久久久国产精品www| 亚洲视频精品| 亚洲国产日韩在线一区模特| 国产精品视频导航| 欧美另类一区| 国产精品一级久久久| 欧美成年视频| 亚洲欧美日韩成人| 日韩视频免费观看| 狠狠色伊人亚洲综合成人| 欧美新色视频| 欧美成人首页| 久久婷婷久久| 久久久久久久999| 久久精品论坛| 久久成人精品无人区| 午夜精品久久久久久久99水蜜桃|