我想发送一条短信,并在不使用任何短信相关权限的情况下知道它是否已发送。
我已经尝试使用 Intent 并检查 Activity 结果,但这并不一致并且高度依赖于处理短信的应用程序。有时有效,有时无效。
我可以使用 READ_SMS 权限并使用 ContentObserver 来执行此操作,但我想知道是否可以在不需要用户任何与短信相关的权限的情况下执行此操作。
我的用例是这样的:
- 用户在我的应用中按下了一个按钮
- 默认短信应用程序打开时会显示我准备好的消息正文
- 用户根据自己的意愿编辑信息,然后发送短信(或不发送)
我只想知道他/她是否发送了消息。我不在乎它是否收到。我已经能够使用内容观察器做我想做的事,但这需要我使用 SMS_READ 权限。如果可能,我不想使用任何 SMS 相关权限。
最佳答案
抱歉,您想要的一般是不可能的。
ACTION_SEND
、ACTION_SENDTO
、ACTION_VIEW
等一开始就不是为 startActivityForResult()
设计的.没有应用程序必须为这些返回任何类型的结果。即使应用返回结果,该结果也不一定表明该人是否实际发送了 SMS,或者用户是否将 SMS 发送到您最初请求的地址。
除了通过您正在使用的受权限保护的 API 之外,任何 SMS 客户端都不需要以某种方式让第三方知道已发送的 SMS 消息。事实上,未经许可提供此信息将侵犯隐私。
如果您不想拥有与 SMS 相关的权限,那很好,但是您将不得不接受不知道用户是否实际发送了 SMS 的情况。
关于android - 如何在 Android 中没有 SMS_READ 或类似权限的情况下发送短信并接收结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33301511/