【发布时间】:2014-06-13 17:51:31
【问题描述】:
好的,我知道这是在 Android 4.4+ 中实现的安全/可用性功能,并在 SO 上多次解决。我遇到的问题是我不想创建短信应用程序。事实上,the only use of texting in my application is so that an outside admin can ping the phone with a text from a specific number, and have a simple "Running" message returned if the application is running. -注意,我能够检测到消息的接收以及发送消息,我只是无法从收件箱中删除消息。
将消息留在收件箱中没有功能问题,但一段时间后用户会感到烦恼,并且管理员似乎喜欢能够以后台类型的方式 ping 用户。长话短说,因为
int deletedRows = context.getContentResolver().delete(Uri.parse("content://sms/" + id), "date=?",
new String[] { c.getString(4) });
if(deletedRows > 0) Log.d(TAG, "Delete success...");
else Log.d(TAG, "Delete error...");
在我的日志中总是提示Delete error...,因为删除没有按预期工作,我需要想出一个新的处理方式。
我已阅读 SMS for KitKat、Getting SMS Apps Ready for KitKat 和 A Similar SO Question(已接受答案),但我似乎遗漏了一些东西。问题是我不想控制所有文本消息的接收、显示、发送和处理。我只是希望能够删除来自特定用户的特定消息。
因此,似乎最好的解决方案是将我的应用程序用作默认 SMS 应用程序,删除我需要的单个消息,并将所有其他消息转发到我的“本机”提供商 SMS 应用程序。我不完全知道如何做到这一点(我的 Uri/解析技能不是那么好),在我看来它会是这样的
Log.d(TAG, "Values to send: " + address + " / " + body);
ContentValues content = new ContentValues();
content.put("address", address);
content.put("body", body);
// continue for date, person, etc.
context.getContentResolver().insert(Uri.parse("content://sms/" + id), content);
但是,尽管我的日志显示了正确的值,但我从未收到过消息。我错过了什么(或者有更好的方法来解决这个问题)?
【问题讨论】:
-
你到底管理好了吗?我正在考虑自己做这件事....
-
我一直无法成功阻止邮件进入收件箱@TiGer
-
这正是我所处的场景。你有没有想出一些东西,或者他们只是学会了接受收件箱中的消息?我对我们的手机有更多的控制权,所以我可能只是写一个短信应用程序,将意图传递给我的主应用程序并吃掉消息,但我不想那样做。 (今天的议程:为 KitKat 找到一个开源 SMS 项目……)
-
@JamieB 对严重延迟的响应感到非常抱歉。不幸的是,我无法找到解决此问题的方法。至少可以说相当令人沮丧,但我希望你有更好的运气。
标签: android sms uri android-4.4-kitkat android-contentresolver