public class Receiver extends BroadcastReceiver {
final SmsManager sms = SmsManager.getDefault();
String su = "1";
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Log.d("MY_TAG", "BroadcastReceiver onReceive()");
if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
Bundle bundle = intent.getExtras();
if(bundle != null){
Object[] pdusObj = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdusObj.length];
for(int i = 0; i<pdusObj.length; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
if(messages[i].getMessageBody().equals(su)) {
String number = messages[i].getOriginatingAddress();
String[] whereArgs = new String[]{number};
Cursor cursor = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,
ContactsContract.CommonDataKinds.Phone.NUMBER + " = ?", whereArgs, null);
if(cursor != null){
int idIndex = cursor.getColumnIndex(RawContacts._ID);
if(cursor.moveToNext()){
String id = cursor.getString(idIndex);
context.getContentResolver().delete(RawContacts.CONTENT_URI,
RawContacts._ID + " = " + id, null);
Toast.makeText(context, "삭제성공" + id, Toast.LENGTH_LONG).show();
}
}
}
else
Toast.makeText(context, "삭제실패", Toast.LENGTH_LONG).show();
}
}
}
}
}
코드내용입니다. 위와 같이 하였을 때, 1이라는 문자를 수신하면 해당 번호가 주소록에서 삭제가되어야합니다.
그런데, 문자 수신후 해당 ID는 밑에 TOAST로 표시가 되는데, 해당 번호가 삭제가 되지 않습니다.
그리고 RawContacts_ID + " = " + id 이부분이 잘못된거같습니다. 이부분을 null하였을시, 문자 1을 수신받으면
주소록이 전체삭제가 되거든요.. 어떻게 해결해야 할지... 제발 빠른답변 부탁드립니다....