我一直在開發可以使用SMS命令管理設備的應用程序;該應用程序必須執行來自SMS的命令並刪除該Sms。所以,管理作品的代碼,但我無法刪除短信。我有以下的BroadcastReceiver:如何使用BroadcastReceiver刪除傳入的短信?
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具有所需的權限。應用程序收到短信,從意圖獲取短信數據,管理手機,並試圖刪除此短信,但它總是返回計數是等於0.我試圖更改短信/收件箱的URI,但它不起作用。請告訴我,我該怎麼做?謝謝。
你好。你想要什麼?刪除新的傳入消息?這不是你正確的方法來刪除message.instand的號碼和身體使用Id來刪除消息。 – kyogs