aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArne Coucheron <arco68@gmail.com>2016-12-21 14:48:49 +0100
committerZhao Wei Liew <zhaoweiliew@gmail.com>2016-12-22 19:35:06 -0800
commit04d40552fd4eabfa449349288b004ce73314d979 (patch)
treebdec1df129427504486f3f6f6ef0509ab448fa03
parent11826416cafe5392cf1c17de85c010da4bce91d9 (diff)
downloadandroid_packages_apps_CMFileManager-04d40552fd4eabfa449349288b004ce73314d979.tar.gz
android_packages_apps_CMFileManager-04d40552fd4eabfa449349288b004ce73314d979.tar.bz2
android_packages_apps_CMFileManager-04d40552fd4eabfa449349288b004ce73314d979.zip
Revert "cmfm: Use FileProvider for serving files"
Incomplete so things are still very much broken. We'll force SDK to version 23 instead for now, so at least we have a fully working file manager. This reverts commit 578f0a0ed7870b5a8ed28c7c0198a798b389a682. Change-Id: I612507d75d3e45ba091d43ac2c5bf1f9dbe53fb5
-rw-r--r--AndroidManifest.xml10
-rw-r--r--res/xml/provider_paths.xml4
-rwxr-xr-xsrc/com/cyanogenmod/filemanager/activities/NavigationActivity.java6
-rw-r--r--src/com/cyanogenmod/filemanager/activities/PickerActivity.java7
-rw-r--r--src/com/cyanogenmod/filemanager/ui/dialogs/AssociationsDialog.java2
-rwxr-xr-xsrc/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java29
6 files changed, 15 insertions, 43 deletions
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 46602187..7d00f0bc 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -76,16 +76,6 @@
android:authorities="com.cyanogenmod.filemanager.providers.index"
android:name=".providers.MimeTypeIndexProvider"/>
- <provider
- android:name="android.support.v4.content.FileProvider"
- android:authorities="com.cyanogenmod.filemanager.providers.file"
- android:exported="false"
- android:grantUriPermissions="true">
- <meta-data
- android:name="android.support.FILE_PROVIDER_PATHS"
- android:resource="@xml/provider_paths" />
- </provider>
-
<service
android:name=".service.MimeTypeIndexService"
android:label="@string/app_name">
diff --git a/res/xml/provider_paths.xml b/res/xml/provider_paths.xml
deleted file mode 100644
index 4ff89311..00000000
--- a/res/xml/provider_paths.xml
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<paths xmlns:android="http://schemas.android.com/apk/res/android">
- <external-path name="external_files" path="."/>
-</paths>
diff --git a/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java b/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java
index 2e5deafb..8e32f5cb 100755
--- a/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java
+++ b/src/com/cyanogenmod/filemanager/activities/NavigationActivity.java
@@ -47,7 +47,6 @@ import android.os.Parcelable;
import android.os.storage.StorageVolume;
import android.provider.Settings;
import android.support.v4.app.ActionBarDrawerToggle;
-import android.support.v4.content.FileProvider;
import android.support.v4.widget.DrawerLayout;
import android.text.TextUtils;
import android.util.Log;
@@ -637,10 +636,7 @@ public class NavigationActivity extends Activity
for (FileSystemObject f : selectedFiles) {
//Beam ignores folders and system files
if (!FileHelper.isDirectory(f) && !FileHelper.isSystemFile(f)) {
- fileUri.add(FileProvider.getUriForFile(
- NavigationActivity.this,
- "com.cyanogenmod.filemanager.providers.file",
- new File(f.getFullPath())));
+ fileUri.add(Uri.fromFile(new File(f.getFullPath())));
}
}
if (fileUri.size() > 0) {
diff --git a/src/com/cyanogenmod/filemanager/activities/PickerActivity.java b/src/com/cyanogenmod/filemanager/activities/PickerActivity.java
index 17707a66..ba5fa53a 100644
--- a/src/com/cyanogenmod/filemanager/activities/PickerActivity.java
+++ b/src/com/cyanogenmod/filemanager/activities/PickerActivity.java
@@ -34,7 +34,6 @@ import android.os.Bundle;
import android.os.Environment;
import android.os.Handler;
import android.os.storage.StorageVolume;
-import android.support.v4.content.FileProvider;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
@@ -467,8 +466,7 @@ public class PickerActivity extends Activity
if (getIntent().getType() != null) {
intent.setType(getIntent().getType());
}
- intent.setData(FileProvider.getUriForFile(this,
- "com.cyanogenmod.filemanager.providers.file", src));
+ intent.setData(Uri.fromFile(src));
intent.putExtras(extras);
intent.setComponent(CROP_COMPONENT);
try {
@@ -574,8 +572,7 @@ public class PickerActivity extends Activity
// Try to find the preferred uri scheme
Uri result = MediaHelper.fileToContentUri(context, src);
if (result == null) {
- result = FileProvider.getUriForFile(context,
- "com.cyanogenmod.filemanager.providers.file", src);
+ result = Uri.fromFile(src);
}
if (Intent.ACTION_PICK.equals(intent.getAction()) && intent.getData() != null) {
diff --git a/src/com/cyanogenmod/filemanager/ui/dialogs/AssociationsDialog.java b/src/com/cyanogenmod/filemanager/ui/dialogs/AssociationsDialog.java
index 774b3383..a90281dd 100644
--- a/src/com/cyanogenmod/filemanager/ui/dialogs/AssociationsDialog.java
+++ b/src/com/cyanogenmod/filemanager/ui/dialogs/AssociationsDialog.java
@@ -166,7 +166,7 @@ public class AssociationsDialog implements OnItemClickListener {
public void onClick(DialogInterface dialog, int which) {
ResolveInfo ri = getSelected();
Intent intent =
- IntentsActionPolicy.getIntentFromResolveInfo(mContext,
+ IntentsActionPolicy.getIntentFromResolveInfo(
ri, AssociationsDialog.this.mRequestIntent);
// Open the intent (and remember the action is the check is marked)
diff --git a/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java b/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java
index 3451ebe5..67041bb8 100755
--- a/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java
+++ b/src/com/cyanogenmod/filemanager/ui/policy/IntentsActionPolicy.java
@@ -26,7 +26,6 @@ import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.net.Uri;
import android.provider.MediaStore;
-import android.support.v4.content.FileProvider;
import android.util.Log;
import android.widget.Toast;
import com.cyanogenmod.filemanager.R;
@@ -166,8 +165,6 @@ public final class IntentsActionPolicy extends ActionsPolicy {
intent.setData(getUriFromFile(ctx, fso));
}
- intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
-
// Resolve the intent
resolveIntent(ctx, intent, choose, onDismissListener);
} catch (Exception e) {
@@ -446,8 +443,7 @@ public final class IntentsActionPolicy extends ActionsPolicy {
* @param request The requested intent
* @return Intent The intent
*/
- public static final Intent getIntentFromResolveInfo(Context context,
- ResolveInfo ri, Intent request) {
+ public static final Intent getIntentFromResolveInfo(ResolveInfo ri, Intent request) {
Intent intent =
getIntentFromComponentName(
new ComponentName(
@@ -477,7 +473,7 @@ public final class IntentsActionPolicy extends ActionsPolicy {
}
// Grant access to resources if needed
- grantSecureAccessIfNeeded(context, intent, ri);
+ grantSecureAccessIfNeeded(intent, ri);
return intent;
}
@@ -488,8 +484,7 @@ public final class IntentsActionPolicy extends ActionsPolicy {
* @param intent The intent to grant access
* @param ri The resolved info associated with the intent
*/
- public static final void grantSecureAccessIfNeeded(Context context,
- Intent intent, ResolveInfo ri) {
+ public static final void grantSecureAccessIfNeeded(Intent intent, ResolveInfo ri) {
// If this intent will be serve by the SecureResourceProvider then this uri must
// be granted before we start it, only for external apps. The internal editor
// must receive an file scheme uri
@@ -497,33 +492,32 @@ public final class IntentsActionPolicy extends ActionsPolicy {
String authority = null;
if (uri != null) {
authority = uri.getAuthority();
- grantSecureAccess(context, intent, authority, ri, uri);
+ grantSecureAccess(intent, authority, ri, uri);
} else if (intent.getExtras() != null) {
Object obj = intent.getExtras().get(Intent.EXTRA_STREAM);
if (obj instanceof Uri) {
uri = (Uri) intent.getExtras().get(Intent.EXTRA_STREAM);
authority = uri.getAuthority();
- grantSecureAccess(context, intent, authority, ri, uri);
+ grantSecureAccess(intent, authority, ri, uri);
} else if (obj instanceof ArrayList) {
ArrayList<Uri> uris = (ArrayList<Uri>) intent.getExtras().get(Intent.EXTRA_STREAM);
for (Uri u : uris) {
authority = u.getAuthority();
- grantSecureAccess(context, intent, authority, ri, u);
+ grantSecureAccess(intent, authority, ri, u);
}
}
}
}
- private static final void grantSecureAccess(Context context, Intent intent,
- String authority, ResolveInfo ri, Uri uri) {
+ private static final void grantSecureAccess(Intent intent, String authority, ResolveInfo ri,
+ Uri uri) {
if (authority != null && authority.equals(SecureResourceProvider.AUTHORITY)) {
boolean isInternalEditor = isInternalEditor(ri);
if (isInternalEditor) {
// remove the authorization and change request to file scheme
AuthorizationResource auth = SecureResourceProvider.revertAuthorization(uri);
- intent.setData(FileProvider.getUriForFile(context,
- "com.cyanogenmod.filemanager.providers.file",
- new File(auth.mFile.getFullPath())));
+ intent.setData(Uri.fromFile(new File(auth.mFile.getFullPath())));
+
} else {
// Grant access to the package
SecureResourceProvider.grantAuthorizationUri(uri,
@@ -667,8 +661,7 @@ public final class IntentsActionPolicy extends ActionsPolicy {
final File file = new File(fso.getFullPath());
Uri uri = MediaHelper.fileToContentUri(ctx, file);
if (uri == null) {
- uri = FileProvider.getUriForFile(ctx,
- "com.cyanogenmod.filemanager.providers.file", file);
+ uri = Uri.fromFile(file);
}
return uri;
}