【问题标题】:Automatic OTP verification lollipop自动 OTP 验证棒棒糖
【发布时间】:2016-02-05 05:52:26
【问题描述】:

我正在努力自动验证 OTP。 在低于棒棒糖的版本中,它运行良好 但在 5.0 及以上版本中不起作用 我尝试了教程中的代码。 代码如下:

IncomingSMS.java

  public class IncomingSms extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent)
    {

        final Bundle bundle = intent.getExtras();
        try {
            if (bundle != null)
            {
                final Object[] pdusObj = (Object[]) bundle.get("pdus");
                for (int i = 0; i < pdusObj .length; i++)
                {
                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[])                                                                                                    pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber ;
                    String message = currentMessage .getDisplayMessageBody();
                    try
                    {
                        if (senderNum .equals("+917760882587"))
                        {
                            MainActivity Sms = new MainActivity();
                            Sms.recivedSms(message );
                        }
                    }
                    catch(Exception e){}

                }
            }

        } catch (Exception e)
        {

        }
    }

}

MainActivity.java

    public class MainActivity extends AppCompatActivity {

    static EditText OtpNumber;
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        OtpNumber= (EditText) findViewById(R.id.editText);
    }
    public void recivedSms(String message)
    {
        try
        {
            OtpNumber.setText(message);
        }
        catch (Exception e)
        {
        }
    }

}

谁能帮忙,为什么它不适用于棒棒糖及以上设备?

【问题讨论】:

  • "但是在低于lollipop 的版本中,无法使用。", "...为什么lollipop 及以上的设备无法使用?" - 哪些版本不工作?
  • @MikeM。抱歉,我更新了我的问题。它不适用于 5.0 及更高版本.. 低于 5.0 的工作正常
  • 你的targetSdkVersion是什么?
  • @MikeM。目标dkversion 为 22
  • 好的,那可能不是权限问题。你说它在 Lollipop 及更高版本中不起作用。究竟是什么不工作? onReceive() 方法是否正在运行?只是不更新​​MainActivity吗?因为MainActivity Sms = new MainActivity(); Sms.recivedSms(message ); 不应该适用于任何版本

标签: android android-layout android-activity android-broadcastreceiver


【解决方案1】:

仅更改此代码:-

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[])pdusObj[i]);

【讨论】:

  • 它没有用.. 我有 moto X 玩 android 6.0
【解决方案2】:

你可以使用:

SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-12-15
    • 2015-08-12
    • 2016-10-09
    • 1970-01-01
    • 2015-05-22
    • 2020-04-16
    • 2015-02-21
    • 1970-01-01
    相关资源
    最近更新 更多