我正在开发android。在我的应用中,用户将通过在edittext中输入他们的电话号码进行注册。然后将此电话号码保存在数据库中。现在,当用户使用该应用程序登录时,我将从他的手机中获取联系人列表,并将其与注册此应用程序的人员进行比较。如果联系人列表中的号码与数据库中的号码匹配,那么我需要在列表视图中显示这些号码。这里的问题是如果用户在联系之前用+91或0保存他的号码,那么数据库中的号码与联系人不匹配。那时数字没有显示。
对于此问题,在输入编辑文本中的数字之前,是否需要保留任何警报?例如,在我给出的编辑文本中,Ph no:8923458128并将其保存在数据库中。现在我使用此号码和我的联系人列表登录了
假设上述2个数字存储在数据库中。但是第二次联系,用户输入为9988334856而没有+91。然后最后在listview而不是2个数字中只显示1个数字,因为第二个数字与数据库编号不匹配。
我该如何解决这个问题?请帮助我。
答案 0 :(得分:4)
如果您从数据库中提取所有手机,则可以使用以下代码,使用PhoneNumberUtils.compare()
将输入的手机与来自数据库的手机相匹配它比较电话号码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.
}
答案 1 :(得分:1)
我认为最好的方法是用4列创建你的表 -
1)的id 2)姓名(如果需要) 3)国家代码 4)电话号码
现在在您的UI前缀国家代码中使用spiner,并在textview中提供电话号码类型的字段。在您的数据库中使用整数值来存储数字。
通过匹配您的电话号码,只需通过此查询 - 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
}
}
谢谢!希望它会对你有帮助。
答案 2 :(得分:1)
将这两行放在您的XML文件中的电话号码编辑文本字段
android:inputType="numberDecimal"
android:maxLength="10"
然后他不能输入超过10个数字,只有他输入数字。
您可以在另外一个文本字段中使用国家/地区代码并使用它进行验证。
答案 3 :(得分:1)
对于手机号验证,Android提供InBuilt Patterns。但它仅适用于API级别8及以上。请尝试以下一行代码。
/* method for phone number validation */
private Boolean Number_Validate(String number)
{
return !TextUtils.isEmpty(number) && (number.length()==10) && android.util.Patterns.PHONE.matcher(number).matches();
}
你可以通过在参数中传递数字来调用这个方法,它返回true或false。
Number_Validate(number);
希望你得到答案。 感谢。
答案 4 :(得分:0)
在数据库中使用TEXT而不是Int。当你使用Int时,如果第一个数字是0,它将忽略,所以只需使用TEXT。
答案 5 :(得分:0)
private boolean phvalidator(String ph2){
// TODO Auto-generated method stub
String expression = "^[0-9-1+]{10,15}$";
CharSequence inputStr = ph;
Pattern pattern = Pattern.compile(expression,Pattern.CASE_INSENSITIVE);
Matcher matcher = pattern.matcher(inputStr);
return (matcher.matches())? true : false;
答案 6 :(得分:0)
试试这个
final String mobile = emobile.getText().toString();
if (!isValidMobile(mobile)){
emobile.setError("Invalid Mobile");
}
private boolean isValidMobile(String mobile) {
if (!TextUtils.isEmpty(mobile)) {
return Patterns.PHONE.matcher(mobile).matches();
}
return false;
}