【问题标题】:How do I restore my information after using PendingIntent?使用 PendingIntent 后如何恢复我的信息?
【发布时间】:2011-11-13 01:45:12
【问题描述】:

我的 TextMessage 活动被传递了一个姓名和电话号码,然后继续允许用户键入文本消息,然后继续发送消息。

我的活动完成了它应该做的事情,但是,在发送消息后它再次调用我的 TextMessage 活动,但它不保留姓名和电话号码。

有什么办法可以做到吗?我知道我不能将“putExtra”用于pendingIntent,所以我不知道该怎么做。

此外,在这种情况下,我的取消按钮会崩溃,因为我从之前的 Intent 收到的姓名和电话号码现在为空。

我的代码:

public class TextMessage extends Activity {

    private Button cancel;
    private EditText message;
    private TextView nameInfo;
    private Button send;

    private String searchName;
    private String searchPhone;

    private SmsManager smsManager;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.message);

        cancel = (Button) findViewById(R.id.cancelmessage);
        send = (Button) findViewById(R.id.sendmessage);
        message = (EditText) findViewById(R.id.messagebodytext);
        nameInfo = (TextView) findViewById(R.id.messageuser);

        searchName = getIntent().getStringExtra("name");
        searchPhone = getIntent().getStringExtra("phonenumber");    

        nameInfo.setText(searchName + ": " + searchPhone);

        smsManager = SmsManager.getDefault();
        //final PendingIntent sentIntent = PendingIntent.getActivity(this, 0, new Intent(this, TextMessage.class), 0);
        Intent intent = new Intent(this, TextMessage.class);
        intent.putExtra("name", searchName);
        intent.putExtra("phonenumber", searchPhone);
        final PendingIntent sentIntent = PendingIntent.getActivity(this, 0, intent, 0);

        send.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                String messageBody = message.getText().toString();
                if (messageBody.length() > 0) {
                    smsManager.sendTextMessage(searchPhone, null, messageBody, sentIntent, null);
                    finish();
                }
            }
        });

        cancel.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(TextMessage.this, SMS.class);
                intent.putExtra("name", searchName);
                startActivity(intent);
                finish();
            }
        });
    }
}

【问题讨论】:

    标签: android


    【解决方案1】:

    而不是在待处理意图的构造函数中使用 this。您应该在外部创建它并将您的附加功能添加到该意图中。我认为这对于这种情况并不重要,但如果您有另一个具有相同信息的未决意图,则需要更新当前来覆盖额外内容。

     intent = new Intent(this, TextMessage.class);
     intent.putExtra("","");
     final PendingIntent sentIntent = PendingIntent.getActivity(this, 0, intent, 0);
    

    【讨论】:

    • 不幸的是,这对我不起作用。即使我在 PendingIntent 的意图中使用了 putExtra,它仍然将我的姓名和电话号码返回到屏幕。
    • 我希望这对我有意义,我不知道如何实现这些东西
    • 实际上我设置了一个 PendingIntent.FLAG_UPDATE_CURRENT 并且一切都开始工作了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    • 2019-12-30
    • 2015-07-31
    相关资源
    最近更新 更多