




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、組件通信與廣播消息本章學習目標了解使用Intent進行組件通信的原理掌握使用Intent啟動Activity的方法掌握獲取Activity返回值的方法了解Intent過濾器的原理與匹配機制掌握發送和接收廣播消息的方法6.1 IntentIntent是一個動作的完整描述,包含了動作的產生組件、接收組件和傳遞的數據信息Intent也可稱為一個在不同組件之間傳遞的消息,這個消息在到達接收組件后,接收組件會執行相關的動作 Intent為Activity、Service和BroadcastReceiver等組件提供交互能力Intent的用途啟動Activity和Service在Android系統上發布廣
2、播消息 廣播消息可以是接收到特定數據或消息,也可以是手機的信號變化或電池的電量過低等信息總之,Intent用于封裝程序的“啟動意圖”,以及不同組件之間的通訊。6.1 Intent6.1.1 啟動Activity在Android系統中,應用程序一般都有多個Activity,Intent可以實現不同Activity之間的切換和數據傳遞啟動Activity方式顯式啟動,必須在Intent中指明啟動的Activity所在的類隱式啟動, Android系統根據Intent的動作和數據來決定啟動哪一個Activity,也就是說在隱式啟動時,Intent中只包含需要執行的動作和所包含的數據,而無需指明具體啟
3、動哪一個Activity,選擇權有Android系統和最終用戶來決定6.1 Intent6.1.1 啟動Activity顯式啟動使用Intent顯式啟動Activity創建一個Intent指定當前的應用程序上下文以及要啟動的Activity把創建好的這個Intent作為參數傳遞給startActivity()方法Intent intent = new Intent(IntentDemo.this, ActivityToStart.class);startActivity(intent);6.1 Intent6.1.1 啟動Activity顯式啟動IntentDemo示例說明如何使用Intent
4、啟動新的ActivityIntentDemo示例包含兩個Activity類IntentDemoActivityToStart程序啟動是默認啟動IntentDemo這個Activity6.1 Intent6.1.1 啟動Activity顯式啟動點擊“啟動Activity”按鈕后,程序啟動ActivityToStart這個Activity6.1 Intent6.1.1 啟動Activity顯式啟動在AndroidManifest.xml文件中注冊上面這兩個Activity,應使用標簽,嵌套在標簽內部 6.1 Intent6.1.1 啟動Activity顯式啟動Android應用程序中,用戶使用的每
5、個組件都必須在AndroidManifest.xml文件中的節點內定義節點下共有兩個節點,分別代表應用程序中所使用的兩個Activity,IntentDemo和ActivityToStart13. 14. 16. 17. 18. 19. 6.1 Intent6.1.1 啟動Activity顯式啟動在IntentDemo.java文件中,包含了顯示使用Intent啟動Activity的核心代碼在點擊事件的處理函數中,Intent構造函數的第1個參數是應用程序上下文,程序中的應用程序上下文就是IntentDemo;第2個參數是接收Intent的目標組件,使用的是顯式啟動方式,直接指明了需要啟動的A
6、ctivityButton button = (Button)findViewById(R.id.btn);button.setOnClickListener(new OnClickListener()public void onClick(View view)Intent intent = new Intent(IntentDemo.this, ActivityToStart.class);startActivity(intent););6.1 Intent6.1.1 啟動Activity隱式啟動優點:不需要指明需要啟動哪一個Activity,而由Android系統來決定,有利于使用第三方組
7、件隱式啟動Activity時,Android系統在應用程序運行時解析Intent,并根據一定的規則對Intent和Activity進行匹配,使Intent上的動作、數據與Activity完全吻合匹配的Activity可以是應用程序本身的,也可以是Android系統內置的,還可以是第三方應用程序提供的。因此,這種方式更加強調了Android應用程序中組件的可復用性6.1 Intent6.1.1 啟動Activity隱式啟動在缺省情況下,Android系統會調用內置的Web瀏覽器Intent的動作是Intent.ACTION_VIEW,根據URI的數據類型來匹配動作數據部分的URI是Web地址,使
8、用Uri.parse(urlString)方法,可以簡單的把一個字符串解釋成Uri對象Intent的語法如下Intent構造函數的第1個參數是Intent需要執行的動作第2個參數是URI,表示需要傳遞的數據Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse();startActivity(intent);Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlString);6.1 Intent6.1.1 啟動Activity隱式啟動Android系統支持的常見動作字符
9、串常量表動作說明ACTION_ANSWER打開接聽電話的Activity,默認為Android內置的撥號盤界面ACTION_CALL打開撥號盤界面并撥打電話,使用Uri中的數字部分作為電話號碼ACTION_DELETE打開一個Activity,對所提供的數據進行刪除操作ACTION_DIAL打開內置撥號盤界面,顯示Uri中提供的電話號碼ACTION_EDIT打開一個Activity,對所提供的數據進行編輯操作ACTION_INSERT打開一個Activity,在提供數據的當前位置插入新項ACTION_PICK啟動一個子Activity,從提供的數據列表中選取一項ACTION_SEARCH啟動一
10、個Activity,執行搜索動作ACTION_SENDTO啟動一個Activity,向數據提供的聯系人發送信息ACTION_SEND啟動一個可以發送數據的ActivityACTION_VIEW最常用的動作,對以Uri方式傳送的數據,根據Uri協議部分以最佳方式啟動相應的Activity進行處理。對于http:address將打開瀏覽器查看;對于tel:address將打開撥號呼叫指定的電話號碼ACTION_WEB_SEARCH打開一個Activity,對提供的數據進行Web搜索6.1 Intent6.1.1 啟動Activity隱式啟動WebViewIntentDemo示例說明如何隱式啟動Ac
11、tivity6.1 Intent6.1.1 啟動Activity隱式啟動當用戶在文本框中輸入要訪問網址后,通過點擊“瀏覽此URL”按鈕,程序根據用戶輸入的網址生成一個Intent,并以隱式啟動的方式調用Android內置的Web瀏覽器,并打開指定的Web頁面本例輸入的網址是哈爾濱工程大學的主站地址,地址是:String s = ed.getText().toString();Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(s);startActivity(intent);6.1 Intent6.1.2 獲取Activity返回值
12、在上一小節IntentDemo示例中,通過使用startActivity(Intent)方法啟動Activity后,啟動后的兩個Activity之間相互獨立,沒有任何的關聯在很多情況下,后啟動的Activity是為了讓用戶對特定信息進行選擇,在關閉這個Activity后,用戶的選擇信息需要返回給未關閉的那個Activity按照Activity啟動的先后順序,先啟動的稱為父Activity,后啟動的稱為子Activity如果需要將子Activity的部分信息返回給父Activity,則可以使用Sub-Activity的方式去啟動子Activity6.1 Intent6.1.2 獲取Activit
13、y返回值獲取子Activity的返回值,一般可以分為以下三個步驟以Sub-Activity的方式啟動子Activity設置子Activity的返回值在父Activity中獲取返回值6.1 Intent6.1.2 獲取Activity返回值以Sub-Activity的方式啟動子Activity調用startActivityForResult(Intent, requestCode)函數參數Intent用于決定啟動哪個Activity參數requestCode是唯一的標識子Activity的請求碼顯式啟動子Activity的代碼如下隱式啟動子Activity的代碼如下int SUBACTIVITY
14、1 = 1;Intent intent = new Intent(this, SubActivity1.class);startActivityForResult(intent, SUBACTIVITY1);int SUBACTIVITY2 = 2;Uri uri = Uri.parse(content:/contacts/people);Intent intent = new Intent(Intent.ACTION_PICK, uri);startActivityForResult(intent, SUBACTIVITY2);6.1 Intent6.1.2 獲取Activity返回值設置子
15、Activity的返回值在子Activity調用finish()函數關閉前,調用setResult()函數將所需的數據返回給父ActivitysetResult()函數有兩個參數結果碼返回值6.1 Intent6.1.2 獲取Activity返回值設置子Activity的返回值結果碼表明了子Activity的返回狀態,通常為Activity.RESULT_OK或者Activity.RESULT_CANCELED,或自定義的結果碼,結果碼均為整數類型返回值用封裝在Intent中,子Activity通過Intent將需要返回的數據傳遞給父Activity。數據主要是Uri形式,可以附加一些額外信息
16、,這些額外信息用Extra的集合表示下面代碼說明如何在子Activity中設置返回值Uri data = Uri.parse(tel: + tel_number);Intent result = new Intent(null, data);result.putExtra(address, );setResult(RESULT_OK, result);finish();6.1 Intent6.1.2 獲取Activity返回值在父Activity中獲取返回值當子Activity關閉時,啟動它的父Activity的onActivityResult()函數將被調用;如果需要在父Activity中處
17、理子Activity的返回值,則重載此函數即可此函數的語法如下第1個參數requestCode,用來表示是哪一個子Activity的返回值第2個參數resultCode用于表示子Activity的返回狀態第3個參數data是子Activity的返回數據,返回數據類型是Intent。根據返回數據的用途不同,Uri數據的協議則不同,也可以使用Extra方法返回一些原始類型的數據public void onActivityResult(int requestCode, int resultCode, Intent data);6.1 Intent6.1.2 獲取Activity返回值在父Activi
18、ty中獲取返回值下面代碼說明如何在父Activity中處理子Activity的返回值private static final int SUBACTIVITY1 = 1;private static final int SUBACTIVITY2 = 2; Override public void onActivityResult(int requestCode, int resultCode, Intent data)Super.onActivityResult(requestCode, resultCode, data);switch(requestCode)case SUBACTIVITY1
19、:if (resultCode = Activity.RESULT_OK)Uri uriData = data.getData();else if (resultCode = Activity.RESULT_CANCEL)break;6.1 Intent6.1.2 獲取Activity返回值在父Activity中獲取返回值第1行代碼和第12行代碼是兩個子Activity的請求碼第7行代碼對請求碼進行匹配第9行和第11行代碼對結果碼進行判斷如果返回的結果碼是Activity.RESULT_OK,則在代碼的第10行使用getData()函數獲取Intent中的Uri數據如果返回的結果碼是Activ
20、ity.RESULT_CANCELED,則不進行任何操作14.case SUBACTIVITY2:15.if (resultCode = Activity.RESULT_OK)16.Uri uriData = data.getData();17.18.break;19. 20. 6.1 Intent6.1.2 獲取Activity返回值ActivityCommunication示例說明了如何以Sub-Activity方式啟動子Activity,以及使用Intent進行組件間通信6.1 Intent6.1.2 獲取Activity返回值當用戶點擊“啟動Activity1”和“啟動Activity
21、2”按鈕時,程序將分別啟動子SubActivity1和SubActivity26.1 Intent6.1.2 獲取Activity返回值SubActivity1提供了一個輸入框,以及“接受”和“撤銷”兩個按鈕如果在輸入框中輸入信息后點擊“接受”按鈕,程序會把輸入框中的信息傳遞給其父Activity,并在父Activity的界面上顯示如果用戶點擊“撤銷”按鈕,則程序不會向父Activity傳遞任何信息6.1 Intent6.1.2 獲取Activity返回值SubActivity2主要是為了說明如何在父Activity中處理多個子Activity,因此僅提供了用于關閉SubActivity2的“
22、關閉”按鈕6.1 Intent6.1.2 獲取Activity返回值ActivityCommunication文件結構6.1 Intent6.1.2 獲取Activity返回值ActivityCommunication.java文件的核心代碼如下public class ActivityCommunication extends Activity private static final int SUBACTIVITY1 = 1;private static final int SUBACTIVITY2 = 2;TextView textView;Overridepublic void onC
23、reate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); textView = (TextView)findViewById(R.id.textShow); final Button btn1 = (Button)findViewById(R.id.btn1); final Button btn2 = (Button)findViewById(R.id.btn2); btn1.setOnClickListener(new OnClickListener(
24、)public void onClick(View view)Intent intent = new Intent(ActivityCommunication.this, SubActivity1.class);startActivityForResult(intent, SUBACTIVITY1);6.1 Intent6.1.2 獲取Activity返回值17. ); 20.btn2.setOnClickListener(new OnClickListener()21. public void onClick(View view)22.Intent intent = new Intent(A
25、ctivityCommunication.this, SubActivity2.class);23.startActivityForResult(intent, SUBACTIVITY2);24.25. ); 28. Override29. protected void onActivityResult(int requestCode, int resultCode, Intent data) 30. super.onActivityResult(requestCode, resultCode, data);31.32. switch(requestCode)33. case SUBACTIV
26、ITY1:6.1 Intent6.1.2 獲取Activity返回值代碼的第2行和第3行分別定義了兩個子Activity的請求碼在代碼的第16行和第23行以Sub-Activity的方式分別啟動兩個子Activity34. if (resultCode = RESULT_OK)35. Uri uriData = data.getData();36. textView.setText(uriData.toString();37. 38. break;39. case SUBACTIVITY2:40. break;41. 42. 43. 6.1 Intent6.1.2 獲取Activity返回值代
27、碼第29行是子Activity關閉后的返回值處理函數,其中requestCode是子Activity返回的請求碼,應該與第2行和第3行定義的兩個請求碼相匹配resultCode是結果碼,在代碼第32行對結果碼進行判斷,如果等于RESULT_OK,在第35行代碼獲取子Activity的返回值中的數據data是返回值,子Activity需要返回的數據就保存在data中6.1 Intent6.1.2 獲取Activity返回值SubActivity1.java的核心代碼如下public class SubActivity1 extends Activity Overridepublic void o
28、nCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.subactivity1);final EditText editText = (EditText)findViewById(R.id.edit);Button btnOK = (Button)findViewById(R.id.btn_ok);Button btnCancel = (Button)findViewById(R.id.btn_cancel);btnOK.setOnClickListener(n
29、ew OnClickListener()public void onClick(View view)String uriString = editText.getText().toString();Uri data = Uri.parse(uriString);Intent result = new Intent(null, data);setResult(RESULT_OK, result);finish();6.1 Intent6.1.2 獲取Activity返回值第13行代碼將EditText控件的內容作為數據保存在Uri中第14行代碼中使用這個Uri構造Intent第15行代碼中,將I
30、ntent作為返回值,RESUIT_OK作為結果碼,通過調用setResult()函數,將返回值和結果碼傳遞給父Activity第16行代碼調用finish()函數關閉當前的子Activity18.);19.20.btnCancel.setOnClickListener(new OnClickListener()21.public void onClick(View view)22.setResult(RESULT_CANCELED, null);23.finish();24.25. );26. 27. 6.1 Intent6.1.2 獲取Activity返回值SubActivity2.jav
31、a的核心代碼第10行的setResult()函數僅設置了結果碼,第2個參數為null,表示數據需要傳遞給父Activitypublic class SubActivity2 extends Activity Overridepublic void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState);setContentView(R.layout.subactivity2); Button btnReturn = (Button)findViewById(R.id.btn_return);btnReturn
32、.setOnClickListener(new OnClickListener()public void onClick(View view)setResult(RESULT_CANCELED, null);finish(););6.2 Intent過濾器Intent過濾器Intent過濾器是一種根據Intent中的動作(Action)、類別(Categorie)和數據(Data)等內容,對適合接收該Intent的組件進行匹配和篩選的機制Intent過濾器可以匹配數據類型、路徑和協議,還包括可以用來確定多個匹配項順序的優先級(Priority)應用程序的Activity組件、Service組件
33、和BroadcastReceiver都可以注冊Intent過濾器,則這些組件在特定的數據格式上就可以產生相應的動作6.2 Intent過濾器注冊Intent過濾器在AndroidManifest.xml文件的各個組件的節點下定義節點,然后在節點中聲明該組件所支持的動作、執行的環境和數據格式等信息在程序代碼中動態地為組件設置Intent過濾器節點支持標簽、標簽和標簽標簽定義Intent過濾器的“類別”標簽定義Intent過濾器的“動作”標簽定義Intent過濾器的“數據”6.2 Intent過濾器注冊Intent過濾器節點支持的標簽和屬性標簽用來指定Intent過濾器的服務方式,每個Intent
34、過濾器可以定義多個標簽,程序開發人員可使用自定義的類別,或使用Android系統提供的類別標簽屬性說明android:name指定組件所能響應的動作,用字符串表示,通常使用Java類名和包的完全限定名構成android:category指定以何種方式去服務Intent請求的動作Android:host指定一個有效的主機名android:mimetype指定組件能處理的數據類型android:path有效的URI路徑名android:port主機的有效端口號android:scheme所需要的特定的協議6.2 Intent過濾器注冊Intent過濾器Android系統提供的類別AndroidMa
35、nifest.xml文件中的每個組件的都被解析成一個Intent過濾器對象。當應用程序安裝到Android系統時,所有的組件和Intent過濾器都會注冊到Android系統中。這樣,Android系統便知道了如何將任意一個Intent請求通過Intent過濾器映射到相應的組件上值說明ALTERNATIVEIntent數據默認動作的一個可替換的執行方法SELECTED_ALTERNATIVE 和ALTERNATIVE類似,但替換的執行方法不是指定的,而是被解析出來的BROWSABLE聲明Activity可以由瀏覽器啟動DEFAULT為Intent過濾器中定義的數據提供默認動作HOME設備啟動后顯
36、示的第一個ActivityLAUNCHER在應用程序啟動時首先被顯示6.2 Intent過濾器Intent解析Intent到Intent過濾器的映射過程稱為“Intent解析”Intent解析可以在所有的組件中,找到一個可以與請求的Intent達成最佳匹配的Intent過濾器Intent解析的匹配規則Android系統把所有應用程序包中的Intent過濾器集合在一起,形成一個完整的Intent過濾器列表在Intent與Intent過濾器進行匹配時,Android系統會將列表中所有Intent過濾器的“動作”和“類別”與Intent進行匹配,任何不匹配的Intent過濾器都將被過濾掉。沒有指定“
37、動作”的Intent過濾器可以匹配任何的Intent,但是沒有指定“類別”的Intent過濾器只能匹配沒有“類別”的Intent6.2 Intent過濾器Intent解析把Intent數據Uri的每個子部與Intent過濾器的標簽中的屬性進行匹配,如果標簽指定了協議、主機名、路徑名或MIME類型,那么這些屬性都要與Intent的Uri數據部分進行匹配,任何不匹配的Intent過濾器均被過濾掉如果Intent過濾器的匹配結果多于一個,則可以根據在標簽中定義的優先級標簽來對Intent過濾器進行排序,優先級最高的Intent過濾器將被選擇6.2 Intent過濾器IntentResolutionD
38、emo示例14.16. 17. 18. 19. 20. 21. 22. 23. 24. 6.2 Intent過濾器第1421行是第2個Activity的Intent過濾器,過濾器的動作是ent.action.VIEW,表示根據Uri協議,以最佳的方式啟動相應的Activity;類別是ent.category.DEFAULT,表示數據的默認動作;數據的協議部分是android:scheme=schemodemo,數據的主機名稱部分是android:host=edu.hrbeu6.2 Intent過濾器IntentResolutionDemo.java文件中Intent實例化和啟動Activity
39、的代碼如下第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過濾器完全匹配Intent intent = new Intent(Intent.ACTION_
40、VIEW, Uri.parse(schemodemo:/edu.hrbeu/path);startActivity(intent);ActionAttr (P200) 示例AndroidManifest.xml: ActionAttr (P200) 示例bn.setOnClickListener(new OnClickListener() Overridepublic void onClick(View arg0)/創建Intent對象Intent intent = new Intent();/為Intent設置Action屬性(屬性值就是一個普通字符串)intent.setAction(en
41、t.action.CRAZYIT_ACTION);startActivity(intent););啟動 SecondActivity的代碼:ActionAttr (P200) 示例在別的任何應用程序,比如 Bitmaptest中,通過下面三條語句,一樣能啟動ActionAttr程序中的 SecondActivity/創建Intent對象Intent intent = new Intent();/為Intent設置Action屬性(屬性值就是一個普通字符串)intent.setAction(ent.action.CRAZYIT_ACTION);startActivity(intent);Acti
42、onCateAttr (P202) 示例演示 Category用法。 AndroidManifest.xml: ActionCateAttr (P202) 示例啟動 SecondActivity的代碼:Overridepublic void onClick(View arg0) Intent intent = new Intent();/設置Action屬性intent.setAction(ent.action.CRAZYIT_ACTION );/添加Category屬性intent.addCategory (ent.category.CRAZYIT_CATEGORY );startActiv
43、ity(intent);指定 Action,Category來調用系統Activity(P204)Android 預先定義了許多 Intent的 Action和Category,StartActivity時,為Intent指定這些預定義的Action和Category,就能啟動特定的系統功能,比如查看電話本,啟動瀏覽器,撥號,返回桌面等。SysAction 實例(P205) 獲取聯系人電話Overridepublic void onClick(View arg0)/ 創建IntentIntent intent = new Intent();/設置Intent的Action屬性intent.se
44、tAction(Intent.ACTION_GET_CONTENT);/設置Intent的Type屬性intent.setType(vnd.android.cursor.item/phone);/ 啟動Activity,并希望獲取該Activity的結果startActivityForResult(intent, PICK_CONTACT);SysAction 實例(P205) 獲取聯系人電話要在 AndroidManifest.xml中指定權限:ReturnHome 實例(P208) 返回桌面Overridepublic void onClick(View v)/創建Intent對象Inte
45、nt intent = new Intent();/為Intent設置Action、Category屬性intent.setAction(Intent.ACTION_MAIN);intent.addCategory(Intent.CATEGORY_HOME);startActivity(intent);DataAttr 實例(P210) 編輯聯系人信息通過Intent啟動瀏覽器顯示網頁:Intent intent = new Intent();String data = ;/根據指定字符串解析出Uri對象Uri uri = Uri.parse(data);/為Intent設置Action屬性i
46、ntent.setAction(Intent.ACTION_VIEW);/設置Data屬性intent.setData(uri);startActivity(intent);DataAttr 實例(P210) 編輯聯系人信息通過Intent啟動對1號聯系人的信息編輯:Intent intent = new Intent();/為Intent設置Action屬性(動作為:編輯)intent.setAction(Intent.ACTION_EDIT);String data = content:/com.android.contacts/contacts/1;/根據指定字符串解析出Uri對象Uri
47、 uri = Uri.parse(data);/設置Data屬性intent.setData(uri);startActivity(intent);DataAttr 實例(P210) 編輯聯系人信息通過Intent啟動撥號:Intent intent = new Intent();/為Intent設置Action屬性(動作為:撥號)intent.setAction(Intent.ACTION_DIAL); /Intent.ACTION_VIEW 也可以String data = tel/根據指定字符串解析出Uri對象Uri uri = Uri.parse(data);
48、/設置Data屬性intent.setData(uri);startActivity(intent);DataAttr 實例(P210) 編輯聯系人信息通過Intent列出所有聯系人信息:Intent intent = new Intent();/為Intent設置Action屬性intent.setAction(Intent.ACTION_VIEW);String data = content:/contacts/people/;/根據指定字符串解析出Uri對象Uri uri = Uri.parse(data);/設置Data屬性intent.setData(uri);startActivi
49、ty(intent);6.3 廣播消息廣播消息Intent的另一種用途是發送廣播消息應用程序和Android系統都可以使用Intent發送廣播消息廣播消息的內容可以與應用程序密切相關的數據信息,也可以Android的系統信息,例如網絡連接變化、電池電量變化、接收到短信和系統設置變化等等如果應用程序注冊了BroadcastReceiver,則可以接收到指定的廣播消息6.3 廣播消息廣播信息的使用方法創建一個Intent注意:在構造Intent時必須用一個全局唯一的字符串標識其要執行的動作,通常使用應用程序包的名稱調用sendBroadcast()函數,就可把Intent攜帶的消息廣播出去如果要在
50、Intent傳遞額外數據,可以用Intent的putExtra()方法6.3 廣播消息利用Intent發送廣播消息,并添加了額外的數據,然后調用sendBroadcast()發生了廣播消息的代碼String UNIQUE_STRING = edu.hrbeu.BroadcastReceiverDemo;Intent intent = new Intent(UNIQUE_STRING);intent.putExtra(key1, value1);intent.putExtra(key2, value2);sendBroadcast(intent);6.3 廣播消息BroadcastReceiverBroadcastReceiver用于監聽廣播消息可以在AndroidManifest.xml文件或在代碼中注冊一個BroadcastReceiver,并在其中使用Intent 過濾器指定要處理的廣播消息創建BroadcastReceiver需繼承BroadcastReceiver類,并重載onReceive
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年智能工廠生產效率提升方案申請報告
- 2025年海洋經濟實施方案與深海資源開發報告
- 2025年植物基因編輯技術在植物抗土壤重金屬污染方面的成果鑒定報告
- 醫保支付改革下2025年醫療行業風險管理與控制報告
- 城市軌道交通建設規劃與城市景觀設計研究報告
- 2025年醫院電子病歷系統優化構建智能醫療生態系統報告
- 2025年醫藥企業CRO模式下的臨床試驗數據管理系統的應用與優化報告
- 原子彈相關英文課件
- 保姆奧數題目及答案
- 磅房安全考試題及答案
- 《老年人合理用藥》課件
- 【MOOC】電工電子學-浙江大學 中國大學慕課MOOC答案
- 2024年廣西職業院校技能大賽高職組《供應鏈管理》賽項規程
- 現代技術服務費合同1
- 2024山西焦煤集團公司招聘易考易錯模擬試題(共500題)試卷后附參考答案
- 2024年度工廠整體搬遷勞動力外包合同
- 水利工程閥門安裝及調試方案
- 旅游住宿安排協議
- CT設備故障處理及應急方案
- 心腦血管疾病預防課件
- 代持股協議書
評論
0/150
提交評論