【问题标题】:How to read SMS code from your android App如何从您的 android 应用程序中读取 SMS 代码
【发布时间】:2016-06-10 04:15:54
【问题描述】:

我们希望在我们的应用程序中构建功能,以读取作为 SMS 的一部分发送并显示在 textView 上的安全代码。 此外,我不打算构建广播接收器,它可能是一个意图服务,它只会在特定屏幕上开始运行并在用户导航到另一个屏幕时终止该服务。

如果有人能遮蔽一些光线并帮助提供一些示例代码,那就太好了。

【问题讨论】:

标签: android android-intentservice


【解决方案1】:

要阅读收到的短信,您必须做三件事。

  1. 广播接收器
  2. 在清单中声明广播接收器
  3. 需要短信接收权限

注意:如果您是针对 6.0 Marshmallow 进行编译,您在运行时会得到 android.permission.RECEIVE_SMSRuntime Permissions

让我们开始接收传入的短信

1) 首先在manifest中添加权限

<uses-permission android:name="android.permission.RECEIVE_SMS" />

2) 在 Manifest 中声明广播接收器。

当设备接收到新的 SMS 时,此声明会通知您。

<receiver android:name="com.example.abc.ReciveSMS">
    <intent-filter>
        <action android:name="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

3) 将此代码添加到清单中声明的​​类中

public class ReciveSMS extends BroadcastReceiver{

    private SharedPreferences preferences;

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub

        if(intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")){
            Bundle bundle = intent.getExtras();           //---get the SMS message passed in---
            SmsMessage[] msgs = null;
            String msg_from;
            if (bundle != null){
                //---retrieve the SMS message received---
                try{
                    Object[] pdus = (Object[]) bundle.get("pdus");
                    msgs = new SmsMessage[pdus.length];
                    for(int i=0; i<msgs.length; i++){
                        msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);
                        msg_from = msgs[i].getOriginatingAddress();
                        String msgBody = msgs[i].getMessageBody();
                    }
                }catch(Exception e){
//                            Log.d("Exception caught",e.getMessage());
                }
            }
        }
    }
}

Original Post here.

【讨论】:

  • Sohail 感谢您回答我的问题。我的问题是关于广播接收器的。我想在这里运行一个后台服务,因为该服务应该仅在用户位于特定屏幕上时才启动,然后需要终止该服务。广播接收器是长时间运行的后台任务
  • 好的没问题你也可以为特定屏幕注册一个接收器当你跳到那个屏幕时它会收到短信当你从那个屏幕跳出来你什么时候不会收到短信...这适合你吗?
  • 我的手机里有 2 个模拟人生!是否可以检查哪个 sim 正在接收消息?
猜你喜欢
  • 1970-01-01
  • 2012-04-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-03
  • 1970-01-01
  • 1970-01-01
  • 2013-07-03
相关资源
最近更新 更多