如何使用SMS Intent关闭默认的短信应用程序以及如何获取发送成功消息的回调。(新策略更改替代)

时间:2019-01-31 08:13:54

标签: android authentication android-intent sms

根据新的Google许可限制https://support.google.com/googleplay/android-developer/answer/9047303#alternatives,我正在使用SMS目的发送短信以验证用户的电话号码。但是问题是我无法关闭消息传递应用程序,也无法获得短信发送状态的任何回调。(即使从消息应用程序按回也总是返回相同的resultCode)

我尝试过关闭应用程序,但无法正常工作。

smsIntent.putExtra(“ exit_on_sent”,true);

并且也遵循此答案Sending SMS via an Intent and know if the SMS has been sent or not,但同样需要READ_SMS权限。

对此没有适当的解决方案。

请建议我如何实现此解决方案或任何其他替代解决方案。 我的应用程序需要通过SMS发送短信才能进行帐户验证。

1 个答案:

答案 0 :(得分:1)

自从Google针对发送和接收短信的新政策以来,我的应用程序也遇到了类似的问题

不幸的是,许多SMS应用程序不支持exit_on_sent。无论是否发送了短信,使用startActivityForResult打开SMS默认应用都不会返回不同的值

最好的解决方案是在互联网上使用提供API来发送SMS的第三方服务(但它可能不是免费的)

我也尝试按照Sending SMS via an Intent and know if the SMS has been sent or not中所述注册SMS内容查看器 =>根据我的经验,即使未授予READ_SMS权限,也会引发onChange事件(在崩溃的小米上除外;-),但是发送的SMS信息很少(您甚至都不知道是否短信已发送或接收)

然后,您可以使用2个选项来自动读取SMS: -使用Google的SMS检索器API(请参见https://developers.google.com/identity/sms-retriever/) -对于API 26及更高版本,请使用SmsManager.createAppSpecificSmsToken(请参见android sms verification without READ_SMS permission