如何在没有 SMS_READ 或 Android 中的类似权限的情况下发送短信并接收结果
Posted
技术标签:
【中文标题】如何在没有 SMS_READ 或 Android 中的类似权限的情况下发送短信并接收结果【英文标题】:How to send sms and receive the result without SMS_READ or similar permission in Android 【发布时间】:2015-10-23 11:44:39 【问题描述】:我想在不使用任何与短信相关的权限的情况下发送一条短信并知道它是否已发送。
我尝试过使用意图并检查活动结果,但这并不一致,并且高度依赖于处理短信的应用程序。有时有效,有时无效。
我可以通过 READ_SMS 权限并使用 ContentObserver 来执行此操作,但我想知道是否可以在不需要用户任何与短信相关的许可的情况下这样做。
我的用例会是这样的:
用户在我的应用中按下按钮 默认短信应用程序打开时显示我准备好的消息正文 用户编辑消息,如果他/她喜欢或不喜欢,然后发送短信(或不)我只想知道他/她是否发送了消息。我不在乎它是否收到。我已经能够使用内容观察器做我想做的事,但这需要我使用 SMS_READ 权限。如果可能,我不想使用任何与 SMS 相关的权限。
【问题讨论】:
当 Facebook 消息有效时,您想到了类似“阅读”通知之类的东西? 您需要编写自己的接收器来获取消息传递报告 @VVBBroadcastReceiver
使用权限。
是的,我知道,但没有它是不可能的
我编辑了问题以便澄清
【参考方案1】:
抱歉,您想要的通常是不可能的。
ACTION_SEND
、ACTION_SENDTO
、ACTION_VIEW
等最初不是为startActivityForResult()
设计的。没有应用程序必须为这些返回任何类型的结果。即使应用返回结果,该结果也不必指示此人是否实际发送了 SMS,或者用户是否将 SMS 发送到您最初请求的地址。
除了通过您使用的受权限保护的 API 之外,任何 SMS 客户端都不需要以某种方式让第三方知道已发送的 SMS 消息。事实上,在未经许可的情况下提供这些信息会侵犯隐私。
如果您不想拥有与 SMS 相关的权限,那很好,但您将不得不接受不知道用户是否实际发送了 SMS。
【讨论】:
以上是关于如何在没有 SMS_READ 或 Android 中的类似权限的情况下发送短信并接收结果的主要内容,如果未能解决你的问题,请参考以下文章
如何在没有 Facebook、Twitter 等的情况下将社交功能集成到 iOS 和/或 Android 应用程序中?