本文主要是介绍广播接收者--BroadcastReceiver,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
android应用程序的四个重要的组件 :(所有组件的要使用都要在androidManifest.xml中配置)
1. activity ui界面的展现
2. content provider 内容提供者 暴露自己应用私有的数据给别的应用程序
3. broadcast receiver 广播接受者.
4. service 后台服务. 长期在后台运行, 没有用户界面的一个组件.
在android系统里面有很多内置的广播事件
1. 电池电量低.
2. 短信到来了
3. 电话拨打出去了
4. sd卡被插进来了.
5. 屏幕锁屏了.
6. 手机重启了.
第一步:继承BroadcastReceiver,并重写onReceive()方法。
public class IncomingSMSReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
}
}
第二步:订阅感兴趣的广播Intent,订阅方法有两种:
第一种:使用代码进行订阅
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);
第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
1. activity ui界面的展现
2. content provider 内容提供者 暴露自己应用私有的数据给别的应用程序
3. broadcast receiver 广播接受者.
4. service 后台服务. 长期在后台运行, 没有用户界面的一个组件.
在android系统里面有很多内置的广播事件
1. 电池电量低.
2. 短信到来了
3. 电话拨打出去了
4. sd卡被插进来了.
5. 屏幕锁屏了.
6. 手机重启了.
广播接收者(BroadcastReceiver)用于接收广播 Intent,广播Intent的发送是通过调用Context.sendBroadcast()、Context.sendOrderedBroadcast()来实现的。通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收,这个特性跟JMS中的Topic消息接收者类似。要实现一个广播接收者方法如下:
第一步:继承BroadcastReceiver,并重写onReceive()方法。
public class IncomingSMSReceiver extends BroadcastReceiver {
@Override public void onReceive(Context context, Intent intent) {
}
}
第二步:订阅感兴趣的广播Intent,订阅方法有两种:
第一种:使用代码进行订阅
IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
IncomingSMSReceiver receiver = new IncomingSMSReceiver();
registerReceiver(receiver, filter);
第二种:在AndroidManifest.xml文件中的<application>节点里进行订阅:
<receiver android:name=".IncomingSMSReceiver">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
----------------------------------------------------------------------------------------------
ip拨号器:
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 );
et_ipnumber =(EditText) findViewById(R.id. et_ipnumber );
sp =getSharedPreferences( "config" , MODE_PRIVATE );
}
/**
* 设置 ip
*/
public void click(View view){
String ipNumber= et_ipnumber .getText().toString().trim();
//将ipnumber 方法sp存储器中
Editor edit = sp .edit();
edit.putString( "ipNumber" , ipNumber);
edit.commit();
}
}
------------------------------------------------------------------------------------------
public class OutCallReceiver extends BroadcastReceiver {
/**
* 根据AndroidManifest.xml中配置一拨打电话就调用该方法
*/
@Override
public void onReceive(Context context, Intent intent) {
//创建sp ,拿到存储器中的数据
SharedPreferences sp=context.getSharedPreferences( "config" ,context. MODE_PRIVATE );
String ipNumber = sp.getString( "ipNumber" , "" );
String number = getResultData(); //获取拨打的号码
setResultData(ipNumber+ number); //重新设置要拨打的电话
}
}
<!--广播接收者配置(设置广播频道) -->
< receiver android:name = "com.itheima.ipdail.OutCallReceiver" >
< intent-filter >
< action android:name = "android.intent.action.NEW_OUTGOING_CALL" />
</ intent-filter >
</ receiver >
这篇关于广播接收者--BroadcastReceiver的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!