【问题标题】:Identifying Unknown/Private/Restricted calls in my Android app在我的 Android 应用中识别未知/私人/受限呼叫
【发布时间】:2016-12-16 21:51:03
【问题描述】:

我在 contentObserver 中使用一个简单的投影来检测未接来电。

String[] projection = new String[] {Calls.NUMBER, Calls.DATE};

以后...

String number = cursor.getString(0);

我希望能够识别没有来电显示的来电。一个快速的实验表明,对于“受限”呼叫(来自真实电话,使用#31#),返回的号码是“-2”。在使用“#”作为电话号码的模拟器上,显示为来自“-1”的呼叫,报告为“未知”。

我找不到任何文件来确认这一点。简单地寻找负数或“-”前缀是识别此类调用的可靠方法吗?

【问题讨论】:

    标签: android phone-call


    【解决方案1】:

    您可以使用另一个列:Calls.NUMBER_PRESENTATION,它具有以下可能的值:

    • PRESENTATION_ALLOWED
      • 允许显示来电显示号码。常数值:1 (0x00000001)
    • PRESENTATION_RESTRICTED
      • 号码被用户屏蔽。常数值:2 (0x00000002)
    • PRESENTATION_UNKNOWN
      • 号码未指定或网络未知。常数值:3 (0x00000003)
    • PRESENTATION_PAYPHONE
      • 号码是付费电话。常数值:4 (0x00000004)

    来自受限未知号码的呼叫,字段值为 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";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多