首页 > 学院 > 开发设计 > 正文

广播的一些用法

2019-11-10 21:40:09
字体:
来源:转载
供稿:网友

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

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

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

发送者 public class MainActivity extends AppCompatActivity {

PRivate EditText et_main_content;private Intent intent;@Overrideprotected 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;@Overrideprotected 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");}@Overrideprotected void onResume() { super.onResume(); //动态注册广播 registerReceiver(myReceived02,intentFilter);}@Overrideprotected 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; } }}

}


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表