BroadcastReceiver广播接听器的初步认识,动态注册,静态注册(1)
2017-06-02 15:41
316 查看
BroadcastReceiver广播接听器的初步认识,动态注册,静态注册(1)
1、静态注册,在清单文件AndroidMinifest中注册,静态注册的广播只要应用一安装,并且该应用至少启动过一次,该广播会一直有效
2、动态注册,一般在Activity的onCreate()方法中注册,动态注册的广播在Activity停止运行后也将解除注册,这时广播接收器不能继续收到外部发来的广播
清单文件注册:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="project.wgc.mybroadcastreceiver01" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//清单文件注册
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
</intent-filter>
</receiver>
</application>
</manifest>
代码中动态注册:
public class
MainActivity extends
AppCompatActivity {
private
ScreenBroadcastReceiver screenBroadcastReceiver
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screenBroadcastReceiver
= new
ScreenBroadcastReceiver();
IntentFilter
intentFilter =
new IntentFilter();
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(screenBroadcastReceiver,intentFilter);//动态注册方式
}
@Override
protected void
onDestroy() {
super.onDestroy();
unregisterReceiver(screenBroadcastReceiver);//解除注册
}
}
自定义两个广播监听器,一个监听电话打进来的MyBroadcastReceiver,一个监听手机锁屏状态的ScreenBroadcastReceiver
具体代码如下:
public class
MyBroadcastReceiver extends
BroadcastReceiver {
@Override
public void
onReceive(Context context,
Intent intent) {
String resultData = getResultData();
resultData =
"1800" + resultData;//设置在call进来的电话号码前面加上1800.
setResultData(resultData);
}
}
public class
ScreenBroadcastReceiver extends
BroadcastReceiver {
@Override
public void
onReceive(Context context,
Intent intent) {
if
(Intent.ACTION_SCREEN_OFF.equals(intent.getAction())){
Log.d("weihuan",
"onReceive: +锁屏");//监听手机锁屏意图
}else if
(Intent.ACTION_SCREEN_ON.equals(intent.getAction())){
Log.d("weihuan",
"onReceive: +亮屏");
}
}
}
监听到的效果图如下:
按下手机的锁屏键测试的结果
ScreenBroadcastReceiver
的监听效果
06-02 10:46:23.388 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +锁屏
06-02 10:46:35.925 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +亮屏
06-02 10:46:46.328 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +锁屏
06-02 10:46:53.111 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +亮屏
电话打进来的MyBroadcastReceiver
的效果
....无语、、、没测试出来
1、静态注册,在清单文件AndroidMinifest中注册,静态注册的广播只要应用一安装,并且该应用至少启动过一次,该广播会一直有效
2、动态注册,一般在Activity的onCreate()方法中注册,动态注册的广播在Activity停止运行后也将解除注册,这时广播接收器不能继续收到外部发来的广播
清单文件注册:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="project.wgc.mybroadcastreceiver01" >
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//清单文件注册
<receiver android:name=".MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
</intent-filter>
</receiver>
</application>
</manifest>
代码中动态注册:
public class
MainActivity extends
AppCompatActivity {
private
ScreenBroadcastReceiver screenBroadcastReceiver
;
@Override
protected void
onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screenBroadcastReceiver
= new
ScreenBroadcastReceiver();
IntentFilter
intentFilter =
new IntentFilter();
intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(screenBroadcastReceiver,intentFilter);//动态注册方式
}
@Override
protected void
onDestroy() {
super.onDestroy();
unregisterReceiver(screenBroadcastReceiver);//解除注册
}
}
自定义两个广播监听器,一个监听电话打进来的MyBroadcastReceiver,一个监听手机锁屏状态的ScreenBroadcastReceiver
具体代码如下:
public class
MyBroadcastReceiver extends
BroadcastReceiver {
@Override
public void
onReceive(Context context,
Intent intent) {
String resultData = getResultData();
resultData =
"1800" + resultData;//设置在call进来的电话号码前面加上1800.
setResultData(resultData);
}
}
public class
ScreenBroadcastReceiver extends
BroadcastReceiver {
@Override
public void
onReceive(Context context,
Intent intent) {
if
(Intent.ACTION_SCREEN_OFF.equals(intent.getAction())){
Log.d("weihuan",
"onReceive: +锁屏");//监听手机锁屏意图
}else if
(Intent.ACTION_SCREEN_ON.equals(intent.getAction())){
Log.d("weihuan",
"onReceive: +亮屏");
}
}
}
监听到的效果图如下:
按下手机的锁屏键测试的结果
ScreenBroadcastReceiver
的监听效果
06-02 10:46:23.388 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +锁屏
06-02 10:46:35.925 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +亮屏
06-02 10:46:46.328 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +锁屏
06-02 10:46:53.111 14643-14643/project.wgc.mybroadcastreceiver01 D/weihuan: onReceive: +亮屏
电话打进来的MyBroadcastReceiver
的效果
....无语、、、没测试出来
相关文章推荐
- Java 静态加载类与动态加载类(初步认识Java的反射)
- oracle listener 静态&动态注册
- Broadcast Receiver的静态注册&动态注册
- Listener 静态注册、与动态注册 --可以远程连接别的机器的DBServer
- Oracle Listener 动态注册 与 静态注册
- Oracle Listener 动态注册 与 静态注册
- lsnrctl status区分静态注册与动态注册
- BroadcastReceiver 的动态注册和静态注册问题
- android 静态、动态注册广播浅析
- RadioGroup初步认识☞动态设置
- 认识静态与动态游标
- oracle 动态注册和静态注册
- JNI原理与静态、动态注册
- Android中的静态系统广播与动态系统广播及其相应的注册与接收
- ocp听课总结之4——listener动态和静态注册
- oracle监听 动态注册与静态注册
- C++基础学习笔记----第十一课(类的静态成员、对象模型初步认识)
- 认识静态与动态游标
- Oracle Listener 动态注册 与 静态注册
- Oracle监听器的静态注册与动态注册,以及DB_DOMAIN问题