0

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

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

基本上应该发生的是:

  1. 用户输入电话号码

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

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

  4. 一旦用户点击发送,一旦消息成功发送,SMS 窗口应该自动关闭,将它们返回到我的应用程序的注册过程中,它将等待接收来自服务器的响应或每隔一段时间检查它是否有权限(即电话号码已验证)以进入下一阶段的注册。

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

谢谢!

4

2 回答 2

1

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

PendingIntent pi = PendingIntent.getActivity(ccc, 0, new Intent(), 0);
SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(phoneNumber, null, message, pi, null);
于 2013-09-19T14:28:50.193 回答
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 的回答从应用内发送,但请记住,这样做需要向您的应用添加 SMS 权限。当用户获得权限确认对话框时,它会出现在顶部,并通知他们可能会花钱。许多恶意应用程序已使用此权限来增加用户的电话费,因此许多用户对此表示怀疑。

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

于 2013-09-19T15:13:34.213 回答