Android广播的发送与接收
2017-05-10 14:02
453 查看
一、静态注册(在manifest文件中进行注册)
1、广播发送
2、在manifest文件中注册
3、广播的接收
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、动态注册(通过代码进行注册)
package com.example.administrator.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
IntentFilter intentFilter ;
MyBroadcastReceiver myBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//动态注册接收器
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.administrator.myapplication.MY_BROADCAST");
myBroadcastReceiver = new MyBroadcastReceiver();
registerReceiver(myBroadcastReceiver,intentFilter);
findViewById(R.id.btn_send_broadcast).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//发送广播
Intent intent = new Intent();
intent.setAction("com.example.administrator.myapplication.MY_BROADCAST");
intent.putExtra("name", "xiaoming");
sendBroadcast(intent);
}
});
}
//接收广播
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String name = intent.getStringExtra("name");
Toast.makeText(context,"name="+name,Toast.LENGTH_LONG).show();
}
}
}
1、广播发送
package com.example.administrator.myapplication; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findViewById(R.id.btn_send_broadcast).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { /** * 1、不传递数据 * */ //Intent intent = new Intent("com.example.administrator.myapplication.MY_BROADCAST"); /** * 2、传递数据 * */ Intent intent = new Intent(); intent.setAction("com.example.administrator.myapplication.MY_BROADCAST"); intent.putExtra("name", "xiaoming"); intent.putExtra("age",30); intent.putExtra("height",1.75); //发送广播 sendBroadcast(intent); } }); } }
2、在manifest文件中注册
<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" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="com.example.administrator.myapplication.MY_BROADCAST"/> </intent-filter> </receiver> </application>
3、广播的接收
package com.example.administrator.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.widget.Toast; /** * Created by Administrator on 2017/5/10 0010. */ public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //Toast.makeText(context,"receive in my broadcastReceiver",Toast.LENGTH_LONG).show(); String name = intent.getStringExtra("name"); int age = intent.getIntExtra("age",0); double height = intent.getDoubleExtra("height",0.0); Toast.makeText(context,"name="+name+",age="+age+"height="+height,Toast.LENGTH_LONG).show(); } }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
二、动态注册(通过代码进行注册)
package com.example.administrator.myapplication;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
IntentFilter intentFilter ;
MyBroadcastReceiver myBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//动态注册接收器
intentFilter = new IntentFilter();
intentFilter.addAction("com.example.administrator.myapplication.MY_BROADCAST");
myBroadcastReceiver = new MyBroadcastReceiver();
registerReceiver(myBroadcastReceiver,intentFilter);
findViewById(R.id.btn_send_broadcast).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//发送广播
Intent intent = new Intent();
intent.setAction("com.example.administrator.myapplication.MY_BROADCAST");
intent.putExtra("name", "xiaoming");
sendBroadcast(intent);
}
});
}
//接收广播
public class MyBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String name = intent.getStringExtra("name");
Toast.makeText(context,"name="+name,Toast.LENGTH_LONG).show();
}
}
}
相关文章推荐
- android广播发送与接收演示DEMO
- Android-广播发送接收
- android安全问题(七) 抢先接收广播 - 内因篇之广播发送流程
- android安全问题(七) 抢先接收广播 - 内因篇之广播发送流程
- Android-自定义发送/接收广播(BroadcastReceiver)
- android接收adb发送的系统广播及自定义广播
- Android深入四大组件(四)广播的注册、发送和接收过程
- android 广播发送和接收
- android的广播发送与接收
- Android发送广播与接收广播
- Android 有时接收不到自己发送的广播消息
- Android安全问题 抢先接收广播 - 内因篇之广播发送流程
- android通信机制3.广播的发送与接收
- Android 接收系统发送的广播,动态注册和静态注册
- MIUI7,Android版本5.0.2,一个程序发送自定义广播,另一个程序没有接收到
- android之接收和发送广播的开机可自动运行程序
- Android——发送和接收广播
- Android 广播的发送与接收
- Android代码片段——启动内置APK和动态发送接收自定义广播