




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第十章Android-基本組件(2)組件通信與廣播通信1知識點回顧Android的四大組件簡介Activity創建、配置、啟動的方式Activity的生命周期2本章目標掌握使用Intent組件實現Activity之間的切換與傳值了解廣播消息的發送與接收實現3本章教學內容Intent簡介啟動Activity獲取Activity返回值Intent過濾器廣播消息4Intent簡介Intent是一個動作的完整描述,包含了動作的產生組件、接收組件和傳遞的數據信息Intent也可稱為一個在不同組件之間傳遞的消息,這個消息在到達接收組件后,接收組件會執行相關的動作Intent為Activity、Service和BroadcastReceiver等組件提供交互能力Intent的用途啟動Activity和Service在Android系統上發布廣播消息廣播消息可以是接收到特定數據或消息,也可以是手機的信號變化或電池的電量過低等信息
5本章教學內容Intent簡介啟動Activity獲取Activity返回值Intent過濾器廣播消息6啟動Activity在Android系統中,應用程序一般都有多個Activity,Intent可以實現不同Activity之間的切換和數據傳遞啟動Activity方式顯式啟動,必須在Intent中指明啟動的Activity所在的類隱式啟動,Android系統根據Intent的動作和數據來決定啟動哪一個Activity,也就是說在隱式啟動時,Intent中只包含需要執行的動作和所包含的數據,而無需指明具體啟動哪一個Activity,選擇權有Android系統和最終用戶來決定7啟動Activity顯式啟動使用Intent顯式啟動Activity創建一個Intent指定當前的應用程序上下文以及要啟動的Activity把創建好的這個Intent作為參數傳遞給startActivity()方法Intentintent=newIntent(IntentDemo.this,ActivityToStart.class);startActivity(intent);8啟動Activity顯式啟動IntentDemo示例說明如何使用Intent啟動新的ActivityIntentDemo示例包含兩個Activity類IntentDemoActivityToStart程序啟動是默認啟動IntentDemo這個Activity9啟動Activity顯式啟動點擊“啟動Activity”按鈕后,程序啟動ActivityToStart這個Activity10啟動Activity顯式啟動在AndroidManifest.xml文件中注冊上面這兩個Activity,應使用<activity>標簽,嵌套在<application>標簽內部<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android=""package="edu.hrbeu.IntentDemo"android:versionCode="1"android:versionName="1.0"><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> <activityandroid:name=".IntentDemo" android:label="@string/app_name"> <intent-filter> <actionandroid:name="ent.action.MAIN"/> <categoryandroid:name="ent.category.LAUNCHER"/> </intent-filter>11啟動Activity顯式啟動Android應用程序中,用戶使用的每個組件都必須在AndroidManifest.xml文件中的<application>節點內定義<application>節點下共有兩個<activity>節點,分別代表應用程序中所使用的兩個Activity,IntentDemo和ActivityToStart13. </activity>14. <activityandroid:name=".ActivityToStart"15. android:label="@string/app_name">16. </activity>17. </application>18. <uses-sdkandroid:minSdkVersion="3"/>19.</manifest>12啟動Activity顯式啟動在IntentDemo.java文件中,包含了顯示使用Intent啟動Activity的核心代碼在點擊事件的處理函數中,Intent構造函數的第1個參數是應用程序上下文,程序中的應用程序上下文就是IntentDemo;第2個參數是接收Intent的目標組件,使用的是顯式啟動方式,直接指明了需要啟動的ActivityButtonbutton=(Button)findViewById(R.id.btn);button.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewview){ Intentintent=newIntent(IntentDemo.this,ActivityToStart.class); startActivity(intent); }});13啟動Activity隱式啟動優點:不需要指明需要啟動哪一個Activity,而由Android系統來決定,有利于使用第三方組件隱式啟動Activity時,Android系統在應用程序運行時解析Intent,并根據一定的規則對Intent和Activity進行匹配,使Intent上的動作、數據與Activity完全吻合匹配的Activity可以是應用程序本身的,也可以是Android系統內置的,還可以是第三方應用程序提供的。因此,這種方式更加強調了Android應用程序中組件的可復用性14啟動Activity隱式啟動在缺省情況下,Android系統會調用內置的Web瀏覽器Intent的動作是Intent.ACTION_VIEW,根據URI的數據類型來匹配動作數據部分的URI是Web地址,使用Uri.parse(urlString)方法,可以簡單的把一個字符串解釋成Uri對象Intent的語法如下Intent構造函數的第1個參數是Intent需要執行的動作第2個參數是URI,表示需要傳遞的數據Intentintent=newIntent(Intent.ACTION_VIEW,Uri.parse(""));startActivity(intent);Intentintent=newIntent(Intent.ACTION_VIEW,Uri.parse(urlString));15啟動Activity隱式啟動Android系統支持的常見動作字符串常量表動作說明ACTION_ANSWER打開接聽電話的Activity,默認為Android內置的撥號盤界面ACTION_CALL打開撥號盤界面并撥打電話,使用Uri中的數字部分作為電話號碼ACTION_DELETE打開一個Activity,對所提供的數據進行刪除操作ACTION_DIAL打開內置撥號盤界面,顯示Uri中提供的電話號碼ACTION_EDIT打開一個Activity,對所提供的數據進行編輯操作ACTION_INSERT打開一個Activity,在提供數據的當前位置插入新項ACTION_PICK啟動一個子Activity,從提供的數據列表中選取一項ACTION_SEARCH啟動一個Activity,執行搜索動作ACTION_SENDTO啟動一個Activity,向數據提供的聯系人發送信息ACTION_SEND啟動一個可以發送數據的ActivityACTION_VIEW最常用的動作,對以Uri方式傳送的數據,根據Uri協議部分以最佳方式啟動相應的Activity進行處理。對于http:address將打開瀏覽器查看;對于tel:address將打開撥號呼叫指定的電話號碼ACTION_WEB_SEARCH打開一個Activity,對提供的數據進行Web搜索16啟動Activity隱式啟動WebViewIntentDemo示例說明如何隱式啟動Activity17啟動Activity隱式啟動當用戶在文本框中輸入要訪問網址后,通過點擊“瀏覽此URL”按鈕,程序根據用戶輸入的網址生成一個Intent,并以隱式啟動的方式調用Android內置的Web瀏覽器,并打開指定的Web頁面本例輸入的網址是哈爾濱工程大學的主站地址,地址是:18本章教學內容Intent簡介啟動Activity獲取Activity返回值Intent過濾器廣播消息19獲取Activity返回值在上一小節IntentDemo示例中,通過使用startActivity(Intent)方法啟動Activity后,啟動后的兩個Activity之間相互獨立,沒有任何的關聯在很多情況下,后啟動的Activity是為了讓用戶對特定信息進行選擇,在關閉這個Activity后,用戶的選擇信息需要返回給未關閉的那個Activity按照Activity啟動的先后順序,先啟動的稱為父Activity,后啟動的稱為子Activity如果需要將子Activity的部分信息返回給父Activity,則可以使用Sub-Activity的方式去啟動子Activity20Intent獲取Activity返回值獲取子Activity的返回值,一般可以分為以下三個步驟以Sub-Activity的方式啟動子Activity設置子Activity的返回值在父Activity中獲取返回值21獲取Activity返回值以Sub-Activity的方式啟動子Activity調用startActivityForResult(Intent,requestCode)函數參數Intent用于決定啟動哪個Activity參數requestCode是唯一的標識子Activity的請求碼顯式啟動子Activity的代碼如下隱式啟動子Activity的代碼如下intSUBACTIVITY1=1;Intentintent=newIntent(this,SubActivity1.class);startActivityForResult(intent,SUBACTIVITY1);intSUBACTIVITY2=2;Uriuri=Uri.parse("content://contacts/people");Intentintent=newIntent(Intent.ACTION_PICK,uri);startActivityForResult(intent,SUBACTIVITY2);22獲取Activity返回值設置子Activity的返回值在子Activity調用finish()函數關閉前,調用setResult()函數將所需的數據返回給父ActivitysetResult()函數有兩個參數結果碼返回值23獲取Activity返回值設置子Activity的返回值結果碼表明了子Activity的返回狀態,通常為Activity.RESULT_OK或者Activity.RESULT_CANCELED,或自定義的結果碼,結果碼均為整數類型返回值用封裝在Intent中,子Activity通過Intent將需要返回的數據傳遞給父Activity。數據主要是Uri形式,可以附加一些額外信息,這些額外信息用Extra的集合表示下面代碼說明如何在子Activity中設置返回值Uridata=Uri.parse("tel:"+tel_number);Intentresult=newIntent(null,data);result.putExtra("address","");setResult(RESULT_OK,result);finish();24獲取Activity返回值在父Activity中獲取返回值當子Activity關閉時,啟動它的父Activity的onActivityResult()函數將被調用;如果需要在父Activity中處理子Activity的返回值,則重載此函數即可此函數的語法如下第1個參數requestCode,用來表示是哪一個子Activity的返回值第2個參數resultCode用于表示子Activity的返回狀態第3個參數data是子Activity的返回數據,返回數據類型是Intent。根據返回數據的用途不同,Uri數據的協議則不同,也可以使用Extra方法返回一些原始類型的數據publicvoidonActivityResult(intrequestCode,intresultCode,Intentdata);25獲取Activity返回值在父Activity中獲取返回值下面代碼說明如何在父Activity中處理子Activity的返回值privatestaticfinalintSUBACTIVITY1=1;privatestaticfinalintSUBACTIVITY2=2;
@OverridepublicvoidonActivityResult(intrequestCode,intresultCode,Intentdata){ Super.onActivityResult(requestCode,resultCode,data); switch(requestCode){ caseSUBACTIVITY1: if(resultCode==Activity.RESULT_OK){ UriuriData=data.getData(); }elseif(resultCode==Activity.RESULT_CANCEL){ } break;26獲取Activity返回值在父Activity中獲取返回值第1行代碼和第12行代碼是兩個子Activity的請求碼第7行代碼對請求碼進行匹配第9行和第11行代碼對結果碼進行判斷如果返回的結果碼是Activity.RESULT_OK,則在代碼的第10行使用getData()函數獲取Intent中的Uri數據如果返回的結果碼是Activity.RESULT_CANCELED,則不進行任何操作14.
caseSUBACTIVITY2:15. if(resultCode==Activity.RESULT_OK){16. UriuriData=data.getData();17. }18. break;19. }20.}27獲取Activity返回值munication示例說明了如何以Sub-Activity方式啟動子Activity,以及使用Intent進行組件間通信28獲取Activity返回值當用戶點擊“啟動Activity1”和“啟動Activity2”按鈕時,程序將分別啟動子SubActivity1和SubActivity229獲取Activity返回值SubActivity1提供了一個輸入框,以及“接受”和“撤銷”兩個按鈕如果在輸入框中輸入信息后點擊“接受”按鈕,程序會把輸入框中的信息傳遞給其父Activity,并在父Activity的界面上顯示如果用戶點擊“撤銷”按鈕,則程序不會向父Activity傳遞任何信息30獲取Activity返回值SubActivity2主要是為了說明如何在父Activity中處理多個子Activity,因此僅提供了用于關閉SubActivity2的“關閉”按鈕31獲取Activity返回值munication文件結構32獲取Activity返回值munication.java文件的核心代碼如下publicclassmunicationextendsActivity{ privatestaticfinalintSUBACTIVITY1=1; privatestaticfinalintSUBACTIVITY2=2; TextViewtextView; @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.main); textView=(TextView)findViewById(R.id.textShow); finalButtonbtn1=(Button)findViewById(R.id.btn1); finalButtonbtn2=(Button)findViewById(R.id.btn2);
btn1.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewview){ Intentintent=newIntent(munication.this,SubActivity1.class); startActivityForResult(intent,SUBACTIVITY1);33獲取Activity返回值17. }});
20. btn2.setOnClickListener(newOnClickListener(){21. publicvoidonClick(Viewview){22. Intentintent=newIntent(munication.this,SubActivity2.class);23. startActivityForResult(intent,SUBACTIVITY2);24. }25. });}
28. @Override29. protectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){30. super.onActivityResult(requestCode,resultCode,data);31. 32. switch(requestCode){33. caseSUBACTIVITY1:34獲取Activity返回值代碼的第2行和第3行分別定義了兩個子Activity的請求碼在代碼的第16行和第23行以Sub-Activity的方式分別啟動兩個子Activity34.
if(resultCode==RESULT_OK){35. UriuriData=data.getData();36. textView.setText(uriData.toString());37. }38. break;39. caseSUBACTIVITY2:40. break;41. }42. }43.}35獲取Activity返回值代碼第29行是子Activity關閉后的返回值處理函數,其中requestCode是子Activity返回的請求碼,應該與第2行和第3行定義的兩個請求碼相匹配resultCode是結果碼,在代碼第32行對結果碼進行判斷,如果等于RESULT_OK,在第35行代碼獲取子Activity的返回值中的數據data是返回值,子Activity需要返回的數據就保存在data中36獲取Activity返回值SubActivity1.java的核心代碼如下publicclassSubActivity1extendsActivity{ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.subactivity1); finalEditTexteditText=(EditText)findViewById(R.id.edit); ButtonbtnOK=(Button)findViewById(R.id.btn_ok); ButtonbtnCancel=(Button)findViewById(R.id.btn_cancel);
btnOK.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewview){ StringuriString=editText.getText().toString(); Uridata=Uri.parse(uriString); Intentresult=newIntent(null,data); setResult(RESULT_OK,result); finish(); }37獲取Activity返回值第13行代碼將EditText控件的內容作為數據保存在Uri中第14行代碼中使用這個Uri構造Intent第15行代碼中,將Intent作為返回值,RESUIT_OK作為結果碼,通過調用setResult()函數,將返回值和結果碼傳遞給父Activity第16行代碼調用finish()函數關閉當前的子Activity18.
});19. 20. btnCancel.setOnClickListener(newOnClickListener(){21. publicvoidonClick(Viewview){22. setResult(RESULT_CANCELED,null);23. finish();24. }25. });26. }27.}38獲取Activity返回值SubActivity2.java的核心代碼第10行的setResult()函數僅設置了結果碼,第2個參數為null,表示數據需要傳遞給父ActivitypublicclassSubActivity2extendsActivity{ @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.subactivity2);
ButtonbtnReturn=(Button)findViewById(R.id.btn_return); btnReturn.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewview){ setResult(RESULT_CANCELED,null); finish(); } }); }}39本章教學內容Intent簡介啟動Activity獲取Activity返回值Intent過濾器廣播消息40Intent過濾器Intent過濾器Intent過濾器是一種根據Intent中的動作(Action)、類別(Categorie)和數據(Data)等內容,對適合接收該Intent的組件進行匹配和篩選的機制Intent過濾器可以匹配數據類型、路徑和協議,還包括可以用來確定多個匹配項順序的優先級(Priority)應用程序的Activity組件、Service組件和BroadcastReceiver都可以注冊Intent過濾器,則這些組件在特定的數據格式上就可以產生相應的動作41Intent過濾器注冊Intent過濾器在AndroidManifest.xml文件的各個組件的節點下定義<intent-filter>節點,然后在<intent-filter>節點中聲明該組件所支持的動作、執行的環境和數據格式等信息在程序代碼中動態地為組件設置Intent過濾器<intent-filter>節點支持<action>標簽、<category>標簽和<data>標簽<action>標簽定義Intent過濾器的“動作”<category>標簽定義Intent過濾器的“類別”<data>標簽定義Intent過濾器的“數據”42Intent過濾器注冊Intent過濾器<intent-filter>節點支持的標簽和屬性<category>標簽用來指定Intent過濾器的服務方式,每個Intent過濾器可以定義多個<category>標簽,程序開發人員可使用自定義的類別,或使用Android系統提供的類別標簽屬性說明<action>android:name指定組件所能響應的動作,用字符串表示,通常使用Java類名和包的完全限定名構成<category>android:category指定以何種方式去服務Intent請求的動作<data>Android:host指定一個有效的主機名android:mimetype指定組件能處理的數據類型android:path有效的URI路徑名android:port主機的有效端口號android:scheme所需要的特定的協議43Intent過濾器注冊Intent過濾器Android系統提供的類別AndroidManifest.xml文件中的每個組件的<intent-filter>都被解析成一個Intent過濾器對象。當應用程序安裝到Android系統時,所有的組件和Intent過濾器都會注冊到Android系統中。這樣,Android系統便知道了如何將任意一個Intent請求通過Intent過濾器映射到相應的組件上值說明ALTERNATIVEIntent數據默認動作的一個可替換的執行方法SELECTED_ALTERNATIVE和ALTERNATIVE類似,但替換的執行方法不是指定的,而是被解析出來的BROWSABLE聲明Activity可以由瀏覽器啟動DEFAULT為Intent過濾器中定義的數據提供默認動作HOME設備啟動后顯示的第一個ActivityLAUNCHER在應用程序啟動時首先被顯示44Intent過濾器Intent解析Intent到Intent過濾器的映射過程稱為“Intent解析”Intent解析可以在所有的組件中,找到一個可以與請求的Intent達成最佳匹配的Intent過濾器Intent解析的匹配規則Android系統把所有應用程序包中的Intent過濾器集合在一起,形成一個完整的Intent過濾器列表在Intent與Intent過濾器進行匹配時,Android系統會將列表中所有Intent過濾器的“動作”和“類別”與Intent進行匹配,任何不匹配的Intent過濾器都將被過濾掉。沒有指定“動作”的Intent過濾器可以匹配任何的Intent,但是沒有指定“類別”的Intent過濾器只能匹配沒有“類別”的Intent45Intent過濾器Intent解析把Intent數據Uri的每個子部與Intent過濾器的<data>標簽中的屬性進行匹配,如果<data>標簽指定了協議、主機名、路徑名或MIME類型,那么這些屬性都要與Intent的Uri數據部分進行匹配,任何不匹配的Intent過濾器均被過濾掉如果Intent過濾器的匹配結果多于一個,則可以根據在<intent-filter>標簽中定義的優先級標簽來對Intent過濾器進行排序,優先級最高的Intent過濾器將被選擇46Intent過濾器47<activity
android:name=“MainActivity”>
<!–
程序主入口,圖標出現在應用管理器-->
<intent-filter>
<action
android:name=“ent.action.MAIN”
/>
<category
android:name=“ent.category.LAUNCHER”
/>
</intent-filter>
</activity>
<activity
android:name=“ShareActivity”>
<!--activity處理“SEND”動作
和text數據-->
<intent-filter>
<action
android:name=“ent.action.SEND”/>
<category
android:name=“ent.category.DEFAULT”/>
<data
android:mimeType=“text/plain”/>
</intent-filter>
<!--activity處理“SEND”及“SEND_MULTIPLE”動作,多媒體數據-->
<intent-filter>
<action
android:name="ent.action.SEND"/>
<action
android:name="ent.action.SEND_MULTIPLE"/>
<category
android:name="ent.category.DEFAULT"/>
<data
android:mimeType="image/*"/>
<data
android:mimeType="video/*"/>
</intent-filter>
</activity>
Intent過濾器IntentResolutionDemo示例IntentResolutionDemo示例說明了如何在AndroidManifest.xml文件中注冊Intent過濾器,以及如何設置<intent-filter>節點屬性來捕獲指定的IntentAndroidManifest.xml的完整代碼如下<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="" package="edu.hrbeu.IntentResolutionDemo" android:versionCode="1" android:versionName="1.0"> <applicationandroid:icon="@drawable/icon"android:label="@string/app_name"> <activityandroid:name=".IntentResolutionDemo" android:label="@string/app_name"> <intent-filter> <actionandroid:name="ent.action.MAIN"/> <categoryandroid:name="ent.category.LAUNCHER"/> </intent-filter>48Intent過濾器IntentResolutionDemo示例13.
</activity>14. <activityandroid:name=".ActivityToStart"15. android:label="@string/app_name">16. <intent-filter>17. <actionandroid:name="ent.action.VIEW"/>18. <categoryandroid:name="ent.category.DEFAULT"/>19. <dataandroid:scheme="schemodemo"android:host="edu.hrbeu"/>20. </intent-filter>21. </activity>22. </application>23. <uses-sdkandroid:minSdkVersion="3"/>24.</manifest>49Intent過濾器第7行代碼和第14行代碼分別定義了兩個Activity第9行到第12行是第1個Activity的Intent過濾器,動作是ent.action.MAIN,類別是ent.category.LAUNCHER。由過濾器的動作和類別可知,這個Activity是應用程序啟動后顯示的缺省用戶界面第16~20行是第2個Activity的Intent過濾器,過濾器的動作是ent.action.VIEW,表示根據Uri協議,以最佳的方式啟動相應的Activity;類別是ent.category.DEFAULT,表示數據的默認動作;數據的協議部分是android:scheme="schemodemo",數據的主機名稱部分是android:host="edu.hrbeu"50Intent過濾器IntentResolutionDemo.java文件中Intent實例化和啟動Activity的代碼如下第1行代碼定義的Intent,動作為Intent.ACTION_VIEW,與Intent過濾器的動作ent.action.VIEW匹配;Uri是"schemodemo://edu.hrbeu/path",其中的協議部分為"schemodemo",主機名部分為"edu.hrbeu",也與Intent過濾器定義的數據要求完全匹配代碼第1行定義的Intent,在Android系統與Intent過濾器列表進行匹配時,會與AndroidManifest.xml文件中ActivityToStart定義的Intent過濾器完全匹配Intentintent=newIntent(Intent.ACTION_VIEW,Uri.parse("schemodemo://edu.hrbeu/path"));startActivity(intent);51本章教學內容Intent簡介啟動Activity獲取Activity返回值Intent過濾器廣播消息52廣播消息廣播消息Intent的另一種用途是發送廣播消息應用程序和Android系統都可以使用Intent發送廣播消息廣播消息的內容可以與應用程序密切相關的數據信息,也可以Android的系統信息,例如網絡連接變化、電池電量變化、接收到短信和系統設置變化等等如果應用程序注冊了BroadcastReceiver,則可以接收到指定的廣播消息53廣播消息廣播信息的使用方法創建一個Intent注意:在構造Intent時必須用一個全局唯一的字符串標識其要執行的動作,通常使用應用程序包的名稱調用sendBroadcast()函數,就可把Intent攜帶的消息廣播出去如果要在Intent傳遞額外數據,可以用Intent的putExtra()方法54廣播消息利用Intent發送廣播消息,并添加了額外的數據,然后調用sendBroadcast()發生了廣播消息的代碼StringUNIQUE_STRING="edu.hrbeu.BroadcastReceiverDemo";Intentintent=newIntent(UNIQUE_STRING);intent.putExtra("key1","value1");intent.putExtra("key2","value2");sendBroadcast(intent);55廣播消息BroadcastReceiverBroadcastReceiver用于監聽廣播消息可以在AndroidManifest.xml文件或在代碼中注冊一個BroadcastReceiver,并在其中使用Intent過濾器指定要處理的廣播消息創建BroadcastReceiver需繼承BroadcastReceiver類,并重載onReceive()方法。代碼如下publicclassMyBroadcastReceiverextendsBroadcastReceiver{ @Override publicvoidonReceive(Contextcontext,Intentintent){ //TODO:ReacttotheIntentreceived. }}56廣播消息BroadcastReceiver的應用程序不需要一直運行,當Android系統接收到與之匹配的廣播消息時,會自動啟動此BroadcastReceiver基于以上的特征,BroadcastReceiver適合做一些資源管理的工作在BroadcastReceiver接收到與之匹配的廣播消息后,onReceive()方法會被調用onReceive()方法必須要在5秒鐘執行完畢,否則Android系統會認為該組件失去響應,并提示用戶強行關閉該組件57廣播消息BroadcastReceiverDemo示例說明了如何在應用程序中注冊BroadcastReceiver,并接收指定類型的廣播消息在點擊“發生廣播消息”按鈕后,EditText控件中內容將以廣播消息的形式發送出去,示例內部的BroadcastReceiver將接收這個廣播消息,并顯示在用戶界面的下方58廣播消息BroadcastReceiverDemo.java文件中包含發送廣播消息的代碼,其關鍵代碼如下第3行代碼創建Intent,將edu.hrbeu.BroadcastReceiverDem作為識別廣播消息的字符串標識第4行代碼添加了額外信息第5行代碼調用sendBroadcast()函數發送廣播消息button.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewview){ Intentintent=newIntent("edu.hrbeu.BroadcastReceiverDemo"); intent.putExtra("message",entryText.getText().toString()); sendBroadcast(intent); }});59廣播消息為了能夠使應用程序中的BroadcastReceiver接收指定的廣播消息,首先要在AndroidManifest.xml文件中添加In
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 管理學組織與團隊核心考點試卷訓練
- 航空器維修技術規范與標準
- 宜昌國企考試試題及答案
- 沂水編制考試試題及答案
- 醫院收費考試試題及答案
- 六一公司工會活動方案
- 六一吃大餐活動方案
- 六一城堡活動方案
- 六一居家趣味活動方案
- 六一廟會活動方案
- 2025年重慶市中考地理試題 (解析版)
- GB/T 14598.2-2025量度繼電器和保護裝置第1部分:通用要求
- 2025年河北省麒麟卷數學三試題及答案
- 重慶市渝北區2023-2024學年七年級下學期期末語文試題(解析版)
- DB13T 1349-2010 超貧磁鐵礦勘查技術規范
- 2024年上海市研發公共服務平臺管理中心招聘筆試真題
- 時尚飲品店場地租賃與飲品品牌入駐合同
- 2024年青海省囊謙縣事業單位公開招聘輔警考試題帶答案分析
- 《大學生職業生涯發展與規劃》電子教案-第六章 工作世界探索
- 上海市寶山區2023-2024學年六年級下學期期末語文試題(解析版)
- 河南省TOP二十名校2025屆高三猜題大聯考物理試題(含答案)
評論
0/150
提交評論