switch to alsa.omap3 module
[android_pandora.git] / apps / oi-filemanager / FileManagerDemo / src / org / openintents / filemanager / demo / Demo.java
CommitLineData
811a5a4a 1/*
2 * Copyright (C) 2008 OpenIntents.org
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package org.openintents.filemanager.demo;
18
19import java.io.File;
20
21import org.openintents.intents.FileManagerIntents;
22
23import android.app.Activity;
24import android.content.ActivityNotFoundException;
25import android.content.Intent;
26import android.database.Cursor;
27import android.net.Uri;
28import android.os.Bundle;
29import android.provider.MediaStore;
30import android.provider.MediaStore.Images;
31import android.view.View;
32import android.widget.EditText;
33import android.widget.TextView;
34import android.widget.Toast;
35
36public class Demo extends Activity {
37
38 protected static final int REQUEST_CODE_PICK_FILE_OR_DIRECTORY = 1;
39 protected static final int REQUEST_CODE_GET_CONTENT = 2;
40
41 protected EditText mEditText;
42 protected TextView mTextView;
43
44 /** Called when the activity is first created. */
45 @Override
46 public void onCreate(Bundle savedInstanceState) {
47 super.onCreate(savedInstanceState);
48 setContentView(R.layout.main);
49
50 mEditText = (EditText) findViewById(R.id.file_path);
51 mTextView = (TextView) findViewById(R.id.info);
52 }
53
54 public void onClickOpenFile(View view) {
55 openFile();
56 }
57
58 public void onClickSaveFile(View view) {
59 saveFile();
60 }
61
62 public void onClickPickDirectory(View view) {
63 pickDirectory();
64 }
65
66 public void onClickGetContent(View view) {
67 getContent();
68 }
69
70 public void onClickOpenUri(View view){
71 openFileUri();
72 }
73
74 /**
75 * Opens the file manager to select a file to open.
76 */
77 public void openFile() {
78 String fileName = mEditText.getText().toString();
79
80 Intent intent = new Intent(FileManagerIntents.ACTION_PICK_FILE);
81
82 // Construct URI from file name.
83 File file = new File(fileName);
84 intent.setData(Uri.fromFile(file));
85
86 // Set fancy title and button (optional)
87 intent.putExtra(FileManagerIntents.EXTRA_TITLE, getString(R.string.open_title));
88 intent.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, getString(R.string.open_button));
89
90 try {
91 startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
92 } catch (ActivityNotFoundException e) {
93 // No compatible file manager was found.
94 Toast.makeText(this, R.string.no_filemanager_installed,
95 Toast.LENGTH_SHORT).show();
96 }
97 }
98
99 /**
100 * Opens the file manager to select a location for saving a file.
101 */
102 private void saveFile() {
103 String fileName = mEditText.getText().toString();
104
105 Intent intent = new Intent(FileManagerIntents.ACTION_PICK_FILE);
106
107 // Construct URI from file name.
108 File file = new File(fileName);
109 intent.setData(Uri.fromFile(file));
110
111 // Set fancy title and button (optional)
112 intent.putExtra(FileManagerIntents.EXTRA_TITLE, getString(R.string.save_title));
113 intent.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, getString(R.string.save_button));
114
115 try {
116 startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
117 } catch (ActivityNotFoundException e) {
118 // No compatible file manager was found.
119 Toast.makeText(this, R.string.no_filemanager_installed,
120 Toast.LENGTH_SHORT).show();
121 }
122 }
123
124 /**
125 * Opens the file manager to pick a directory.
126 */
127 private void pickDirectory() {
128 String fileName = mEditText.getText().toString();
129
130 // Note the different intent: PICK_DIRECTORY
131 Intent intent = new Intent(FileManagerIntents.ACTION_PICK_DIRECTORY);
132
133 // Construct URI from file name.
134 File file = new File(fileName);
135 intent.setData(Uri.fromFile(file));
136
137 // Set fancy title and button (optional)
138 intent.putExtra(FileManagerIntents.EXTRA_TITLE, getString(R.string.pick_directory_title));
139 intent.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, getString(R.string.pick_directory_button));
140
141 try {
142 startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
143 } catch (ActivityNotFoundException e) {
144 // No compatible file manager was found.
145 Toast.makeText(this, R.string.no_filemanager_installed,
146 Toast.LENGTH_SHORT).show();
147 }
148 }
149
150 /**
151 * Use GET_CONTENT to open a file.
152 */
153 public void getContent() {
154
155 Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
156 intent.setType("*/*");
157 intent.addCategory(Intent.CATEGORY_OPENABLE);
158
159 try {
160 startActivityForResult(intent, REQUEST_CODE_GET_CONTENT);
161 } catch (ActivityNotFoundException e) {
162 // No compatible file manager was found.
163 Toast.makeText(this, R.string.no_filemanager_installed,
164 Toast.LENGTH_SHORT).show();
165 }
166 }
167
168 /**
169 * Use URI to get a file
170 */
171 public void openFileUri(){
172 String filePath = mEditText.getText().toString();
173 Uri uri = Uri.parse("file://" + filePath);
174
175 Intent intent = new Intent(Intent.ACTION_VIEW);
176 intent.setData(uri);
177
178 // optionally:
179 //intent.setPackage("org.openintents.filemanager");
180
181 try {
182 startActivity(intent);
183 } catch (ActivityNotFoundException e) {
184 // No compatible file manager was found.
185 Toast.makeText(this, R.string.no_filemanager_installed,
186 Toast.LENGTH_SHORT).show();
187 }
188 }
189
190 /**
191 * This is called after the file manager finished.
192 */
193 @Override
194 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
195 super.onActivityResult(requestCode, resultCode, data);
196
197 mTextView.setText("");
198
199 switch (requestCode) {
200 case REQUEST_CODE_PICK_FILE_OR_DIRECTORY:
201 if (resultCode == RESULT_OK && data != null) {
202 // obtain the filename
203 Uri fileUri = data.getData();
204 if (fileUri != null) {
205 String filePath = fileUri.getPath();
206 if (filePath != null) {
207 mEditText.setText(filePath);
208 }
209 }
210 }
211 break;
212 case REQUEST_CODE_GET_CONTENT:
213 if (resultCode == RESULT_OK && data != null) {
214 String filePath = null;
215 long fileSize = 0;
216 String displayName = null;
217 Uri uri = data.getData();
218 Cursor c = getContentResolver().query(uri, new String[] {MediaStore.MediaColumns.DATA,
219 MediaStore.MediaColumns.MIME_TYPE,
220 MediaStore.MediaColumns.DISPLAY_NAME,
221 MediaStore.MediaColumns.SIZE
222 }, null, null, null);
223 if (c != null && c.moveToFirst()) {
224 int id = c.getColumnIndex(Images.Media.DATA);
225 if (id != -1) {
226 filePath = c.getString(id);
227 }
228 displayName = c.getString(2);
229 fileSize = c.getLong(3);
230 }
231 if (filePath != null) {
232 mEditText.setText(filePath);
233 String strFileSize = getString(R.string.get_content_info,
234 displayName, "" + fileSize);
235 mTextView.setText(strFileSize);
236 }
237 }
238 }
239 }
240}