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.

最新文章

  1. PHP学习之登录以及后台商品展示
  2. 第十五章:Android 调用WebService(.net平台)
  3. Asp.net WebAPI 单元测试
  4. users
  5. freemark 判断是否为空 是否存在
  6. Android 客户端应用开发的架构
  7. DirectoryEntry配置IIS出现ADSI Error:未知错误(0x80005000)
  8. 六款最佳Linux教育应用
  9. error C2065:未声明的标识符错误
  10. opengl学习
  11. 关于API的设计和需求抽象
  12. Java面试题之四
  13. ntp升级
  14. 我眼中的JAVA的那些数据结构应用
  15. 谁说深入浅出虚拟机难?现在我让他通俗易懂(JVM)
  16. Go 语言数组
  17. 版本控制之最佳实践(Git版)
  18. 就算会用python画颗心,可你依然还是只单身狗
  19. SpringBoot使用Swagger2实现Restful API
  20. Linux 判断进程是否运行

热门文章

  1. Xcode8 NSLog打印json不完整的解决方案
  2. 定时器篇---java.util.TimerTask和quartz
  3. 我的C++笔记(语句基本结构)
  4. Java中的常量
  5. JSCH实现文件上传下载至sftp服务器
  6. Nginx+keepalived双机热备(默认路径安装)- 基础篇
  7. vue-cli 中eslint代码检查之过滤指定文件
  8. Codevs 1077 多源最短路( Floyd水 )
  9. 洛谷P1055 ISBN号码
  10. Spring知识梳理