我在做android的工作。在我的应用程序中,用户将通过在编辑文本中输入他们的电话号码来注册。然后将这个电话号码保存在数据库中。现在,当用户登录该应用程序时,我从他的手机上获得联系人列表,并将其与注册该应用程序的人进行比较。如果联系人列表中的数字与数据库中的数字匹配,那么我需要在listview中显示这些数字。这里的问题是,如果用户在联系人之前用+91或0保存他的号码,那么数据库中的号码与联系人不匹配。当时数字没有显示。
对于此问题,是否需要在编辑文本中输入数字之前保持警惕?例如,在我给出的编辑文本中,Ph no: 8923458128并将其保存在数据库中。现在我用这个号码和联系人列表登录
假设以上两个数字存储在数据库中。但是第二次接触,用户输入为9988334856没有+91。最后,在列表视图中,仅显示一个数字,而不是2个数字,因为第二个数字与数据库编号不匹配。
我怎样才能解决这个问题?请在这方面帮助我。
发布于 2013-10-29 04:59:50
如果您从DB获取所有电话,则可以使用下面的代码将输入的电话与使用 http://developer.android.com/reference/android/telephony/PhoneNumberUtils.html#compare%28java.lang.String,%20java.lang.String%29的DB电话相匹配。
它比较电话号码a和b,如果它们对来电显示的目的完全相同,则返回true。
private String getMatchedPhones(ArrayList<String> contactsFromDB, String phoneToMatch) {
// Iterate all numbers and match
for (String numberFromDb : contactsFromDB) {
if (PhoneNumberUtils.compare(numberFromDb, phoneToMatch)) {
return phoneToMatch; // Or numberFromDb
}
}
return null; // Or can custom msg. If not matched.
}发布于 2013-10-29 04:52:24
我想最好的方法是用4列来创建你的桌子-
( 1)id 2)姓名(如有需要)3)国家代码4)电话号码
现在,在你的UI前缀国家代码在一个spiner和给出电话号码类型的字段在文本视图。并在数据库中使用整数值来存储数字。
通过匹配您的电话号码,只需传递以下查询- 1)phoneNumber = phoneNumberEditText.getText().toString();2) //读取数据库中的所有联系人
List<Contacts> number = db.getAllNumber();
for (final Contacts cn : number) {
if ((phoneNumber.equals(cn.getNumber()){
//do what you want
}
}谢谢!希望它能帮到你。
发布于 2013-10-29 05:18:39
将这两行放在XML文件中的电话号码编辑文本字段中。
android:inputType="numberDecimal"
android:maxLength="10"然后,他不能输入超过10个数字,只有他应该输入数字。您可以在另一个文本字段中获取国家代码并使用它进行验证。
https://stackoverflow.com/questions/19649785
复制相似问题