在HashMap中匹配电话号码:Android
我正在做一个应用程序,我需要存储一些号码,当有人打电话时,我需要检查传入的号码是否存在于我的数据库中 我所做的 我将电话号码存储在共享首选项中。android内部使用Map实现这一目的 问题: 假设我存储了9089889899(10位电话号码)。现在,如果我接到这个号码的来电,它可能会广播同一个号码有090898899或+91-9089889899的接收器在HashMap中匹配电话号码:Android,android,broadcastreceiver,Android,Broadcastreceiver,我正在做一个应用程序,我需要存储一些号码,当有人打电话时,我需要检查传入的号码是否存在于我的数据库中 我所做的 我将电话号码存储在共享首选项中。android内部使用Map实现这一目的 问题: 假设我存储了9089889899(10位电话号码)。现在,如果我接到这个号码的来电,它可能会广播同一个号码有090898899或+91-9089889899的接收器 所以我的问题是,如果我将一个数字存储到首选项中,那么如何匹配传入的数字是否存在于首选项中 这是将匹配所有电话格式的正则表达式 (((([0-
所以我的问题是,如果我将一个数字存储到首选项中,那么如何匹配传入的数字是否存在于首选项中 这是将匹配所有电话格式的正则表达式
(((([0-9]){0,1})(([0-9]){10}))|([0-9]){10}|(\+([0-9]){1,2}([0-9]{10})))
第一部分匹配0-1234
第二部分匹配1234
最后一部分+91-1234
更新
事实上这好多了
(((([0-9]){0,1})(([0-9]){10}))|(\+([0-9]){1,2}([0-9]{10})))
下面是匹配所有电话格式的正则表达式
(((([0-9]){0,1})(([0-9]){10}))|([0-9]){10}|(\+([0-9]){1,2}([0-9]{10})))
第一部分匹配0-1234
第二部分匹配1234
最后一部分+91-1234
更新
事实上这好多了
(((([0-9]){0,1})(([0-9]){10}))|(\+([0-9]){1,2}([0-9]{10})))
如果您使用手机作为SharedReference的密钥,您可以:
编辑:为什么不使用内容提供商?如果您使用手机作为共享参考的密钥,您可以:
编辑:为什么不使用内容提供商?您可以在广播接收器中尝试以下代码。 这里是“abc”和您的共享围栏的名称。假设num是您从广播接收器获得的数字: 在代码中,最后10位数字被取出并进行比较,因为这些数字存储在SharedReference中
SharedPreferences sp = getSharedPreferences("abc",Context.MODE_PRIVATE);
HashMap< String, String>hMap = (HashMap<String, String>) sp.getAll();
String num = "+91-9089889899";
if( hMap.containsValue(num.substring(num.length()-10))){
System.out.println("number present");
}
SharedReferences sp=getSharedReferences(“abc”,Context.MODE\u PRIVATE);
HashMaphMap=(HashMap)sp.getAll();
字符串num=“+91-9089889899”;
if(hMap.containsValue(num.substring(num.length()-10))){
系统输出打印项次(“存在的编号”);
}
您可以在广播接收器中尝试以下代码。
这里是“abc”和您的共享围栏的名称。假设num是您从广播接收器获得的数字:
在代码中,最后10位数字被取出并进行比较,因为这些数字存储在SharedReference中
SharedPreferences sp = getSharedPreferences("abc",Context.MODE_PRIVATE);
HashMap< String, String>hMap = (HashMap<String, String>) sp.getAll();
String num = "+91-9089889899";
if( hMap.containsValue(num.substring(num.length()-10))){
System.out.println("number present");
}
SharedReferences sp=getSharedReferences(“abc”,Context.MODE\u PRIVATE);
HashMaphMap=(HashMap)sp.getAll();
字符串num=“+91-9089889899”;
if(hMap.containsValue(num.substring(num.length()-10))){
系统输出打印项次(“存在的编号”);
}
我建议您使用类似的方式来处理电话号码,而不受格式限制
中还有一些用于格式化和比较数字的函数 我建议您使用类似的方式来处理电话号码,而不依赖于格式
中还有一些用于格式化和比较数字的函数 你能提供一些关于如何使用libphonenumber匹配两个数字的教程吗?你能提供一些关于如何使用libphonenumber匹配两个数字的教程吗?