2012-05-25 3 views
2

Я новичок в Android. Я разрабатываю приложение, которое блокирует нежелательные звонки. Теперь я застрял здесь, когда пытаюсь сравнить входящий номер с цифрами, находящимися в контакте. Вот код. Пожалуйста помоги. Здесь при проверке Checkbox мне нужно, чтобы блокировать все звонки от незнакомых людей (не в контакте)Невозможно сравнить две строки в 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: enter image description here

Обновленный код приведен ниже:

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 
Может

кто поможет me .. Please ..

+0

http://stackoverflow.com/questions/5805442/how-to-compare-phone-numbers –

+0

Спасибо за ответ Dheeresh Сингх .. Можете ли вы помочь мне с образцом, например ..? – Deepthi

ответ

2

Замена _ символ из вашего номера не ваше окончательное решение. Вы должны прочитать PhoneNumberUtils или здесь best library 'libphonenumber', который может использоваться для различных операций, связанных с номерами телефонов.

Прочитать подробности about 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.

Днем кодирования :)

+0

Спасибо большое Pankaj .. Я попробую это тоже .. – Deepthi

+0

Эй, Pankaj, но это не работа над Андро id 2.2 Правильно? – Deepthi

+0

@ Deepthi Это работает. Я использовал в своем приложении, который работает от 2,1 до 4,2. Поэтому я уверен, что он работает на 2,2. –

2

Вы можете заменить строку «-» на «» на своем номере телефона, а затем использовать ее tring для сравнения.

string no= Phonecontactno.StringReplace("-",""); 

Теперь используйте эту строку для сравнения с входящим номером.

+0

Спасибо большое .. Я попробую это .. :-) – Deepthi

+0

, но здесь она не хочет заменять или изменять строку, ее вопрос просто сравним две строки. – user1208720

+0

@subbu: Большое спасибо. Он решил одну часть моей проблемы. Но она не работает для проверки неравенства. Это для «! No.equals (incommingno)» Можете ли вы мне помочь? .. 'm upvoting этого ответа, поскольку это помогло мне в некоторой степени .. – Deepthi

0

попробуйте следующее условие может быть, это поможет вам

if(!(phoneNumber.toString().equals(number.toString))) 
+0

Большое спасибо .. Но это не сработало для меня .. :( – Deepthi

+0

ya, но вот сначала прочитайте свой вопрос, спросите вы о сравнении двух строк , не заменять его, а затем сравнить его :( – user1208720

+0

Я не могу сравнить входящий номер с номером в контакте .. :( – Deepthi

 Смежные вопросы

  • Нет связанных вопросов^_^