【问题标题】:How to Block Call in Android Nougat, Oreo and above programatically?如何以编程方式阻止 Android Nougat、Oreo 及更高版本中的呼叫?
【发布时间】:2019-02-03 20:22:45
【问题描述】:

此代码在 Android 6 (Marshmallow) 之前运行良好:

TelephonyManager tm = (TelephonyManager) context
        .getSystemService(Context.TELEPHONY_SERVICE);
Class c = Class.forName(tm.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
Object telephonyService = m.invoke(tm); 
c = Class.forName(telephonyService.getClass().getName()); 
m = c.getDeclaredMethod("endCall"); 
m.setAccessible(true); 
m.invoke(telephonyService);

After reading documentation

我仍然打电话给endCall(context, number),无法阻止通话。需要 Android Nougat、Oreo、Pie 及以上版本的工作解决方案。

更新

我在 Nougat 官方文档中添加了以下代码,但该数字仍未添加到阻止列表中。

Cursor c = mContext.getContentResolver().query(BlockedNumberContract.BlockedNumbers.CONTENT_URI,
                    new String[]{BlockedNumberContract.BlockedNumbers.COLUMN_ID,
                            BlockedNumberContract.BlockedNumbers.COLUMN_ORIGINAL_NUMBER,
                            BlockedNumberContract.BlockedNumbers.COLUMN_E164_NUMBER}, null, null, null);

【问题讨论】:

  • @jackjay 您提供的链接已损坏,我相信您的意思是this
  • 这是更正的链接:source.android.com/devices/tech/connect/block-numbers我现在正在实施它。
  • 是的,您应该点击此链接。
  • 我只想将数字放入黑名单,因此我写了这个:` ContentValues values = new ContentValues(); values.put(BlockedNumbers.COLUMN_ORIGINAL_NUMBER, "1234567890"); Uri uri = getContentResolver().insert(BlockedNumbers.CONTENT_URI, values); ` 但这并不是将数字放入黑名单

标签: java android android-studio android-phone-call callblocking


【解决方案1】:

Android 9 不能使用非 SDK 接口

Android 9 对非 SDK 的使用引入了新限制 接口,无论是直接的、通过反射还是通过 JNI。这些 每当应用引用非 SDK 时都会应用限制 接口或尝试使用反射或 JNI 获取其句柄。

您似乎无法读取或写入BlockedNumberContract,除非它是系统应用程序、默认拨号器或默认短信应用程序

权限

只有系统、默认短信应用和默认电话 应用程序(请参阅 TelecomManager.getDefaultDialerPackage())和运营商应用程序 (参见 CarrierService)可以读取和写入被阻止的号码 提供者。但是可以访问 canCurrentUserBlockNumbers(Context) 通过任何应用程序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-15
    • 1970-01-01
    • 1970-01-01
    • 2011-10-16
    相关资源
    最近更新 更多