저는 SMS 명령을 사용하여 장치를 관리 할 수있는 응용 프로그램을 개발해 왔습니다. 응용 프로그램은 SMS에서 명령을 실행하고이 Sms를 삭제해야합니다. 따라서 관리 코드는 작동하지만 SMS를 삭제할 수는 없습니다. 나는 BroadcastReceiver를 따르고있다 :BroadcastReceiver를 사용하여 들어오는 SMS를 삭제하는 방법은 무엇입니까?
public class SmsReceiver extends BroadcastReceiver {
private static final Uri SMS_INBOX_URI = Uri.parse("content://sms");
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
String body = "";
String number = "";
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
if (bundle != null) {
// ---retrieve the SMS message received---
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
body += msgs[i].getMessageBody().toString();
number +=msgs[i].getOriginatingAddress();
}
}
SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(context);
String key=prefs.getString(context.getString(R.string.acc_key_key), "");
if (body.trim().equals("#"+key)) {
sendGPSCoordinates(context, number);
} else if (body.trim().equals("?"+key)){
sendResponces(context);
}
deleteSms(body, number, context);
}
private void deleteSms(String body, String number, Context context) {
ContentResolver resolver=context.getContentResolver();
int count=resolver.delete(SMS_INBOX_URI, "body = ? AND address = ?", new String[]{body, number});
Log.e("count", String.valueOf(count));
/* Cursor results=resolver.query(SMS_INBOX_URI, null, null, null, null);
for (String str:results.getColumnNames()) {
Log.e("column", str);
}
}
나는 필요한 권한을 가진 AndroidManifest.xml을 가지고있다. 응용 프로그램은 SMS를 수신하고 인 텐트에서 SMS 데이터를 가져 와서 전화를 관리하며이 SMS를 삭제하려고 시도하지만 항상 카운트는 0과 같습니다. SMS /받은 편지함의 URI를 변경하려고 시도했지만 작동하지 않습니다 . 제발, 말해 봐요, 어떻게해야합니까? 고맙습니다. 이 쓰기 쿼리 후
안녕하세요. 새 메시지를 삭제 하시겠습니까? 이것은 메시지를 삭제하기 위해 번호와 본문 ID의 message.instand를 삭제하는 올바른 방법이 아닙니다. – kyogs