广播
最新接触到的一个技术,来跟大家分享一下。
广播发送者的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editText = (EditText) findViewById(R.id.ed_send);
intent = new Intent();
//设置广播的名字,设置action
intent.setAction("com.zking.andriod20sender.955");
}
public void send(View view){
String content=editText.getText().toString();
//发送广播之前先携带数据过去
intent.putExtra("data",content);
//发送广播,无序
// sendBroadcast(intent);
//发送黏性广播
sendStickyBroadcast(int
ent);
}
1.广播接受者需要配置,(在清单文件里配置的是静态广播。)
先打开谁就谁先接收到。
2.动态广播(是在Java代码中配置),动态广播的优先级高于静态广播的优先级。必须要写注销动态广播。
3.黏性广播,(已经过时)发送黏性广播需要配置黏性广播的权限。代码如下,
<user-permssion andriod="android_permission.BROADCAST_STICK
</user-ermission >
4.系统广播,短信是有序广播,来电是无序广播。
今天要在这里讲的是来电广播。
需要加一个打电话的权限
需要获取电话管理服务,获得电话状态,获得来电电话号码。
还有来电的三种状态。
具体代码如下:
public class Myphoone 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;
}
}
}