基于SMS的Android验证 - 发送后关闭SMS窗口

时间:2013-09-19 14:24:10

标签: android sms

我正在寻找一些有关开发应用内短信验证解决方案的快速反馈,这是我在Android应用注册过程中的一部分。我的团队中处理这个问题的人似乎遇到了麻烦。

免责声明:我自己不是开发人员,只具备基本的编码知识。

基本上应该发生的是:

  1. 用户输入电话号码

  2. 用户选择“通过短信验证号码”按钮

  3. 启动短信撰写窗口。消息字段已预先填充 验证码。收件人编号预先填充Twilio 电话号码已连接到我的服务器

  4. 用户点击发送后,SMS窗口应自动关闭 邮件成功发送后,将其返回到我的应用程序 注册过程,它将等待接收a 来自服务器的响应或间隔检查以查看它是否有 许可(即电话号码已经过验证)移动到下一个 注册阶段。

  5. 问题在于第4步,因为我的开发人员已经表示他没有与消息传递应用程序绑定的对象,所以他无法调用其上的函数...这就是我的编码知识不足的地方所以我想听听别人有没有(或者会有)解决这个问题。我确定它是可以解决的。

    谢谢!

2 个答案:

答案 0 :(得分:1)

请勿使用短信应用意图,只需在您的应用中发送

即可
PendingIntent pi = PendingIntent.getActivity(ccc, 0, new Intent(), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, pi, null);

答案 1 :(得分:1)

我遇到了同样的问题。你应该可以用这样的代码做你想做的事情(从下面的链接复制):

private void launchSMSActivity(final CharSequence phoneNumber) {
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setType("vnd.android-dir/mms-sms");
    smsIntent.setData(Uri.fromParts("sms", phoneNumber.toString(), null));
    smsIntent.putExtra("sms_body", mMessageWithPattern);
    smsIntent.putExtra("exit_on_sent", true);
    smsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivityForResult(smsIntent, SEND_SMS);
}

但是,4.3中显然存在一个错误,导致消息字段显示为空白。点击发送仍然会发送消息。错误在于:https://code.google.com/p/android/issues/detail?id=58153

鉴于此,您可以根据tyczj的答案选择从应用内发送,但请记住,这样做需要为您的应用添加短信权限。当用户获得权限确认对话框时,它将显示在顶部,并注明可能会花费他们的钱。许多恶意应用程序使用此权限来运行用户的电话费用,因此许多用户怀疑地看着它。

您也可以选择仅在4.3设备上的应用内发送短信,并使用上述代码在所有其他设备上按照您想要的方式进行操作。这不能解决权限问题,除非您发布两个APK - 一个用于未经许可的4.3之前的设备,另一个用于具有权限的4.3。最后一个选项就是我正在为自己的应用程序考虑的问题。