OSDN Git Service

cmfm: add support for init navigation in a concrete folder
authorJorge Ruesga <jorge@ruesga.com>
Fri, 27 Feb 2015 17:53:47 +0000 (18:53 +0100)
committerJorge Ruesga <jorge@ruesga.com>
Fri, 27 Feb 2015 17:58:05 +0000 (18:58 +0100)
Add an ACTION_VIEW intent with matches with "resource/folder" mime type and a file/folder/directory scheme

Change-Id: I91afe762ebcaf9ead25d091ffaf4f705a8dd0515
Signed-off-by: Jorge Ruesga <jorge@ruesga.com>
AndroidManifest.xml
src/com/cyanogenmod/filemanager/activities/NavigationActivity.java
src/com/cyanogenmod/filemanager/activities/PickerActivity.java
src/com/cyanogenmod/filemanager/util/FileHelper.java

index 0218931..82f420f 100644 (file)
         <action android:name="android.intent.action.SEARCH" />
         <category android:name="android.intent.category.DEFAULT" />
       </intent-filter>
+      <intent-filter>
+        <action android:name="android.intent.action.VIEW" />
+        <category android:name="android.intent.category.DEFAULT" />
+        <category android:name="android.intent.category.BROWSABLE" />
+        <data android:mimeType="resource/folder" />
+        <data android:scheme="file" />
+        <data android:scheme="folder" />
+        <data android:scheme="directory" />
+      </intent-filter>
       <meta-data
         android:name="android.app.searchable"
         android:value=".activities.SearchActivity"
index 5754f27..6fb6f19 100644 (file)
@@ -16,7 +16,6 @@
 
 package com.cyanogenmod.filemanager.activities;
 
-import android.app.ActionBar;
 import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.SearchManager;
@@ -26,7 +25,6 @@ import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.res.Configuration;
-import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
 import android.database.Cursor;
 import android.graphics.Color;
@@ -39,7 +37,6 @@ import android.os.Bundle;
 import android.os.Environment;
 import android.os.Handler;
 import android.os.Parcelable;
-import android.os.storage.StorageManager;
 import android.os.storage.StorageVolume;
 import android.support.v4.app.ActionBarDrawerToggle;
 import android.support.v4.widget.DrawerLayout;
@@ -47,8 +44,6 @@ import android.text.TextUtils;
 import android.util.Log;
 import android.view.Gravity;
 import android.view.KeyEvent;
-import android.view.Menu;
-import android.view.MenuInflater;
 import android.view.MenuItem;
 import android.view.View;
 import android.view.View.OnClickListener;
@@ -61,20 +56,17 @@ import android.widget.LinearLayout;
 import android.widget.ListPopupWindow;
 import android.widget.ListView;
 import android.widget.PopupWindow;
-import android.widget.ScrollView;
 import android.widget.SearchView;
 import android.widget.TextView;
 import android.widget.Toast;
-
 import android.widget.Toolbar;
 import android.widget.ArrayAdapter;
+
 import com.android.internal.util.XmlUtils;
 import com.cyanogenmod.filemanager.FileManagerApplication;
 import com.cyanogenmod.filemanager.R;
 import com.cyanogenmod.filemanager.activities.preferences.SettingsPreferences;
-import com.cyanogenmod.filemanager.adapters.HighlightedSimpleMenuListAdapter;
 import com.cyanogenmod.filemanager.adapters.MenuSettingsAdapter;
-import com.cyanogenmod.filemanager.adapters.SimpleMenuListAdapter;
 import com.cyanogenmod.filemanager.console.Console;
 import com.cyanogenmod.filemanager.console.ConsoleAllocException;
 import com.cyanogenmod.filemanager.console.ConsoleBuilder;
@@ -1543,6 +1535,16 @@ public class NavigationActivity extends Activity
         String navigateTo = intent.getStringExtra(EXTRA_NAVIGATE_TO);
         if (navigateTo != null && navigateTo.length() > 0) {
             initialDir = navigateTo;
+        } else if (intent.getAction().equals(Intent.ACTION_VIEW)) {
+            Uri data = intent.getData();
+            if (data != null && (FileHelper.FILE_URI_SCHEME.equals(data.getScheme())
+                    || FileHelper.FOLDER_URI_SCHEME.equals(data.getScheme())
+                    || FileHelper.DIRECTORY_URI_SCHEME.equals(data.getScheme()))) {
+                File path = new File(data.getPath());
+                if (path.isDirectory()) {
+                    initialDir = path.getAbsolutePath();
+                }
+            }
         }
 
         // Add to history
index 5f61927..120fd1d 100644 (file)
@@ -115,11 +115,6 @@ public class PickerActivity extends Activity
     // String extra for folder selection
     private static final String EXTRA_FOLDER_PATH = "def_file_manager_result_dir";
 
-    // Scheme for file and directory picking
-    private static final String FILE_URI_SCHEME = "file"; //$NON-NLS-1$
-    private static final String FOLDER_URI_SCHEME = "folder"; //$NON-NLS-1$
-    private static final String DIRECTORY_URI_SCHEME = "directory"; //$NON-NLS-1$
-
     FileSystemObject mFso;  // The picked item
     FileSystemObject mCurrentDirectory;
     private AlertDialog mDialog;
@@ -470,7 +465,7 @@ public class PickerActivity extends Activity
         }
         if (Intent.ACTION_PICK.equals(action)) {
             final Uri data = intent.getData();
-            if (data != null && FILE_URI_SCHEME.equals(data.getScheme())) {
+            if (data != null && FileHelper.FILE_URI_SCHEME.equals(data.getScheme())) {
                 return true;
             }
         }
@@ -485,7 +480,8 @@ public class PickerActivity extends Activity
 
         if (Intent.ACTION_PICK.equals(intent.getAction()) && intent.getData() != null) {
             String scheme = intent.getData().getScheme();
-            if (FOLDER_URI_SCHEME.equals(scheme) || DIRECTORY_URI_SCHEME.equals(scheme)) {
+            if (FileHelper.FOLDER_URI_SCHEME.equals(scheme)
+                    || FileHelper.DIRECTORY_URI_SCHEME.equals(scheme)) {
                 return true;
             }
         }
index 93a2df0..1d9aa9f 100644 (file)
@@ -78,6 +78,11 @@ public final class FileHelper {
 
     private static final String TAG = "FileHelper"; //$NON-NLS-1$
 
+    // Scheme for file and directory picking
+    public static final String FILE_URI_SCHEME = "file"; //$NON-NLS-1$
+    public static final String FOLDER_URI_SCHEME = "folder"; //$NON-NLS-1$
+    public static final String DIRECTORY_URI_SCHEME = "directory"; //$NON-NLS-1$
+
     /**
      * Special extension for compressed tar files
      */