Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 37.android四大組件之廣播

37.android四大組件之廣播

編輯:關於Android編程

廣播

Android中:系統在運行的過程中,會產生很多的事件,比如:電量的改變,收發短信,撥打電話,屏幕解鎖,開機等,系統都會發送相應的廣播,系統根據發送的廣播來判斷相應的事件並執行相應的代碼,使用廣播接收著就可以收聽廣播。

廣播接收者

廣播接收者簡單地說就是接收廣播意圖的Java類,此Java類繼承BroadcastReceiver類,重寫:
public void onReceive(Context context,Intent intent),其中intent可以獲得傳遞的數據;
廣播意圖就是通過Context.sendBroadcast(Intent intent)或Context.sendOrderedBroadcast(Intent intent)發送的意圖,通過這個語句,能夠廣播給所有滿足條件的組件,比如intent設置了action="android.intent.action.NEW_OUTGOING_CALL",則所有在AndroidManifest.xml中設置過的廣播接收者都能夠接收到廣播;

創建廣播接收者

1.定義java類繼承BroadcasterReceiver
2.在清單文件愛你中定義receiver節點,定義name屬性,指定廣播接受著java類的全類名
3.在intent-filter的節點中,指定action子節點,action的值必須跟要接受的廣播中的action匹配,比如,如果要接收打電話廣播,那麼action的值

action="android.intent.action.NEW_OUTGOING_CALL",因為打電話廣播中包含的值就是這個,定義廣播接收者的時候必須action必須與其匹配,才能接收到這個廣播

4.即使廣播接收者所在的進程已經被關閉,當系統發出的廣播中的action跟該廣播接收者的action匹配的時候,系統會啟動該廣播接收者所在的進程,並把廣播發給該廣播接收者

配置權限:

 

 

清單文件配置廣播(和activity是同級節點):

 

        
            
                
            
        

案例代碼(ip撥號器):

 

activity_main.xml

 



    

 


MainActivity.java

 

package com.ldw.ipdialer;

import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;

public class MainActivity extends Activity {

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



    public void click(View v){
    	EditText et = (EditText) findViewById(R.id.et);
    	//ip保存在本地
    	SharedPreferences sp = getSharedPreferences("ip", MODE_PRIVATE);
    	sp.edit().putString("ipNumber", et.getText().toString()).commit();
    }
    
}

callService.java

 

 

package com.ldw.ipdialer;

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

public class callReceiver extends BroadcastReceiver {

	//接受廣播的時候調用
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		System.out.println("打電話廣播");
		//打電話廣播中會攜帶撥打電話的號碼
		String number = getResultData();
		//獲取到SharedPreferences保存的值
		SharedPreferences sp = context.getSharedPreferences("ip", Context.MODE_PRIVATE);
		String ipNumber = sp.getString("ipNumber", "");
		//ip線路號碼添加到用戶號碼的前面
		number = ipNumber + number;
		
		//把新的號碼重新放到廣播中
		setResultData(number);
		

	}

}


 

 

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved