【发布时间】:2012-01-26 16:54:44
【问题描述】:
我想在我的 Android 应用程序中自动删除某些 SMS。因此,我有一种方法可以完全按照我的意愿去做。但是,只有当我将应用程序从 Eclipse 直接部署到我的手机时,它才有效。然后它会删除传入的短信。但是,如果应用程序是从市场上下载的,它就不起作用。但也没有错误。有谁知道我该如何解决这个问题,或者这只适用于有根设备?
public void deleteSMS(Context context, String message, String number) {
try {
mLogger.logInfo("Deleting SMS from inbox");
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = context.getContentResolver().query(uriSms,
new String[] { "_id", "thread_id", "address",
"person", "date", "body" }, null, null, null);
if (c != null && c.moveToFirst()) {
do {
long id = c.getLong(0);
long threadId = c.getLong(1);
String address = c.getString(2);
String body = c.getString(5);
if (message.equals(body) && address.equals(number)) {
mLogger.logInfo("Deleting SMS with id: " + threadId);
context.getContentResolver().delete(
Uri.parse("content://sms/" + id), null, null);
}
} while (c.moveToNext());
}
} catch (Exception e) {
mLogger.logError("Could not delete SMS from inbox: " + e.getMessage());
}
}
【问题讨论】:
-
@Marclin 两个问题都不同。在这个问题中,如果 SMS 直接从 Eclipse 部署而不是从 Markrt 位置部署,则将被删除
-
@SunilKumarSahoo:你是对的。该代码完美运行,但前提是设备连接到 PC,而不是从市场上下载,我试图理解为什么?
-
记得在完成后关闭光标。
-
@Florian - 如您所述,您能否通过添加
Handler来更新您的答案。我会非常感谢你。