Android 10 API 29上的CallScreeningService getExtras NULL

问题描述 投票:0回答:1

我正在使用Android类CallScreeningService onScreenCall(Call.Details calldetails)来获取所有传入的呼叫,并且一切正常!从现在开始我出现一个错误,在Android 10设备上,函数calldetails.getExras()和calldetails.getIntentExtras()始终返回NULL,而不是Bundle,在其中我可以阅读一些进一步的信息。在Android 9设备及更低版本上,一切正常。

有人有类似的问题吗?这是源代码和一些声明:

public class IncommingCallService extends CallScreeningService {

    @Override
    public void onScreenCall(Call.Details callDetails) {
                if (callDetails.getExtras() != null) {
                        Log.d(LOG_TAG, "Everything works on Android 9 or older");
                }else{
                        Log.d(LOG_TAG, "Its Null on Android 10!");
                }  

                if (callDetails.getIntentExtras() != null) {
                        Log.d(LOG_TAG, "Everything works on Android 9 or older");
                }else{
                        Log.d(LOG_TAG, "Its Null on Android 10!");
                }     
}

和Manifest.xml:

<service android:name=".call_handler.IncommingCallService"
    android:permission="android.permission.BIND_SCREENING_SERVICE">
     <intent-filter>
          <action android:name="android.telecom.CallScreeningService"/>
     </intent-filter>
</service>
android bundle phone-call android-10.0
1个回答
0
投票

根据Android文档:

注意:提供给呼叫筛选服务的Call.Details实例将仅设置以下属性。其余的Call.Details属性将设置为其默认值或为空。

Call.Details#getCallDirection()

Call.Details#getConnectTimeMillis()

Call.Details#getCreationTimeMillis()

Call.Details#getHandle()

Call.Details#getHandlePresentation()

仅在Call.Details#getHandle()Uri#getScheme()是PhoneAccount#SCHEME_TEL通过了电话筛选。此外,仅呼叫不在用户的联系人已通过筛选。对于拨出电话,否传递后拨号数字。

所以您所看到的只是Android 10的预期行为。

© www.soinside.com 2019 - 2024. All rights reserved.