Не могу сравнить две строки в Android
Я новичок в Android. Я разрабатываю приложение, которое блокирует нежелательные звонки. Теперь я застрял здесь, когда я пытаюсь сравнить входящий номер с номерами в контакте. Вот код Пожалуйста помоги. Здесь при установке флажка мне нужно заблокировать все звонки от незнакомых людей (не в контакте)
Bundle extra=intent.getExtras();//new
telephonyManager = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
if(extra!=null)//new=== getting the blocked number {
state=extra.getString(telephonyManager.EXTRA_STATE);
if(state.equals(telephonyManager.EXTRA_STATE_RINGING)) {
number=extra.getString(telephonyManager.EXTRA_INCOMING_NUMBER);
Log.w("INCOMMING NUMBER",number);
}
}
if(noStrangers_cb.isChecked()){
Cursor phones1 = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones1.moveToNext()){
String phoneNumber = phones1.getString(phones1.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.d("NUMBER IN CONTACT",phoneNumber );
//boolean val= number== phoneNumber;
//String no=number;
//Log.d("ASSIGNING NUMBER TO NO = ", no);
//Collator c=Collator.getInstance();
if(!phoneNumber.equals(number))
{
Log.d("IF ", "STRANGERS"+number);
//Log.d("NUMBER CHECKING", "NUMBER = "+number+"CONTACT = "+phoneNumber);
try {
telephonyService.endCall();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
phones1.close();
}//end if Strangers
LogCat:
Обновленный код ниже:
if(allContacts_cb.isChecked())
{
Log.d("BLOCK ALL CONTACTS","blocking contacts.........." );
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,null,null, null);
while (phones.moveToNext())
{
String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
Log.d("NUMBER IN CONTACT ",phoneNumber );
String num=phoneNumber.replace("-","");
String incom=incomingNumber;
String s1="0"+num;
String s2="+91"+num;
if((num.equals(incomingNumber))||((s1).equals(incomingNumber))||(s2).equals(incomingNumber))//if(phoneNumber.compareTo(no)==0)//&&(checking==true))
{
Log.d("IF ", "INSIDE IF OF BLOCKING CONTACTS");//+cn+"num"+n);
Log.d("NUMBER CHECKING", "NUMBER = "+number+"CONTACT = "+phoneNumber);
try {
ending1=telephonyService.endCall();
if(ending1)
{
for(int i=1;i<=1;i++)
{
android.telephony.SmsManager sms = android.telephony.SmsManager.getDefault();
sms.sendTextMessage(incom, null, SMS, null, null);
break;
}
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else
{
if(noStrangers_cb.isChecked())
{
try {
telephonyService.endCall();
} catch (RemoteException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}//end of while
phones.close();
}//end if allContacts
Кто-нибудь может мне помочь..
3 ответа
Замена символа _ из вашего номера не является вашим окончательным решением. Вы должны прочитать PhoneNumberUtils, или вот лучшая библиотека 'libphonenumber', которую можно использовать для различных типов операций, связанных с телефонными номерами.
Читайте подробности о libphonenumber.
А ниже приведен фрагмент кода, который можно использовать для ваших целей.
public boolean isCallerInDatabase(String caller, String phoneNumberFromDb) {
phoneUtil = PhoneNumberUtil.getInstance();
if(phoneUtil.isNumberMatch(caller, phoneNumberFromDb) != PhoneNumberUtil.MatchType.NO_MATCH) {
//Number matched
Log.i("TEST", "NUMBER MATCHED");
return true;
}
Log.i("TEST", "NUMBER NOT MATCHED");
return false;
}
Обновление: Android Добавил эту библиотеку как класс Utility.
Сам Android был добавлен класс PhoneNumberUtils для вспомогательных методов, связанных с телефоном. Для сравнения двух телефонных номеров вы должны использовать метод PhoneNumberUtils.compare.
Удачного кодирования:)
Вы можете заменить строку "-" на "" в своем номере телефона, а затем использовать эту строку для сравнения.
string no= Phonecontactno.StringReplace("-","");
Теперь используйте эту строку для сравнения с входящим №.
Попробуйте следующее условие, может быть, это поможет вам
if(!(phoneNumber.toString().equals(number.toString)))