fixed sending cached images
authortobiasKaminsky <tobias@kaminsky.me>
Mon, 2 Nov 2015 20:53:24 +0000 (21:53 +0100)
committertobiasKaminsky <tobias@kaminsky.me>
Mon, 2 Nov 2015 20:53:24 +0000 (21:53 +0100)
AndroidManifest.xml
res/values/setup.xml
src/com/owncloud/android/ui/adapter/DiskLruImageCacheFileProvider.java

index df50e72..77f8a0d 100644 (file)
 
         <provider
             android:name=".providers.FileContentProvider"
-            android:authorities="org.owncloud.beta.provider"
+            android:authorities="@string/authority"
             android:enabled="true"
             android:exported="true"
             android:label="@string/sync_string_files"
 
         <provider
             android:name=".ui.adapter.DiskLruImageCacheFileProvider"
-            android:authorities="com.owncloud.imageCache.providerBeta"
+            android:authorities="@string/authorityCache"
             android:exported="true">
         </provider>
 
index 4d38476..c1c6e7a 100644 (file)
@@ -4,6 +4,7 @@
     <string name="app_name">Owncloud Beta</string>
     <string name="account_type">owncloud.beta</string> <!-- better if was a domain name; but changing it now would require migrate accounts when the app is updated -->
     <string name="authority">org.owncloud.beta.provider</string>       <!-- better if was the app package with ".provider" appended ; it identifies the provider -->
+    <string name="authorityCache">org.owncloud.beta.imageCache.provider</string>
     <string name ="db_file">owncloud.db</string>
     <string name ="db_name">ownCloud</string>
     <string name ="data_folder">owncloud-beta</string>
index 5c32ad5..4f1119f 100644 (file)
@@ -27,9 +27,11 @@ import android.content.ContentProvider;
 import android.content.ContentValues;
 import android.content.UriMatcher;
 import android.database.Cursor;
+import android.database.MatrixCursor;
 import android.graphics.Bitmap;
 import android.net.Uri;
 import android.os.ParcelFileDescriptor;
+import android.provider.OpenableColumns;
 
 import com.owncloud.android.MainApp;
 import com.owncloud.android.authentication.AccountUtils;
@@ -46,17 +48,29 @@ import java.io.IOException;
 
 public class DiskLruImageCacheFileProvider extends ContentProvider {
     private static String TAG = FileDataStorageManager.class.getSimpleName();
+    private FileDataStorageManager mFileDataStorageManager;
 
-    public static final String AUTHORITY = "com.owncloud.imageCache.providerBeta";
+    public static final String AUTHORITY = "org.owncloud.beta.imageCache.provider";
 
     @Override
-    public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
-        Log_OC.d(TAG, "try to send: " + uri);
+    public boolean onCreate() {
+        return true;
+    }
+
+    private OCFile getFile(Uri uri){
         Account account = AccountUtils.getCurrentOwnCloudAccount(MainApp.getAppContext());
-        FileDataStorageManager fileDataStorageManager = new FileDataStorageManager(account,
+        mFileDataStorageManager = new FileDataStorageManager(account,
                 MainApp.getAppContext().getContentResolver());
 
-        OCFile ocFile = fileDataStorageManager.getFileByPath(uri.getPath());
+        OCFile ocFile = mFileDataStorageManager.getFileByPath(uri.getPath());
+        return ocFile;
+    }
+
+    @Override
+    public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
+        Log_OC.d(TAG, "try to send: " + uri);
+
+        OCFile ocFile = getFile(uri);
 
         Bitmap thumbnail = ThumbnailsCacheManager.getBitmapFromDiskCache(
                 String.valueOf("r" + ocFile.getRemoteId()));
@@ -89,20 +103,26 @@ public class DiskLruImageCacheFileProvider extends ContentProvider {
         return ParcelFileDescriptor.open(f, ParcelFileDescriptor.MODE_READ_ONLY);
     }
 
-
     @Override
-    public boolean onCreate() {
-        return true;
+    public String getType(Uri uri) {
+        OCFile ocFile = getFile(uri);
+        return ocFile.getMimetype();
     }
 
     @Override
-    public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
-        return null;
-    }
+    public Cursor query(Uri uri, String[] arg1, String arg2, String[] arg3, String arg4) {
+        MatrixCursor cursor = null;
+
+        OCFile ocFile = getFile(uri);
+        File file = new File(MainApp.getAppContext().getCacheDir(), ocFile.getFileName());
+        if (file.exists()) {
+            cursor = new MatrixCursor(new String[] {
+                    OpenableColumns.DISPLAY_NAME, OpenableColumns.SIZE });
+            cursor.addRow(new Object[] { uri.getLastPathSegment(),
+                    file.length() });
+        }
 
-    @Override
-    public String getType(Uri uri) {
-        return null;
+        return cursor;
     }
 
     @Override