[英]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.