add OI File Manager and AndroidSupportV2 used by it
[android_pandora.git] / apps / oi-filemanager / FileManagerDemo / src / org / openintents / filemanager / demo / Demo.java
diff --git a/apps/oi-filemanager/FileManagerDemo/src/org/openintents/filemanager/demo/Demo.java b/apps/oi-filemanager/FileManagerDemo/src/org/openintents/filemanager/demo/Demo.java
new file mode 100644 (file)
index 0000000..fa89e06
--- /dev/null
@@ -0,0 +1,240 @@
+/* 
+ * Copyright (C) 2008 OpenIntents.org
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.openintents.filemanager.demo;
+
+import java.io.File;
+
+import org.openintents.intents.FileManagerIntents;
+
+import android.app.Activity;
+import android.content.ActivityNotFoundException;
+import android.content.Intent;
+import android.database.Cursor;
+import android.net.Uri;
+import android.os.Bundle;
+import android.provider.MediaStore;
+import android.provider.MediaStore.Images;
+import android.view.View;
+import android.widget.EditText;
+import android.widget.TextView;
+import android.widget.Toast;
+
+public class Demo extends Activity {
+       
+       protected static final int REQUEST_CODE_PICK_FILE_OR_DIRECTORY = 1;
+       protected static final int REQUEST_CODE_GET_CONTENT = 2;
+
+       protected EditText mEditText;
+       protected TextView mTextView;
+       
+    /** Called when the activity is first created. */
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setContentView(R.layout.main);
+        
+        mEditText = (EditText) findViewById(R.id.file_path);
+        mTextView = (TextView) findViewById(R.id.info);
+    }
+
+       public void onClickOpenFile(View view) {
+               openFile();
+       }
+       
+       public void onClickSaveFile(View view) {
+               saveFile();
+       }
+       
+       public void onClickPickDirectory(View view) {
+               pickDirectory();
+       }
+
+       public void onClickGetContent(View view) {
+               getContent();
+       }
+       
+       public void onClickOpenUri(View view){
+               openFileUri();
+       }
+       
+    /**
+     * Opens the file manager to select a file to open.
+     */
+    public void openFile() {
+               String fileName = mEditText.getText().toString();
+               
+               Intent intent = new Intent(FileManagerIntents.ACTION_PICK_FILE);
+               
+               // Construct URI from file name.
+               File file = new File(fileName);
+               intent.setData(Uri.fromFile(file));
+               
+               // Set fancy title and button (optional)
+               intent.putExtra(FileManagerIntents.EXTRA_TITLE, getString(R.string.open_title));
+               intent.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, getString(R.string.open_button));
+               
+               try {
+                       startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
+               } catch (ActivityNotFoundException e) {
+                       // No compatible file manager was found.
+                       Toast.makeText(this, R.string.no_filemanager_installed, 
+                                       Toast.LENGTH_SHORT).show();
+               }
+       }
+
+    /**
+     * Opens the file manager to select a location for saving a file.
+     */
+    private void saveFile() {
+               String fileName = mEditText.getText().toString();
+               
+               Intent intent = new Intent(FileManagerIntents.ACTION_PICK_FILE);
+               
+               // Construct URI from file name.
+               File file = new File(fileName);
+               intent.setData(Uri.fromFile(file));
+               
+               // Set fancy title and button (optional)
+               intent.putExtra(FileManagerIntents.EXTRA_TITLE, getString(R.string.save_title));
+               intent.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, getString(R.string.save_button));
+               
+               try {
+                       startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
+               } catch (ActivityNotFoundException e) {
+                       // No compatible file manager was found.
+                       Toast.makeText(this, R.string.no_filemanager_installed, 
+                                       Toast.LENGTH_SHORT).show();
+               }
+       }
+
+    /**
+     * Opens the file manager to pick a directory.
+     */
+    private void pickDirectory() {
+               String fileName = mEditText.getText().toString();
+               
+               // Note the different intent: PICK_DIRECTORY
+               Intent intent = new Intent(FileManagerIntents.ACTION_PICK_DIRECTORY);
+               
+               // Construct URI from file name.
+               File file = new File(fileName);
+               intent.setData(Uri.fromFile(file));
+               
+               // Set fancy title and button (optional)
+               intent.putExtra(FileManagerIntents.EXTRA_TITLE, getString(R.string.pick_directory_title));
+               intent.putExtra(FileManagerIntents.EXTRA_BUTTON_TEXT, getString(R.string.pick_directory_button));
+               
+               try {
+                       startActivityForResult(intent, REQUEST_CODE_PICK_FILE_OR_DIRECTORY);
+               } catch (ActivityNotFoundException e) {
+                       // No compatible file manager was found.
+                       Toast.makeText(this, R.string.no_filemanager_installed, 
+                                       Toast.LENGTH_SHORT).show();
+               }
+       }
+
+    /**
+     * Use GET_CONTENT to open a file.
+     */
+    public void getContent() {
+               
+               Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
+               intent.setType("*/*");
+               intent.addCategory(Intent.CATEGORY_OPENABLE);
+               
+               try {
+                       startActivityForResult(intent, REQUEST_CODE_GET_CONTENT);
+               } catch (ActivityNotFoundException e) {
+                       // No compatible file manager was found.
+                       Toast.makeText(this, R.string.no_filemanager_installed, 
+                                       Toast.LENGTH_SHORT).show();
+               }
+    }
+    
+    /**
+     * Use URI to get a file
+     */
+    public void openFileUri(){
+       String filePath = mEditText.getText().toString();
+       Uri uri = Uri.parse("file://" + filePath);
+
+               Intent intent = new Intent(Intent.ACTION_VIEW);
+               intent.setData(uri);
+               
+               // optionally:
+               //intent.setPackage("org.openintents.filemanager");
+               
+               try {
+                       startActivity(intent);
+               } catch (ActivityNotFoundException e) {
+                       // No compatible file manager was found.
+                       Toast.makeText(this, R.string.no_filemanager_installed, 
+                               Toast.LENGTH_SHORT).show();
+               }
+    }
+
+    /**
+     * This is called after the file manager finished.
+     */
+       @Override
+       protected void onActivityResult(int requestCode, int resultCode, Intent data) {
+               super.onActivityResult(requestCode, resultCode, data);
+
+               mTextView.setText("");
+               
+               switch (requestCode) {
+               case REQUEST_CODE_PICK_FILE_OR_DIRECTORY:
+                       if (resultCode == RESULT_OK && data != null) {
+                               // obtain the filename
+                               Uri fileUri = data.getData();
+                               if (fileUri != null) {
+                                       String filePath = fileUri.getPath();
+                                       if (filePath != null) {
+                                               mEditText.setText(filePath);
+                                       }
+                               }
+                       }
+                       break;
+               case REQUEST_CODE_GET_CONTENT:
+                       if (resultCode == RESULT_OK && data != null) {
+                               String filePath = null;
+                               long fileSize = 0;
+                               String displayName = null;
+                               Uri uri = data.getData();
+                               Cursor c = getContentResolver().query(uri, new String[] {MediaStore.MediaColumns.DATA,
+                                       MediaStore.MediaColumns.MIME_TYPE,
+                                       MediaStore.MediaColumns.DISPLAY_NAME,
+                                       MediaStore.MediaColumns.SIZE
+                               }, null, null, null);
+                               if (c != null && c.moveToFirst()) {
+                                       int id = c.getColumnIndex(Images.Media.DATA);
+                                       if (id != -1) {
+                                               filePath = c.getString(id);
+                                       }
+                                       displayName = c.getString(2);
+                                       fileSize = c.getLong(3);
+                               }
+                               if (filePath != null) {
+                                       mEditText.setText(filePath);
+                                       String strFileSize = getString(R.string.get_content_info,
+                                                       displayName, "" + fileSize);
+                                       mTextView.setText(strFileSize);
+                               }
+                       }
+               }
+       }
+}
\ No newline at end of file