开发平台基本信息
芯片: SDM450
版本: Android 9.0
kernel: msm-4.9
问题描述
公司有一款设备,作为校园话机使用,投放安置在中小学校园内,供学生与家长视频通话,因为是学生刷卡计费拨打视频给家长,所以,要求设备不允许电话呼入以及接收短信。
解决方法
禁止电话、短信呼入
其实实现的方式也很简单,Android原生有加入黑名单功能,被加入黑名单的号码则无法呼入,那么,利用这个功能,在判断是否是黑名单的地方,把所有号码都默认为黑名单号码,即可实现我们需要的功能。
diff --git a/src/java/com/android/internal/telephony/BlockChecker.java b/src/java/com/android/internal/telephony/BlockChecker.java
old mode 100644
new mode 100755
index 456be56..9875e8c
--- a/frameworks/opt/telephony/src/java/com/android/internal/telephony/BlockChecker.java
+++ b/frameworks/opt/telephony/src/java/com/android/internal/telephony/BlockChecker.java
@@ -4,6 +4,7 @@ import android.content.Context;
import android.os.Bundle;
import android.provider.BlockedNumberContract;
import android.telephony.Rlog;
+import android.os.SystemProperties;
/**
* {@hide} Checks for blocked phone numbers against {@link BlockedNumberContract}
@@ -11,6 +12,7 @@ import android.telephony.Rlog;
public class BlockChecker {
private static final String TAG = "BlockChecker";
private static final boolean VDBG = false; // STOPSHIP if true.
+ private static final String TELEPHONY_STATUS_SETTINGS = "persist.custom.telephony_status";
/**
* Returns {@code true} if {@code phoneNumber} is blocked according to {@code extras}.
@@ -41,6 +43,9 @@ public class BlockChecker {
* @return {@code true} if the number is blocked. {@code false} otherwise.
*/
public static boolean isBlocked(Context context, String phoneNumber, Bundle extras) {
+ if(SystemProperties.get(TELEPHONY_STATUS_SETTINGS,"1").equals("0")){
+ return true;
+ }
boolean isBlocked = false;
long startTimeNano = System.nanoTime();
注:我这里加了一个属性控制,其实在其他地方,我还写了个广播,客户可通过广播去修改这个属性,从而达到动态启用或者禁用这个功能的效果。