diff options
author | Jorge Ruesga <jorge@ruesga.com> | 2015-02-27 18:53:47 +0100 |
---|---|---|
committer | Jorge Ruesga <jorge@ruesga.com> | 2015-02-27 18:58:05 +0100 |
commit | f54b7a6eadfa1044dc78fa198a48855a51f0d802 (patch) | |
tree | fc58b75e3788ebb9bdfd3f806172745de786a7d0 | |
parent | 39bb8290b037035a770f024b2d2e96929c262675 (diff) | |
download | android_packages_apps_CMFileManager-stable/cm-12.0-YNG1I.tar.gz android_packages_apps_CMFileManager-stable/cm-12.0-YNG1I.tar.bz2 android_packages_apps_CMFileManager-stable/cm-12.0-YNG1I.zip |
cmfm: add support for init navigation in a concrete folderstable/cm-12.0-YNG1I
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>
4 files changed, 28 insertions, 16 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 02189318..82f420fd 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -93,6 +93,15 @@ <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" diff --git a/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java b/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java index 5754f27c..6fb6f198 100644 --- a/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java +++ b/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java @@ -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 diff --git a/src/com/cyanogenmod/filemanager/activities/PickerActivity.java b/src/com/cyanogenmod/filemanager/activities/PickerActivity.java index 5f619271..120fd1d4 100644 --- a/src/com/cyanogenmod/filemanager/activities/PickerActivity.java +++ b/src/com/cyanogenmod/filemanager/activities/PickerActivity.java @@ -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; } } diff --git a/src/com/cyanogenmod/filemanager/util/FileHelper.java b/src/com/cyanogenmod/filemanager/util/FileHelper.java index 93a2df0d..1d9aa9f2 100644 --- a/src/com/cyanogenmod/filemanager/util/FileHelper.java +++ b/src/com/cyanogenmod/filemanager/util/FileHelper.java @@ -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 */ |