마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

SMS를 통해 문자의 해당 문자열이 오면 주소록을 삭제하는 코드입니다. 문제점이 무엇인지 궁급합니다.

0 추천
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을 수신받으면

주소록이 전체삭제가 되거든요.. 어떻게 해결해야 할지... 제발 빠른답변 부탁드립니다....

 

익명사용자 님이 2014년 6월 10일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...