真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android學(xué)習(xí)筆記-廣播機制

Android廣播類似QT中的信號和槽~~~

創(chuàng)新互聯(lián)是一家專注網(wǎng)站建設(shè)、網(wǎng)絡(luò)營銷策劃、成都小程序開發(fā)、電子商務(wù)建設(shè)、網(wǎng)絡(luò)推廣、移動互聯(lián)開發(fā)、研究、服務(wù)為一體的技術(shù)型公司。公司成立十載以來,已經(jīng)為成百上千家成都邊坡防護網(wǎng)各業(yè)的企業(yè)公司提供互聯(lián)網(wǎng)服務(wù)?,F(xiàn)在,服務(wù)的成百上千家客戶與我們一路同行,見證我們的成長;未來,我們一起分享成功的喜悅。

Android學(xué)習(xí)筆記-廣播機制

發(fā)送方只負責(zé)發(fā)送廣播,不關(guān)心接收方是否接收到了信號,也不關(guān)心接收方如何處理信號。

界面文件activity_main.xml

   

    

MainActivity.java

public class MainActivity extends Activity {
	public static final String ACTION_1 = "send1~~~";
	public static final String ACTION_2 = "send2~~~~~~";
	private BroadcastReceiver receiver;
	private TextView textView = null;
	private Button button1 = null;
	private Button button2 = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		textView = (TextView) findViewById(R.id.textView1);
		textView.setText("");
		button1 = (Button) findViewById(R.id.send1);
		button2 = (Button) findViewById(R.id.send2);

		initView();
		receiver = new BroadcastReceiver() {

			@Override
			public void onReceive(Context context, Intent intent) {
				String action = intent.getAction();
				String data = intent.getExtras().getString("data");
				if (action.equals(ACTION_1)) {
					textView.setText("");
					textView.setText("接收到:\n" + ACTION_1 + "\n1內(nèi)容是:" + data);
				} else if (action.equals(ACTION_2)) {
					textView.setText("");
					textView.setText("接收到:\n" + ACTION_2 + "\n2內(nèi)容是:" + data);
				}
			}

		};
		IntentFilter filter = new IntentFilter();
		filter.addAction(ACTION_1);
		filter.addAction(ACTION_2);
		registerReceiver(receiver, filter);
	}

	public void initView() {
		OnClickListener onClickListener = new OnClickListener() {

			@Override
			public void onClick(View v) {
				int id = v.getId();
				switch (id) {
				case R.id.send1:
					Intent intent1 = new Intent(ACTION_1);
					intent1.putExtra("data", "action_01");
					sendBroadcast(intent1);
					break;
				case R.id.send2:
					Intent intent2 = new Intent(ACTION_2);
					intent2.putExtra("data", "action_02");
					sendBroadcast(intent2);
					break;
				default:
					break;
				}
			}
		};
		button1.setOnClickListener(onClickListener);
		button2.setOnClickListener(onClickListener);
	}

	@Override
	protected void onStop() {
		super.onStop();
		unregisterReceiver(receiver);//解除注冊
	}
}



下面的例子是Mars視頻中的例子

自定義接收器TestRecevier.java

public class TestRecevier extends BroadcastReceiver{

	public TestRecevier() {
		System.out.println("調(diào)用TestRecevier構(gòu)造函數(shù)");
	}
	
	@Override
	public void onReceive(Context context, Intent intent) {
		System.out.println("onReceive");	
	}

}

在AndroidManifest.xml文件中注冊接收器

        
        
            
            
                
            
        

MainActivity.java

public class MainActivity extends Activity {

	private Button sendButton;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		sendButton = (Button) findViewById(R.id.sendButton);
		sendButton.setOnClickListener(new BroadcastListener());
	}

	class BroadcastListener implements OnClickListener{

		@Override
		public void onClick(View v) {
			System.out.println("~~~~~~~~~~~");
			//TestRecevier testRecevier = new TestRecevier();
			Intent intent = new Intent();
			intent.setAction(Intent.ACTION_EDIT);
			//發(fā)送廣播
			MainActivity.this.sendBroadcast(intent);
		}
		
	}
}

點擊按鈕之后的輸入如下

11-24 13:53:33.288: I/System.out(24849): ~~~~~~~~~~~

11-24 13:53:33.288: I/System.out(24849): 調(diào)用TestRecevier構(gòu)造函數(shù)

11-24 13:53:33.288: I/System.out(24849): onReceive



BroadcastRecevier用于監(jiān)聽被廣播的時間(Intent)。為了達到這個目的,BroadcastRecevier必須進行注冊,兩種注冊方式:

  1. 在應(yīng)用程序的代碼中進行注冊

  2. 在AndroidManifest.xml當中進行注冊

如果一個BroadcastRecevier用于更新UI,通常會使用第一種方式進行注冊,在Activity啟動的時候進行注冊,在Activity不可見以后取消注冊。

例:監(jiān)聽接收短信,并且在控制臺輸出短信內(nèi)容

MainActivity.java

public class MainActivity extends Activity {
	private Button registerButton = null;
	private Button unregisterButton = null;
	private SMSReceiver smsReceiver = null;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		
		 registerButton = (Button)findViewById(R.id.register);
	        registerButton.setOnClickListener(new RegisterReceiverListener());
	        unregisterButton = (Button)findViewById(R.id.unregister);
	        unregisterButton.setOnClickListener(new UnRegisterReceiverListener());
	}

	   class RegisterReceiverListener implements OnClickListener{

			@Override
			public void onClick(View v) {
				System.out.println("開始監(jiān)聽");
				//生成一個BroiadcastReceiver對象
				smsReceiver = new SMSReceiver();
				//生成一個IntentFilter對象
				IntentFilter filter = new IntentFilter();
				//為IntentFilter添加一個Action
				filter.addAction("android.provider.Telephony.SMS_RECEIVED");
				//將BroadcastReceiver對象注冊到系統(tǒng)當中
				MainActivity.this.registerReceiver(smsReceiver, filter);
			}
	    	
	    }
	    
	    class UnRegisterReceiverListener implements OnClickListener{

			@Override
			public void onClick(View v) {
				//解除BroadcastReceiver對象的注冊
				MainActivity.this.unregisterReceiver(smsReceiver);
			}
	    	
	    }
}

SMSReceiver.java

public class SMSReceiver extends BroadcastReceiver{

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("receive message");
		
		//接受Intent對象當中的數(shù)據(jù)
		Bundle bundle = intent.getExtras();
		//在Bundle對象當中有一個屬性名為pdus,這個屬性的值是一個Object數(shù)組
		Object[] myOBJpdus = (Object[]) bundle.get("pdus"); 
		//創(chuàng)建一個SmsMessage類型的數(shù)組
        SmsMessage[] messages = new SmsMessage[myOBJpdus.length];  
        System.out.println(messages.length);
        for (int i = 0; i

在AndroidManifest.xml中配置讀取短信的權(quán)限

    
    



Android 系統(tǒng)廣播大全    

(參考http://blog.chinaunix.net/uid-25370280-id-1735613.html)

  1. String  ADD_SHORTCUT_ACTION  動作:在系統(tǒng)中添加一個快捷方式。

  2. String ALL_APPS_ACTION 動作:列舉所有可用的應(yīng)用。輸入:無。

  3. String ALTERNATIVE_CATEGORY 類別:說明 activity 是用戶正在瀏覽的數(shù)據(jù)的一個可選操作。

  4. String ANSWER_ACTION 動作:處理撥入的電話。

  5. String BATTERY_CHANGED_ACTION 廣播:充電狀態(tài),或者電池的電量發(fā)生變化。

  6. String BOOT_COMPLETED_ACTION 廣播:在系統(tǒng)啟動后,這個動作被廣播一次(只有一次)。

  7. String BROWSABLE_CATEGORY 類別:能夠被瀏覽器安全使用的 activities 必須支持這個類別。

  8. String BUG_REPORT_ACTION 動作:顯示 activity 報告錯誤。

  9. String CALL_ACTION 動作:撥打電話,被呼叫的聯(lián)系人在數(shù)據(jù)中指定。

  10. String CALL_FORWARDING_STATE_CHANGED_ACTION 廣播:語音電話的呼叫轉(zhuǎn)移狀態(tài)已經(jīng)改。

  11. String CLEAR_CREDENTIALS_ACTION 動作:清除登陸憑證 (credential)。

  12. String CONFIGURATION_CHANGED_ACTION 廣播:設(shè)備的配置信息已經(jīng)改變,參見 Resources.Configuration.

  13. Creator CREATOR 無 無

  14. String DATA_ACTIVITY_STATE_CHANGED_ACTION 廣播:電話的數(shù)據(jù)活動(data activity)狀態(tài)(即收發(fā)數(shù)據(jù)的狀態(tài))已經(jīng)改變。

  15. String DATA_CONNECTION_STATE_CHANGED_ACTION 廣播:電話的數(shù)據(jù)連接狀態(tài)已經(jīng)改變。

  16. String DATE_CHANGED_ACTION 廣播:日期被改變。

  17. String DEFAULT_ACTION 動作:和 VIEW_ACTION 相同,是在數(shù)據(jù)上執(zhí)行的標準動作。

  18. String DEFAULT_CATEGORY 類別:如果 activity 是對數(shù)據(jù)執(zhí)行確省動作(點擊, center press)的一個選項,需要設(shè)置這個類別。

  19. String DELETE_ACTION 動作:從容器中刪除給定的數(shù)據(jù)。

  20. String DEVELOPMENT_PREFERENCE_CATEGORY 類別:說明 activity 是一個設(shè)置面板 (development preference panel).

  21. String DIAL_ACTION 動作:撥打數(shù)據(jù)中指定的電話號碼。

  22. String EDIT_ACTION 動作:為制定的數(shù)據(jù)顯示可編輯界面。

  23. String EMBED_CATEGORY 類別:能夠在上級(父)activity 中運行。

  24. String EMERGENCY_DIAL_ACTION 動作:撥打緊急電話號碼。

  25. int FORWARD_RESULT_LAUNCH 啟動標記:如果這個標記被設(shè)置,而且被一個已經(jīng)存在的 activity 用來啟動新的 activity,已有 activity 的回復(fù)目標 (reply target) 會被轉(zhuǎn)移給新的 activity。

  26. String FOTA_CANCEL_ACTION 廣播:取消所有被掛起的 (pending) 更新下載。

  27. String FOTA_INSTALL_ACTION 廣播:更新已經(jīng)被確認,馬上就要開始安裝。

  28. String FOTA_READY_ACTION 廣播:更新已經(jīng)被下載,可以開始安裝。

  29. String FOTA_RESTART_ACTION 廣播:恢復(fù)已經(jīng)停止的更新下載。

  30. String FOTA_UPDATE_ACTION 廣播:通過 OTA 下載并安裝操作系統(tǒng)更新。

  31. String FRAMEWORK_INSTRUMENTATION_TEST_CATEGORY 類別:To be used as code under test for framework instrumentation tests.

  32. String GADGET_CATEGORY 類別:這個 activity 可以被嵌入宿主 activity (activity that is hosting gadgets)。

  33. String GET_CONTENT_ACTION 動作:讓用戶選擇數(shù)據(jù)并返回。

  34. String HOME_CATEGORY 類別:主屏幕 (activity),設(shè)備啟動后顯示的第一個 activity。

  35. String INSERT_ACTION 動作:在容器中插入一個空項 (item)。

  36. String INTENT_EXTRA 附加數(shù)據(jù):和 PICK_ACTIVITY_ACTION 一起使用時,說明用戶選擇的用來顯示的 activity;和 ADD_SHORTCUT_ACTION 一起使用的時候,描述要添加的快捷方式。

  37. String LABEL_EXTRA 附加數(shù)據(jù):大寫字母開頭的字符標簽,和 ADD_SHORTCUT_ACTION 一起使用。

  38. String LAUNCHER_CATEGORY 類別:Activity 應(yīng)該被顯示在頂級的 launcher 中。

  39. String LOGIN_ACTION 動作:獲取登錄憑證。

  40. String MAIN_ACTION 動作:作為主入口點啟動,不需要數(shù)據(jù)。

  41. String MEDIABUTTON_ACTION 廣播:用戶按下了“Media Button”。

  42. String MEDIA_BAD_REMOVAL_ACTION 廣播:擴展介質(zhì)(擴展卡)已經(jīng)從 SD 卡插槽拔出,但是掛載點 (mount point) 還沒解除 (unmount)。

  43. String MEDIA_EJECT_ACTION 廣播:用戶想要移除擴展介質(zhì)(拔掉擴展卡)。

  44. String MEDIA_MOUNTED_ACTION 廣播:擴展介質(zhì)被插入,而且已經(jīng)被掛載。

  45. String MEDIA_REMOVED_ACTION 廣播:擴展介質(zhì)被移除。

  46. String MEDIA_SCANNER_FINISHED_ACTION 廣播:已經(jīng)掃描完介質(zhì)的一個目錄。

  47. String MEDIA_SCANNER_STARTED_ACTION 廣播:開始掃描介質(zhì)的一個目錄。

  48. String MEDIA_SHARED_ACTION 廣播:擴展介質(zhì)的掛載被解除 (unmount),因為它已經(jīng)作為 USB 大容量存儲被共享。

  49. String MEDIA_UNMOUNTED_ACTION 廣播:擴展介質(zhì)存在,但是還沒有被掛載 (mount)。

  50. String MESSAGE_WAITING_STATE_CHANGED_ACTION 廣播:電話的消息等待(語音郵件)狀態(tài)已經(jīng)改變。

  51. int MULTIPLE_TASK_LAUNCH 啟動標記:和 NEW_TASK_LAUNCH 聯(lián)合使用,禁止將已有的任務(wù)改變?yōu)榍熬叭蝿?wù) (foreground)。

  52. String NETWORK_TICKLE_RECEIVED_ACTION 廣播:設(shè)備收到了新的網(wǎng)絡(luò) "tickle" 通知。

  53. int NEW_TASK_LAUNCH 啟動標記:設(shè)置以后,activity 將成為歷史堆棧中的第一個新任務(wù)(棧頂)。

  54. int NO_HISTORY_LAUNCH 啟動標記:設(shè)置以后,新的 activity 不會被保存在歷史堆棧中。

  55. String PACKAGE_ADDED_ACTION 廣播:設(shè)備上新安裝了一個應(yīng)用程序包。

  56. String PACKAGE_REMOVED_ACTION 廣播:設(shè)備上刪除了一個應(yīng)用程序包。

  57. String PHONE_STATE_CHANGED_ACTION 廣播:電話狀態(tài)已經(jīng)改變。

  58. String PICK_ACTION 動作:從數(shù)據(jù)中選擇一個項目 (item),將被選中的項目返回。

  59. String PICK_ACTIVITY_ACTION 動作:選擇一個 activity,返回被選擇的 activity 的類(名)。

  60. String PREFERENCE_CATEGORY 類別:activity是一個設(shè)置面板 (preference panel)。

  61. String PROVIDER_CHANGED_ACTION 廣播:更新將要(真正)被安裝。

  62. String PROVISIONING_CHECK_ACTION 廣播:要求 polling of provisioning service 下載最新的設(shè)置。

  63. String RUN_ACTION 動作:運行數(shù)據(jù)(指定的應(yīng)用),無論它(應(yīng)用)是什么。

  64. String SAMPLE_CODE_CATEGORY 類別:To be used as an sample code example (not part of the normal user experience).

  65. String SCREEN_OFF_ACTION 廣播:屏幕被關(guān)閉。

  66. String SCREEN_ON_ACTION 廣播:屏幕已經(jīng)被打開。

  67. String SELECTED_ALTERNATIVE_CATEGORY 類別:對于被用戶選中的數(shù)據(jù),activity 是它的一個可選操作。

  68. String SENDTO_ACTION 動作:向 data 指定的接收者發(fā)送一個消息。

  69. String SERVICE_STATE_CHANGED_ACTION 廣播:電話服務(wù)的狀態(tài)已經(jīng)改變。

  70. String SETTINGS_ACTION 動作:顯示系統(tǒng)設(shè)置。輸入:無。

  71. String SIGNAL_STRENGTH_CHANGED_ACTION 廣播:電話的信號強度已經(jīng)改變。

  72. int SINGLE_TOP_LAUNCH 啟動標記:設(shè)置以后,如果 activity 已經(jīng)啟動,而且位于歷史堆棧的頂端,將不再啟動(不重新啟動) activity。

  73. String STATISTICS_REPORT_ACTION 廣播:要求 receivers 報告自己的統(tǒng)計信息。

  74. String STATISTICS_STATE_CHANGED_ACTION 廣播:統(tǒng)計信息服務(wù)的狀態(tài)已經(jīng)改變。

  75. String SYNC_ACTION 動作:執(zhí)行數(shù)據(jù)同步。

  76. String TAB_CATEGORY 類別:這個 activity 應(yīng)該在 TabActivity 中作為一個 tab 使用。

  77. String TEMPLATE_EXTRA 附加數(shù)據(jù):新記錄的初始化模板。

  78. String TEST_CATEGORY 類別:作為測試目的使用,不是正常的用戶體驗的一部分。

  79. String TIMEZONE_CHANGED_ACTION 廣播:時區(qū)已經(jīng)改變。

  80. String TIME_CHANGED_ACTION 廣播:時間已經(jīng)改變(重新設(shè)置)。

  81. String TIME_TICK_ACTION 廣播:當前時間已經(jīng)變化(正常的時間流逝)。

  82. String UMS_CONNECTED_ACTION 廣播:設(shè)備進入 USB 大容量存儲模式。

  83. String UMS_DISCONNECTED_ACTION 廣播:設(shè)備從 USB 大容量存儲模式退出。

  84. String UNIT_TEST_CATEGORY 類別:應(yīng)該被用作單元測試(通過 test harness 運行)。

  85. String VIEW_ACTION 動作:向用戶顯示數(shù)據(jù)。

  86. String WALLPAPER_CATEGORY 類別:這個 activity 能過為設(shè)備設(shè)置墻紙。

  87. String WALLPAPER_CHANGED_ACTION 廣播:系統(tǒng)的墻紙已經(jīng)改變。

  88. String WALLPAPER_SETTINGS_ACTION 動作:顯示選擇墻紙的設(shè)置界面。輸入:無。

  89. String WEB_SEARCH_ACTION 動作:執(zhí)行 web 搜索。

  90. String XMPP_CONNECTED_ACTION 廣播:XMPP 連接已經(jīng)被建立。

  91. String XMPP_DISCONNECTED_ACTION 廣播:XMPP 連接已經(jīng)被斷開。


網(wǎng)站欄目:Android學(xué)習(xí)筆記-廣播機制
網(wǎng)站URL:http://weahome.cn/article/gpjcds.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部