flutter - 如何在颤动中读取传入的短信
问题描述
我想阅读短信并获取验证码并自动进行身份验证。
我找到了这个包并尝试了它的示例代码。它似乎不起作用。我还有其他方法可以做到这一点吗?或者也许我用错了。这是代码:
String _verificationCode;
SmsReceiver _smsReceiver;
@override
void initState() {
super.initState();
if (Platform.isAndroid) WebView.platform = SurfaceAndroidWebView();
_smsReceiver = SmsReceiver(onSmsReceived);
}
void onSmsReceived(String message) =>
setState(() => _verificationCode = message.split(" ").elementAt(2));
void _startListening() => _smsReceiver.startListening();
.
.
.
} else if (url.toLowerCase().contains('verify')) {
if (_verificationCode == null) {
_startListening();
}
这与文档中的代码几乎相同。
解决方案
我在使用颤振包时也遇到了同样的问题,用于收听传入的消息,但对我没有任何帮助。
因此,我在 android 中创建了一个 BroadCastReceiver,并在自定义平台特定代码的帮助下将其与颤振连接起来。
广播接收器
public class MyMsgReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(SMS_RECEIVED_ACTION.equals
("android.provider.Telephony.SMS_RECEIVED")){
for (SmsMessage smsMessage : Telephony.Sms.Intents.getMessagesFromIntent(intent))
{
msg = smsMessage.getMessageBody();
user = smsMessage.getDisplayOriginatingAddress();
}
}
}
};
将此接收器添加到清单文件(app/src/main/AndroidManifest.xml)
<receiver
android:name=".MyMsgReceiver"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
添加权限到 app/src/debug/AndroidManifest.xml
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
希望这个方法对某人有帮助!!!
推荐阅读
- r - cph 后 R rms 包中的受限三次样条输出
- python - Azure Function App Python 在一段时间后终止
- amazon-web-services - k8s-ingress 使用 https 保护应用程序
- ios - 检索到的数据没有附加到我的数组 swift4 中
- c++ - 从文本文件调用函数
- javascript - 上传视频文件之前通过 JavaScript 进行视频长度
- javascript - 将 css 过渡应用于元素的宽度,使其覆盖其容器 div [ReactJS] 的 100% 宽度
- javascript - 在输入文件类型中选择文件时如何触发按钮单击事件?
- ios - 如何将 ODR(按需资源)上传到 Apple 的 AppStore?
- reactjs - redux-saga 中的错误:(0,redux Saga.createSagaMiddleWare) 不是函数