gpt4 book ai didi

android - 如何从 CallScreeningService 的 Call.Details 中提取电话号码?

转载 作者:搜寻专家 更新时间:2023-11-01 09:20:10 24 4
gpt4 key购买 nike

我正在为 Android api 29 创建一个调用拦截器。为了做到这一点,我有一个扩展 CallScreeningService 的类,如 here 所述。 .我的应用程序可以检测来电和去电,但我不知道如何从 Call 中提取电话号码。详细信息:

@RequiresApi(api = Build.VERSION_CODES.N)
public class CallScreenService extends CallScreeningService {

@RequiresApi(api = Build.VERSION_CODES.Q)
@Override
public void onScreenCall(Call.Details callDetails) {
CallResponse.Builder response = new CallResponse.Builder();
Log.i("CallScreeningService", callDetails.toString());
}
}

日志输出“tel:************”,我怀疑这意味着我没有足够的权限读取电话号码。在 Main 中,我正在请求以下所有内容的权限:

   android.Manifest.permission.READ_CONTACTS,
android.Manifest.permission.READ_PHONE_STATE,
android.Manifest.permission.READ_CALL_LOG,
android.Manifest.permission.PROCESS_OUTGOING_CALLS,
android.Manifest.permission.ANSWER_PHONE_CALLS,
Manifest.permission.CALL_PHONE

此外,这是我的 CallScreening 类的 list :

    <service android:name=".phoneHandlers.CallScreenService"
android:permission="android.permission.BIND_SCREENING_SERVICE">
<intent-filter>
<action android:name="android.telecom.CallScreeningService"/>
</intent-filter>
</service>

如何在 Call.Details 中读取电话号码?

最佳答案

要获取当前已连接到调用的电话号码,您需要使用 Call.Details#getHandle() .

所以在你的 onScreenCall 中:

@Override
public void onScreenCall(Call.Details callDetails) {
Log.i("Phone number", callDetails.getHandle().toString());
}

关于android - 如何从 CallScreeningService 的 Call.Details 中提取电话号码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56813810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com