我有一些代码以编程方式删除Android SMS消息,但当我尝试在onReceive中删除它时,没有删除短信.
删除短信的示例代码
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());
}
Run Code Online (Sandbox Code Playgroud)
当我粘贴它时onReceived,新短信不会被删除.
您需要将权限添加到您的清单文件,并增加优先您的短信接收器类
<receiver android:name=".SMSReceiver" >
<intent-filter android:priority="1000">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
这是因为它会在任何操作系统级操作之前调用SMSReceiver,例如(保存短信,通知,短信声音等).
然后在SMSReceiver onReceive()中你需要添加abortBroadcast()来中止任何进一步的广播
public void onReceive(Context context, Intent intent) {
abortBroadcast();
}
Run Code Online (Sandbox Code Playgroud)
就这样
干杯
Ayush Shah
| 归档时间: |
|
| 查看次数: |
2978 次 |
| 最近记录: |