SmsMessage.createFromPdu is deprecated in android API level 23

后端 未结 3 1898
庸人自扰
庸人自扰 2021-01-06 04:12

I am trying to read received SMS using below code, it is working below API level 23, but in API level 23 createFromPdu method is deprecated. In google docs it h

3条回答
  •  余生分开走
    2021-01-06 04:42

    You can add something like this UPDATED 27/06/2016:

         private class SMSReceiver extends BroadcastReceiver {
                    private Bundle bundle;
                    private SmsMessage currentSMS;
                    private String message;
    
                    @Override
                    public void onReceive(Context context, Intent intent) {
    
                        if (intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) {
                            bundle = intent.getExtras();
                            if (bundle != null) {
                                Object[] pdu_Objects = (Object[]) bundle.get("pdus");
                                if (pdu_Objects != null) {
    
                                    for (Object aObject : pdu_Objects) {
    
                                        currentSMS = getIncomingMessage(aObject, bundle);
    
                                        String senderNo = currentSMS.getDisplayOriginatingAddress();
    
                                        message = currentSMS.getDisplayMessageBody();
                                        Toast.makeText(OtpActivity.this, "senderNum: " + senderNo + " :\n message: " + message, Toast.LENGTH_LONG).show();
                                    }
                                    this.abortBroadcast();
                                    // End of loop
                                }
                            }
                        } // bundle null
                    }
                }
    
            private SmsMessage getIncomingMessage(Object aObject, Bundle bundle) {
                SmsMessage currentSMS;
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                    String format = bundle.getString("format");
                    currentSMS = SmsMessage.createFromPdu((byte[]) aObject, format);
                } else {
                    currentSMS = SmsMessage.createFromPdu((byte[]) aObject);
                }
        return currentSMS;
    }
    

    older:

     Object [] pdus = (Object[]) myBundle.get("pdus");
    
        messages = new SmsMessage[pdus.length];
    
        for (int i = 0; i < messages.length; i++)
        {
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
                String format = myBundle.getString("format");
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i], format);
            }
            else {
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }
            strMessage += "SMS From: " + messages[i].getOriginatingAddress();
            strMessage += " : ";
            strMessage += messages[i].getMessageBody();
            strMessage += "\n";
        } 
    

提交回复
热议问题