答:不会引发OnActivityResult

时间:2013-11-27 07:25:18

标签: android android-intent sms onactivityresult

我写这段代码来挑选短信。 我想打开转换列表,然后选择短信,以在textview控件上显示它。为了实现这个目标,我打算打开对话列表活动。会话列表已成功打开,但是当我选择短信时,不会发生任何操作。 当我跟踪我的应用程序时,我明白当我选择短信时,onActivityResult不会被提出但是当我回到我的应用程序时,这个方法被提出。 我知道我该怎么做才能解决这个问题?

此目标的拟议代码如下:

private static final int PICK_SMS_MESSAGE=1;
    private TextView tv;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Button b=(Button) findViewById(R.id.btnPickSMS);
        b.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {

                Uri uri=Uri.parse("content://mms-sms/conversations");
                Intent intent=new Intent(Intent.ACTION_GET_CONTENT);
                intent.addCategory(Intent.CATEGORY_LAUNCHER);
                intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
                //intent.setType("vnd.android-dir/mms-sms");
                intent.setDataAndType(uri,"vnd.android-dir/mms-sms" );
                Log.i("Log","Start");
                startActivityForResult(intent, PICK_SMS_MESSAGE);
            }
        });

    }
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        Log.i("Log","Point2");
        if(resultCode==RESULT_OK)
        {
            Log.i("Log","Point3");
            if(requestCode==PICK_SMS_MESSAGE)
            {
                //Uri smsUri=data.getData();
                //tv.setText();
                Bundle bundle=data.getExtras();
                Log.i("Log","Point4");
                if(bundle!=null)
                {
                    Object[] pdus=(Object[]) bundle.get("pdus");
                    for(Object o : pdus)
                    {
                        SmsMessage messages=SmsMessage.createFromPdu((byte[]) o);
                        tv.setText(messages.getDisplayMessageBody());
                        Log.i("Log","Point5");
                    }
                }
            }
        }
        //finish();
        super.onActivityResult(requestCode, resultCode, data);
    }

0 个答案:

没有答案