在Android 8 Oreo中以编程方式阻止(取消)来电?

在Android 8 Oreo中以编程方式阻止(取消)来电?,android,android-8.0-oreo,incoming-call,Android,Android 8.0 Oreo,Incoming Call,我正在编写一个用于过滤未经请求的呼叫的应用程序 该应用程序在安卓4.2(API级别17)到安卓7.1(API级别25)之间运行正常 在一些安卓8.0(API等级26)设备上运行良好(如三星A5 2017),不幸的是,一些安卓8.0(API等级26)设备无法正常运行(三星GALAXY S7、S7 EDGE) 我使用这段代码(为了满足本论坛的需要,代码已大大简化): 此方法无缝地适用于Android 7.1.1(包括) 对于Android 9(Android p,API级别28+),将使用以下代码:

我正在编写一个用于过滤未经请求的呼叫的应用程序

该应用程序在安卓4.2(API级别17)到安卓7.1(API级别25)之间运行正常

在一些安卓8.0(API等级26)设备上运行良好(如三星A5 2017),不幸的是,一些安卓8.0(API等级26)设备无法正常运行(三星GALAXY S7、S7 EDGE)

我使用这段代码(为了满足本论坛的需要,代码已大大简化):

此方法无缝地适用于Android 7.1.1(包括)

对于Android 9(Android p,API级别28+),将使用以下代码:

TelecomManager tm;
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    tm = (TelecomManager)mContext.getSystemService(Context.TELECOM_SERVICE);
                if (tm == null) {
                    throw new NullPointerException("tm == null");
                }
                if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ANSWER_PHONE_CALLS) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
                tm.endCall();

            };
这种方法已经在安卓p Preview上测试过,完全没有问题

现在我提出以下问题:

是否有可能保证Android 8(API级别26和27)设备上的功能来阻止来电?有人对如何正确编程有什么建议吗


如有任何建议,我将不胜感激。

您好,您找到问题的解决方案了吗?如果是,请尽快发布答案。我也面临着同样的问题,你能解决吗?我与Oreo有
Huawei
Nexus
P6
。这对我来说很好。我想你必须实施服务接口来阻止呼叫。
TelecomManager tm;
  if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
    tm = (TelecomManager)mContext.getSystemService(Context.TELECOM_SERVICE);
                if (tm == null) {
                    throw new NullPointerException("tm == null");
                }
                if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.ANSWER_PHONE_CALLS) != PackageManager.PERMISSION_GRANTED) {
                    return;
                }
                tm.endCall();

            };