我在contentObserver中使用一个简单的投影来检测未接来电。
String[] projection = new String[] {Calls.NUMBER, Calls.DATE};
以后......
String number = cursor.getString(0);
我希望能够识别没有来电显示的来电。一个快速的实验表明,对于“受限制”的呼叫(来自真实手机,使用#31#),返回的数字为“-2”。在使用“#”作为电话号码的模拟器上,显示为来自“-1”的呼叫,报告为“未知”。
我找不到任何证明这一点的文件。只是寻找负数或“ - ”前缀是识别此类呼叫的可靠方法吗?
答案 0 :(得分:1)
您可以使用具有以下可能值的其他列:Calls.NUMBER_PRESENTATION
:
PRESENTATION_ALLOWED
PRESENTATION_RESTRICTED
PRESENTATION_UNKNOWN
PRESENTATION_PAYPHONE
来自受限制的未知号码的电话,字段值将为2或3.所以你可以这样做:
String[] projection = new String[] {
Calls.NUMBER,
Calls.DATE,
Calls.NUMBER_PRESENTATION
};
以后......
String number = cursor.getString(0);
String type = cursor.getString(2);
if(type == "2" || type == "3") {
number = "RESTICTED OR UNKNOWN";
}