[英]Not able to compare two string in 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
誰能幫我..請..
您可以在電話號碼中將字符串“-”替換為“”,然后使用該字符串進行比較。
string no= Phonecontactno.StringReplace("-","");
現在使用此字符串與傳入的編號進行比較。
用數字代替_不是您的最終解決方案。 您應該閱讀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已將該庫添加為實用程序類。
Android本身已添加了PhoneNumberUtils類,用於與電話相關的幫助程序方法。 要比較兩個電話號碼,應該使用PhoneNumberUtils.compare方法。
快樂的編碼:)
嘗試以下條件可能會幫助您
if(!(phoneNumber.toString().equals(number.toString)))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.