Android监听来电状态
2023-02-18 16:34:03 时间
转载请以链接形式标明出处: 本文出自:103style的博客
记录一下.
public class PhoneCallReceiver extends BroadcastReceiver {
private static final String TAG = "PhoneCallReceiver ";
private OnPhoneCallListener onPhoneCallListener;
@Override
public void onReceive(Context context, Intent intent) {
TelephonyManager tm = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);
int state = tm.getCallState();
Logg.e(TAG, "state = " + state);
if (onPhoneCallListener != null) {
onPhoneCallListener.hasNewCall(state == TelephonyManager.CALL_STATE_RINGING);
}
}
public void setOnOnPhoneCallListener(OnPhoneCallListener onPhoneCallListener) {
this.onPhoneCallListener = onPhoneCallListener;
}
public interface OnPhoneCallListener {
void hasNewCall(boolean valid);
}
}
fragment or activity
:
/**
* 来电响铃的监听
*/
private PhoneCallReceiver phoneCallReceiver;
/**
* 来电响铃监听是否已注册
*/
private boolean hasRegisterPhoneCall = false;
// Activity
//@Override
//protected void onRestart() {
// super.onRestart();
// registerPhoneCallReceiver(true);
//}
@Override
public void onStart() {
super.onStart();
registerPhoneCallReceiver(true);
}
@Override
public void onStop() {
super.onStop();
registerPhoneCallReceiver(false);
}
/**
* 监听来电响铃状态
*/
public void registerPhoneCallReceiver(boolean register) {
if (register) {
if (phoneCallReceiver== null) {
phoneCallReceiver= new PhoneCallReceiver();
phoneCallReceiver.setOnOnPhoneCallListener(valid -> {
//
});
}
if (!hasRegisterPhoneCall) {
hasRegisterPhoneCall = true;
activity.registerReceiver(phoneCallReceiver, new IntentFilter());
}
} else {
if (phoneCallReceiver!= null && hasRegisterPhoneCall) {
hasRegisterPhoneCall = false;
activity.unregisterReceiver(phoneCallReceiver);
}
}
}
AndroidManifest.xml
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<receiver android:name=".PhoneCallReceiver">
<intent-filter android:priority="1000">
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
相关文章
- 7 Papers & Radios | Stable Diffusion采样速度翻倍;MIT解决神经网络百年难题
- uniapp云打包,使用push时候提示:Android包名和DCloud UniPush插件绑定的不一致,请确认【已解决】
- 【凯哥领券网】外卖领红包小程序(美团、饿了么)部署时候遇到问题记录
- 7 Papers & Radios | NeurIPS'22获奖论文;英伟达一句话生成3D模型
- 【已解决】SpringBoot项目bootstrap.yml配置文件不加载
- 微信h5跳转小程序wx-open-launch-weapp开放标签不显示(已解决)
- uni-app&H5&Android混合开发三 || uni-app调用Android原生方法的三种方式
- .NET生成小程序码,并合自定义背景图生成推广小程序二维码
- uni-app&H5&Android混合开发二 || 使用Android Studio打包应用APK
- 【新手指南】Android Studio中应用App的相关配置
- Android Studio在android Emulator中运行的项目黑屏
- 微信小程序转化为uni-app项目
- uni-app微信小程序开发之引入腾讯视频小程序播放插件
- .NET之微信小程序获取用户UnionID
- 微信小程序开发笔记
- 微信小程序之onLaunch与onload异步问题
- 微信小程序开发之多图片上传+.NET WebAPI后端服务保存图片资源
- 微信小程序picker组件关于objectArray数据类型绑定
- 基于Yii2接口的在线答题小程序
- [开源推荐] EasyWeChat开源微信SDK支持公众号 小程序 微信支付 开放平台