如何在没有 SMS_READ 或 Android 中的类似许可的情况下发送短信并接收结果
How to send sms and receive the result without SMS_READ or similar permission in Android
我想发送一条短信,并在不使用任何短信相关权限的情况下知道它是否已发送。
我已尝试使用意图并检查 activity 结果,但这并不一致并且高度依赖于处理短信的应用程序。有时有效有时无效。
我可以在获得 READ_SMS 许可并使用 ContentObserver 的情况下执行此操作,但我想知道是否可以在不需要用户提供任何与短信相关的许可的情况下执行此操作。
我的用例是这样的:
- 用户在我的应用程序中按下了一个按钮
- 默认短信应用程序打开时会显示我准备好的消息正文
- 用户编辑消息,如果he/she喜欢或不喜欢,然后发送短信(或不)
我只想知道he/she是否发送了消息。我不在乎它是否收到。我已经能够使用内容观察器做我想做的事,但这需要我使用 SMS_READ 许可。如果可能,我不想使用任何 SMS 相关权限。
抱歉,您想要的一般是不可能的。
ACTION_SEND
、ACTION_SENDTO
、ACTION_VIEW
等一开始就不是为 startActivityForResult()
设计的。没有应用程序必须 return 任何类型的结果。即使应用程序 return 是一个结果,该结果也不一定表明该人是否实际发送了短信,或者用户是否将短信发送到您最初请求的地址。
除了通过您正在使用的受权限保护的 API 之外,任何 SMS 客户端都不需要以某种方式让第三方知道已发送的 SMS 消息。事实上,未经许可提供此信息将侵犯隐私。
如果您不想拥有与短信相关的权限,那很好,但是您将不得不接受不知道用户是否真的发送了短信。
我想发送一条短信,并在不使用任何短信相关权限的情况下知道它是否已发送。
我已尝试使用意图并检查 activity 结果,但这并不一致并且高度依赖于处理短信的应用程序。有时有效有时无效。
我可以在获得 READ_SMS 许可并使用 ContentObserver 的情况下执行此操作,但我想知道是否可以在不需要用户提供任何与短信相关的许可的情况下执行此操作。
我的用例是这样的:
- 用户在我的应用程序中按下了一个按钮
- 默认短信应用程序打开时会显示我准备好的消息正文
- 用户编辑消息,如果he/she喜欢或不喜欢,然后发送短信(或不)
我只想知道he/she是否发送了消息。我不在乎它是否收到。我已经能够使用内容观察器做我想做的事,但这需要我使用 SMS_READ 许可。如果可能,我不想使用任何 SMS 相关权限。
抱歉,您想要的一般是不可能的。
ACTION_SEND
、ACTION_SENDTO
、ACTION_VIEW
等一开始就不是为 startActivityForResult()
设计的。没有应用程序必须 return 任何类型的结果。即使应用程序 return 是一个结果,该结果也不一定表明该人是否实际发送了短信,或者用户是否将短信发送到您最初请求的地址。
除了通过您正在使用的受权限保护的 API 之外,任何 SMS 客户端都不需要以某种方式让第三方知道已发送的 SMS 消息。事实上,未经许可提供此信息将侵犯隐私。
如果您不想拥有与短信相关的权限,那很好,但是您将不得不接受不知道用户是否真的发送了短信。