[英]Get incoming call number programmatically on android 10
从 api 29(Android 10) 开始,查看此问题的先前解决方案现在已贬值。 有没有人能够获得 api 29 的来电号码。显然,现在要做到这一点,您需要使用CallScreeningService
是的,实施 class 并在清单中添加以下必要的权限:
<service
android:name=".CallScreeningService"
android:permission="android.permission.BIND_SCREENING_SERVICE">
<intent-filter>
<action android:name="android.telecom.CallScreeningService" />
</intent-filter>
</service>
在onScreenCall(Call.Details details)
中,您可以调用details.getHandle()
返回来电的电话号码。 只有当号码无法与设备上现有的联系信息匹配时,才会调用此方法。
@Override
public void onScreenCall(Call.Details details) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
if(details.getCallDirection() == Call.Details.DIRECTION_INCOMING) {
CallResponse.Builder response = new CallResponse.Builder();
response.setDisallowCall(false);
response.setRejectCall(false);
response.setSilenceCall(false);
response.setSkipCallLog(false);
response.setSkipNotification(false);
details.getHandle(); //This is the calling number
respondToCall(details, response.build());
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.