【发布时间】: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);
我仍然打电话给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