BroadcastReceiver广播接受者简单使用
1.注册BrocadcastReceiver
<receiver android:name=".FirstReceiver" > <!-- 指定能够接收的广播类型 --> <intent-filter> <action android:name="a5" /> </intent-filter> </receiver>
2.
//广播接收器
public class FirstReceiver extends BroadcastReceiver{
//接收intent并做出后续处理
@Override
public void onReceive(Context arg0, Intent arg1) {
String action = arg1.getAction();
int x = arg1.getIntExtra("x", 0);
System.out.println("--"+action+"--"+x);
}
3.
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void click(View v){
Intent it=new Intent();
//指定intent的操作
System.out.println("---00");
it.setAction("a5");
//附加参数
it.putExtra("x", 99);
//发送广播
this.sendBroadcast(it);
}
}
4. 以上代码能够简单实现广播的发送和接收。
<!-- 示例 -->
通过广播实现app短信监听
1.
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.INTERNET" /> <receiver android:name=".SMSReceiver" > <intent-filter android:priority="1000" > <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver>
2.
package myapplication.com.canvas; import java.net.URL; import java.net.URLConnection; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.telephony.SmsMessage; public class SMSReceiver extends BroadcastReceiver{ @Override public void onReceive(Context arg0, Intent arg1) { String action =arg1.getAction(); //收到短信的广播 if (action.equals("android.provider.Telephony.SMS_RECEIVED")) { //取出intent中的全部数据 Bundle bundle = arg1.getExtras(); //取出短信数据 Object os[] = (Object[]) bundle.get("pdus"); //定义可读取数据的短信格式 SmsMessage sm[]=new SmsMessage[os.length]; for (int i = 0; i < os.length; i++) { //转化为字节数组 byte bs[]=(byte[]) os[i]; //转化 sm[i]=SmsMessage.createFromPdu(bs); } for (SmsMessage s : sm) { //电话号码 String number = s.getDisplayOriginatingAddress(); //内容 String body = s.getMessageBody(); //System.out.println("--"+number+":"+body); // Intent it=new Intent(); // it.setAction("my.a.b"); // Bundle data=new Bundle(); // data.putString("number", number); // data.putString("body", body); // // it.putExtras(data); // arg0.sendBroadcast(it); send(number+"-"+body); } //中断广播 //abortBroadcast(); } } //发送短信到指定的服务器 private void send(final String value) { new Thread(){ public void run() { try { System.out.println(value); // String path="http://172.27.35.1/sms.jsp?sms="+value; // URL url=new URL(path); // URLConnection con = url.openConnection(); // con.getInputStream(); } catch (Exception e) { e.printStackTrace(); } }; }.start(); } }
3.
今天多一点积累,明天少一分烦恼