java - SMS Retriever API - 如何以编程方式获取 SMS?
问题描述
我想在我的 android 项目中实现 sms OTP 接收器,它完全是在 java 而不是 kotlin 中。请任何人都可以帮助我使用java语言在android中做这件事吗?
我在我的 android 项目中尝试了 kotlin 代码,但我的 UI 功能基于 java 代码,请帮助我。
解决方案
尝试将其用于 Java
public class SmsBroadcastReceiver extends BroadcastReceiver {
public static final String SMS_BUNDLE = "pdus";
public void onReceive(Context context, Intent intent) {
Bundle intentExtras = intent.getExtras();
if (intentExtras != null) {
Object[] sms = (Object[]) intentExtras.get(SMS_BUNDLE);
String smsMessageStr = "";
for (int i = 0; i < sms.length; ++i) {
SmsMessage smsMessage = SmsMessage.createFromPdu((byte[]) sms[i]);
String smsBody = smsMessage.getMessageBody().toString();
String address = smsMessage.getOriginatingAddress();
smsMessageStr += "SMS From: " + address + "\n";
smsMessageStr += smsBody + "\n";
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show();
//this will update the UI with message
SmsActivity inst = SmsActivity.instance();
inst.updateList(smsMessageStr);
}
}
}
尝试对 Kotlin 使用类似的东西
class SmsBroadcastReceiver:BroadcastReceiver() {
fun onReceive(context:Context, intent:Intent) {
val intentExtras = intent.getExtras()
if (intentExtras != null)
{
val sms = intentExtras.get(SMS_BUNDLE) as Array<Any>
val smsMessageStr = ""
for (i in sms.indices)
{
val smsMessage = SmsMessage.createFromPdu(sms[i] as ByteArray)
val smsBody = smsMessage.getMessageBody().toString()
val address = smsMessage.getOriginatingAddress()
smsMessageStr += "SMS From: " + address + "\n"
smsMessageStr += smsBody + "\n"
}
Toast.makeText(context, smsMessageStr, Toast.LENGTH_SHORT).show()
//this will update the UI with message
val inst = SmsActivity.instance()
inst.updateList(smsMessageStr)
}
}
companion object {
val SMS_BUNDLE = "pdus"
}
}
推荐阅读
- javascript - 错误消息““index”参数应为数字,但它是数字”不清楚
- c# - UWP ICommand 参数始终为空
- git - “mega”-share 文件夹中的 git 存储库有错误“致命:坏对象 HEAD”。如何防止这种情况?
- azure - Azure Blob 服务公共访问级别自动从专用更改为 Blob
- python - Python 电话号码正则表达式
- c# - 使用 restsharp rest API 获取 magento2 类别
- mongodb - MongoDB计数查询很慢
- java - Changing persistence.xml to use PostgreSQL instead of MySQL
- reactjs - web.js 和 native.js 平台目标在 React Native Web 文件名中不起作用
- linux - 无法从 linux 机器获取 windows 机器的 snmp 值