广播的一些用法

版权声明:本文为博主原创文章,未经博主允许不得转载。

广播的实现:发送者和接受者

静态广播与动态广播
具体实现:在安卓软件程序中,静态广播都可以接收到发送者的信息,然而动态广播软件程序中他后台关闭后,不能接受到发送者的信息。

发送者
public class MainActivity extends AppCompatActivity {

private EditText et_main_content;
private Intent intent;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    et_main_content = (EditText) findViewById(R.id.et_main_content);

    intent = new Intent();

    //设置广播的名字(设置Action)
    intent.setAction("com.example.android20_sender.1008");
}

public void send(View view){
    String content=et_main_content.getText().toString();

    //携带数据
    intent.putExtra("data",content);

    //发送广播(无序广播)
 //sendBroadcast(intent);

 //发送黏性广播
    sendStickyBroadcast(intent);
}

}

静态广播清单文件配置
这里写图片描述

Java代码接受者
public class MyReceived01 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(“com.example.android20_sender.1008”.equals(intent.getAction())){
String data=intent.getStringExtra(“data”);
Log.i(“test”,”01号接受者收到广播了:”+data);
}
}
}

动态广播要用到黏性广播(已过时,可以用),解决后台关闭后,接受发送者的信息,动态广播的优先级大于静态广播

在发送者清单文件中添加发送黏性广播的权限
这里写图片描述

动态广播跟静态差不多,只是不在清单文件中配置,用Java代码
public class MainActivity extends AppCompatActivity {

private MyReceived02 myReceived02;
private IntentFilter intentFilter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    myReceived02 = new MyReceived02();
    intentFilter = new IntentFilter();
    intentFilter.addAction("com.example.android20_sender.1008");
}

@Override
protected void onResume() {
    super.onResume();
    //动态注册广播
    registerReceiver(myReceived02,intentFilter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    //注销动态广播
    unregisterReceiver(myReceived02);
}

}

Java代码接受者
public class MyReceived02 extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(“com.example.android20_sender.1008”.equals(intent.getAction())){
String data=intent.getStringExtra(“data”);
Log.i(“test”,”02号接受者收到粘性广播了:”+data);
}
}
}

系统广播
电话权限状态

添加接受者电话的状态

接受者的电话状态
public class MyPhoneState extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(“android.intent.action.PHONE_STATE”.equals(intent.getAction())){
//获取电话号码
String number=intent.getStringExtra(“incoming_number”);
Log.i(“test”,”有电话进来了,”+number);
Toast.makeText(context, “电话进来了:”+number, Toast.LENGTH_SHORT).show();

        //获取电话状态
        //电话管理者
        TelephonyManager tm= (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
        int state=tm.getCallState();
        switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                Log.i("test","表白前");
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                Log.i("test","热恋中");
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                Log.i("test","失恋了");
                break;
        }
    }
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值