152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/*
252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project
352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * you may not use this file except in compliance with the License.
652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * You may obtain a copy of the License at
752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project *
1052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
1152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
1252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * See the License for the specific language governing permissions and
1452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * limitations under the License.
1552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */
1652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
1752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpackage com.example.android.apis.app;
1852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
1952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project// Need the following import to get access to the app resources, since this
2052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project// class is in a sub-package.
2152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport com.example.android.apis.R;
2252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
2352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.app.Activity;
2452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.content.Intent;
2552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.text.Editable;
2652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.os.Bundle;
2752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.View;
2852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.view.View.OnClickListener;
2952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.Button;
3052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectimport android.widget.TextView;
3152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project/**
3352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * Shows how an activity can send data to its launching activity when done.y.
3452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project * <p>This can be used, for example, to implement a dialog alowing the user to
3552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpick an e-mail address or image -- the picking activity sends the selected
3652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectdata back to the originating activity when done.</p>
3752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
3852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project<p>The example here is composed of two activities: ReceiveResult launches
3952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectthe picking activity and receives its results; SendResult allows the user
4052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectto pick something and sends the selection back to its caller.  Implementing
4152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectthis functionality involves the
4252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project{@link android.app.Activity#setResult setResult()} method for sending a
4352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectresult and
4452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project{@link android.app.Activity#onActivityResult onActivityResult()} to
4552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectreceive it.</p>
4652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
4752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project<h4>Demo</h4>
4852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source ProjectApp/Activity/Receive Result
4952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
5052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project<h4>Source files</h4>
5152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project<table class="LinkTable">
5252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        <tr>
5352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="LinkColumn">src/com.example.android.apis/app/ReceiveResult.java</td>
5452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="DescrColumn">Launches pick activity and receives its result</td>
5552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        </tr>
5652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        <tr>
5752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="LinkColumn">src/com.example.android.apis/app/SendResult.java</td>
5852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="DescrColumn">Allows user to pick an option and sends it back to its caller</td>
5952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        </tr>
6052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        <tr>
6152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="LinkColumn">/res/any/layout/receive_result.xml</td>
6252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="DescrColumn">Defines contents of the ReceiveResult screen</td>
6352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        </tr>
6452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        <tr>
6552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="LinkColumn">/res/any/layout/send_result.xml</td>
6652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            <td class="DescrColumn">Defines contents of the SendResult screen</td>
6752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        </tr>
6852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project</table>
6952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
7052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project */
7152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Projectpublic class ReceiveResult extends Activity {
7252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    /**
7352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * Initialization of the Activity after it is first created.  Must at least
7452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * call {@link android.app.Activity#setContentView setContentView()} to
7552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * describe what is to be displayed in the screen.
7652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     */
7752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    @Override
7852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project	protected void onCreate(Bundle savedInstanceState) {
7952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Be sure to call the super class.
8052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        super.onCreate(savedInstanceState);
8152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
8252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // See assets/res/any/layout/hello_world.xml for this
8352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // view layout definition, which is being set here as
8452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // the content of our screen.
8552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        setContentView(R.layout.receive_result);
8652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
8752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Retrieve the TextView widget that will display results.
8852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        mResults = (TextView)findViewById(R.id.results);
8952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
9052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // This allows us to later extend the text buffer.
9152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        mResults.setText(mResults.getText(), TextView.BufferType.EDITABLE);
9252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
9352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // Watch for button clicks.
9452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        Button getButton = (Button)findViewById(R.id.get);
9552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        getButton.setOnClickListener(mGetListener);
9652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
9752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
9852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    /**
9952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * This method is called when the sending activity has finished, with the
10052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * result it supplied.
10152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     *
10252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * @param requestCode The original request code as given to
10352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     *                    startActivity().
10452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * @param resultCode From sending activity as per setResult().
10552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     * @param data From sending activity as per setResult().
10652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project     */
10752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    @Override
10852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project	protected void onActivityResult(int requestCode, int resultCode,
10952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project		Intent data) {
11052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // You can use the requestCode to select between multiple child
11152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // activities you may have started.  Here there is only one thing
11252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        // we launch.
11352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        if (requestCode == GET_CODE) {
11452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
11552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // We will be adding to our text.
11652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            Editable text = (Editable)mResults.getText();
11752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
11852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // This is a standard resultCode that is sent back if the
11952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // activity doesn't supply an explicit result.  It will also
12052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // be returned if the activity failed to launch.
12152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            if (resultCode == RESULT_CANCELED) {
12252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                text.append("(cancelled)");
12352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
12452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // Our protocol with the sending activity is that it will send
12552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // text in 'data' as its result.
12652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            } else {
12752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                text.append("(okay ");
12852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                text.append(Integer.toString(resultCode));
12952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                text.append(") ");
13052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                if (data != null) {
13152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                    text.append(data.getAction());
13252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project                }
13352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            }
13452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
13552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            text.append("\n");
13652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        }
13752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    }
13852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
13952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    // Definition of the one requestCode we use for receiving resuls.
14052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    static final private int GET_CODE = 0;
14152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
14252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    private OnClickListener mGetListener = new OnClickListener() {
14352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        public void onClick(View v) {
14452d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // Start the activity whose result we want to retrieve.  The
14552d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            // result will come back with request code GET_CODE.
14652d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            Intent intent = new Intent(ReceiveResult.this, SendResult.class);
14752d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project            startActivityForResult(intent, GET_CODE);
14852d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project        }
14952d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    };
15052d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
15152d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project    private TextView mResults;
15252d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project}
15352d4c30ca52320ec92d1d1ddc8db3f07f69c4f98The Android Open Source Project
154