2

私は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

誰か助けてもらえますか..お願いします..

4

3 に答える 3

2

電話番号の文字列「-」を「」に置き換えて、その文字列を使用して比較できます。

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

次に、この文字列を使用して、着信番号と比較します。

于 2012-05-25T07:06:59.617 に答える
2

番号から_文字を置き換えることは、最終的な解決策ではありません。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クラスが追加されました。2つの電話番号を比較するには、PhoneNumberUtils.compareメソッドを使用する必要があります。

ハッピーコーディング:)

于 2012-06-04T14:34:20.067 に答える
0

次の条件を試してみてくださいそれはあなたを助けるかもしれません

if(!(phoneNumber.toString().equals(number.toString)))
于 2012-05-25T07:13:07.643 に答える