0

OTP の自動検証に取り組んでいます。lollipop より前のバージョンでは問題なく動作していますが、5.0 以降では動作しません。チュートリアルのコードを試してみました。コードは次のとおりです。

着信SMS.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以降のデバイスで機能しないのはなぜですか?

4

2 に答える 2

0

このコードのみを変更してください:-

SmsMessage currentMessage = SmsMessage.createFromPdu((byte[])pdusObj[i]);
于 2016-02-05T05:57:43.887 に答える
0

以下を使用できます。

SmsMessage[] messages = Telephony.Sms.Intents.getMessagesFromIntent(intent);
于 2020-09-15T13:47:27.680 に答える