some playing with content stream decryption and providing the result as content stream

This commit is contained in:
Thialfihar
2010-07-09 11:28:39 +00:00
parent f03b349057
commit 3ac472125a
3 changed files with 116 additions and 35 deletions

View File

@@ -16,6 +16,8 @@
package org.thialfihar.android.apg.provider;
import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import org.thialfihar.android.apg.Id;
@@ -27,6 +29,7 @@ import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.os.ParcelFileDescriptor;
import android.text.TextUtils;
public class DataProvider extends ContentProvider {
@@ -50,6 +53,8 @@ public class DataProvider extends ContentProvider {
private static final int SECRET_KEY_RING_USER_ID = 221;
private static final int SECRET_KEY_RING_USER_ID_RANK = 222;
private static final int DATA_STREAM = 301;
private static final String PUBLIC_KEY_RING_CONTENT_DIR_TYPE =
"vnd.android.cursor.dir/vnd.thialfihar.apg.public.key_ring";
private static final String PUBLIC_KEY_RING_CONTENT_ITEM_TYPE =
@@ -109,6 +114,8 @@ public class DataProvider extends ContentProvider {
mUriMatcher.addURI(AUTHORITY, "key_rings/secret", SECRET_KEY_RING);
mUriMatcher.addURI(AUTHORITY, "key_rings/secret/*", SECRET_KEY_RING_ID);
mUriMatcher.addURI(AUTHORITY, "data/*", DATA_STREAM);
}
@Override
@@ -360,4 +367,15 @@ public class DataProvider extends ContentProvider {
// not supported
return 0;
}
@Override
public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
int match = mUriMatcher.match(uri);
if (match != DATA_STREAM) {
throw new FileNotFoundException();
}
String fileName = uri.getPathSegments().get(1);
File file = new File(getContext().getFilesDir().getAbsolutePath(), fileName);
return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY);
}
}