1

連絡先番号をDBに保存し、SMS送信者と比較する必要があるSMSブロッカーを開発しています。AndroidフォンにはデフォルトのSMSアプリケーションのみがインストールされています。ただし、次のコードから選択される連絡先番号の形式には違いがあります。

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(intent, PICK_CONTACT);

ブロードキャスト レシーバーを使用して SMS を受信した場合 (次のコード セグメントを参照):

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
String number = phoneNumber;
String message = currentMessage.getDisplayMessageBody();

連絡先リストの電話番号の形式は、国コードなしの「033-xxxx-xxxx」のような形式ですが、SMS ブロードキャスト レシーバーは「+92331xxxxxxx」のような国コードを番号に追加します。

私の質問は、(a) SMS レシーバーが連絡先リストに保存されているのとは異なる形式を使用している理由と、(b) SMS ブロードキャスト レシーバーでこれらの番号を比較する方法です。

4

1 に答える 1