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