【发布时间】:2014-04-06 18:35:27
【问题描述】:
我应该如何调用从自定义 ContentProvider 返回的 Cursor 中的列,以允许其他应用从中读取数据。
我在 ProviderContract 中声明了所有列,但第三个应用程序不知道这一点。 这有记录吗?
我特别想做的是让用户将数据(文件 - 图像和 pdf)从我的应用程序共享到其他应用程序.. 出于安全考虑,所有数据都在外部 sd 存储上加密。所以我需要通过我的应用程序代理它们来解密它们。 Android 安全系统应处理用户选择共享文件后仅允许其他应用从内容提供者读取的问题。没关系,但我有其他应用程序不知道如何从我的光标读取数据的问题。
我只是觉得 Android 会有一些机制来做到这一点:)要么通过标准化的列名,要么通过一些适配器机制。
这是我的查询方法的代码..
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
MatrixCursor c = new MatrixCursor(SecuredFileContract.Files.PROJECTION_ALL);
String name = uri.getLastPathSegment();
File file = new File(name);
byte[] fileContents = mStorageProxy.getFileContents(file);
c.addRow(new Object[]{1, uri.getLastPathSegment(), fileContents, 0});
return c;
}
【问题讨论】:
标签: android android-contentprovider android-cursor