Android -- Broadcast接收

來源:互聯網
上載者:User

Broadcast是Android四大組件之一,是一種廣泛運用的在應用程式之間傳輸資訊的機制。最經典的舉例是: “我們拿廣播電台來做個比方。我們平常使用收音機收音是這樣的:許許多多不同的廣播電台通過特定的頻率來發送他們的內容,而我們使用者只需要將頻率調成和廣播電台的一樣就可以收聽他們的內容了。Android中的廣播機制就和這個差不多的道理。” 電台發送的內容是語音,而在Android中我們要發送的廣播內容是一個Intent。這個Intent中可以攜帶我們要傳送的資料。電台通過大功率的發射器發送內容,而在Android中則是通過sendBroadcast這個方法來發送。使用者通過調整到具體的電台頻率接受電台的內容。而在Android中要接受廣播中的內容則是通過註冊一個BroadCastReceiver來接收的。只有發送廣播的action和接收廣播的action相同,接受者才能接受這個廣播。我們拿代碼說話 IP撥號的實現                                                                                設定檔: <receiver             android:name="com.iidcdut.ipcall.OutCallReceiver">            <intent-filter >                <action android:name="android.intent.action.NEW_OUTGOING_CALL" />            </intent-filter>        </receiver>onCreate裡面主要是對SharePrefence配置,設定撥號時候要加的IP,然後BroadcastReceiver裡面就是對要撥出去的號碼進行加IP操作。 複製代碼public class MainActivity extends Activity {     private EditText edit_ipnumber;    private SharedPreferences sp;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);                edit_ipnumber = (EditText) findViewById(R.id.edit_ipnumber);        sp = getSharedPreferences("config", MODE_PRIVATE);        edit_ipnumber.setText(sp.getString("ipnumber", ""));            }    public void click(View view)    {        String ipnumber = edit_ipnumber.getText().toString();        Editor editor = sp.edit();        editor.putString("ipnumber", ipnumber);        editor.commit();        Toast.makeText(this, "設定OK", Toast.LENGTH_LONG).show();    } }複製代碼廣播接收: 複製代碼public class OutCallReceiver extends BroadcastReceiver {     @Override    public void onReceive(Context context, Intent intent) {        System.out.println("onReceive 發現新撥出電話");        String number = getResultData();        System.out.println("number="+number);                SharedPreferences sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);        String ipnumber  = sp.getString("ipnumber", "");        String newnumber = ipnumber + number;                setResultData(newnumber);            } }複製代碼簡訊攔截                                                                                     像360的app裡面就有垃圾簡訊攔截的功能,其實就是通過廣播實現的。 設定檔: <receiver android:name="com.yydcdut.smslistener.SmsReceiver">            <intent-filter >                <action android:name="android.provider.Telephony.SMS_RECEIVED"/>            </intent-filter>        </receiver>廣播裡面: 複製代碼public class SmsReceiver extends BroadcastReceiver {     @Override    public void onReceive(Context context, Intent intent) {        System.out.println("收到簡訊");                Object[] pdus = (Object[]) intent.getExtras().get("pdus");        for(Object pdu : pdus)        {            SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) pdu);            String body = smsMessage.getMessageBody();            String sender = smsMessage.getOriginatingAddress();            System.out.println("body"+body);            System.out.println("sender"+sender);                        abortBroadcast();        }            } }

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.