如何从intent获取所有额外值

San*_*ndo 2 android

这是我的代码

     Log.i("sdfgsdf", time.toGMTString());
        String SENT = "SMS_SENT";
        Intent y=  new Intent(SENT);
        y.putExtra("number", phoneNumber);
        y.putExtra("time", time.toString());

        String DELIVERED = "SMS_DELIVERED";
        int FLAG_UPDATE_CURRENT =(0x08000000) ;
        PendingIntent sentPI = PendingIntent.getBroadcast(this, 0,
        y, FLAG_UPDATE_CURRENT);

        PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0,
        new Intent(DELIVERED), FLAG_UPDATE_CURRENT);

        //---when the SMS has been sent---
        r=  new BroadcastReceiver(){
            @Override
             public void onReceive(Context arg0, Intent arg1) {

                switch (getResultCode())
                {

                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS sent"+arg1.getStringExtra("number"), 
                                Toast.LENGTH_SHORT).show();
                        Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null);
                        Constant.DB.execSQL("UPDATE Message SET IsMsgSent='true' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'");
                        Constant.DB.execSQL("UPDATE Message SET FolderId='5' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'");
                        Constant.DB.close();
                      //  unregisterReceiver(r);
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Toast.makeText(getBaseContext(), "Generic failure"+arg1.getStringExtra("number"), 
                                Toast.LENGTH_SHORT).show();
                        Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null);
                        Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'");
                        Constant.DB.close();
                       // unregisterReceiver(r);
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "No service"+arg1.getStringExtra("number"), 
                                Toast.LENGTH_SHORT).show();
                        Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null);
                        Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'");
                        Constant.DB.close();
                       // unregisterReceiver(r);
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Toast.makeText(getBaseContext(), "Null PDU"+arg1.getStringExtra("number"), 
                                Toast.LENGTH_SHORT).show();
                        Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null);
                        Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'");
                        Constant.DB.close();
                      //  unregisterReceiver(r);
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Toast.makeText(getBaseContext(), "Radio off"+arg1.getStringExtra("number"), 
                        Toast.LENGTH_SHORT).show();
                        Constant.DB = Compose.this.openOrCreateDatabase("Indigo",MODE_PRIVATE, null);
                        Constant.DB.execSQL("UPDATE Message SET IsMsgSent='false' where DateAndTime='" + arg1.getStringExtra("time") + "' and ContactNumber='"+arg1.getStringExtra("number")+"'");
                        Constant.DB.close();
                      //  unregisterReceiver(r);
                        break;
                }

            }

        };
        registerReceiver(r, new IntentFilter(SENT));

        //---when the SMS has been delivered---
        registerReceiver(new BroadcastReceiver(){
            @Override
            public void onReceive(Context arg0, Intent arg1) {
                switch (getResultCode())
                {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS delivered", 
                                Toast.LENGTH_SHORT).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS not delivered", 
                                Toast.LENGTH_SHORT).show();
                        break;                        
                }
            }
        }, new IntentFilter(DELIVERED));        

        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);        
Run Code Online (Sandbox Code Playgroud)

当我使用for循环发送多个短信时,我只获得了最后发送的sms.how的额外内容以获得所有额外内容..?

Alp*_*nel 11

这应该得到所有的价值

Bundle bundle = intent.getExtras();

for (String key : bundle.keySet()) {
    Object value = bundle.get(key);
    Log.d(TAG, String.format("%s %s (%s)", key,  
    value.toString(), value.getClass().getName()));
}
Run Code Online (Sandbox Code Playgroud)


Pir*_*aba 9

调用意图的地方就是这样做的

    Bundle bundle = new Bundle();
bundle.putString("RetailerName", keyword);
bundle.putString("positon", aString);
intent.putExtras(bundle);
Run Code Online (Sandbox Code Playgroud)

接收意图的地方得到这样的数据

  Bundle bundle = this.getIntent().getExtras();
  String RetailerName = bundle.getString("retailerName");
Run Code Online (Sandbox Code Playgroud)