相关疑难解决方法(0)

从内容提供程序返回内存映射的InputStream?

内容提供者消费者的客户端我可以做这样的事情,以获得正确的InputStream来读取图片:

InputStream is = getContentResolver().openInputStream(pictureUri);
Run Code Online (Sandbox Code Playgroud)

这是一个很好的API,并且在服务器端,实际的内容提供者会调用:

public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException {
  // Open a proper ParcelFileDescriptor, most likely using openFileHelper(uri, mode)
}
Run Code Online (Sandbox Code Playgroud)

但是如果映射到URI的图片不是在文件系统上找到,而是作为内存资源,或者是动态生成的.

我可以建立存储器映射FileInputStream,或其他任何东西,所以,我不保存临时文件的磁盘需要,只是为了能够将其返回到我的内容提供商的消费者?

android memory-mapped-files android-contentprovider

5
推荐指数
1
解决办法
3980
查看次数

Android:ParcelFileDescriptor"createpipe"方法64KB错误

我有一个使用ContentProvider类的应用程序.在openFile方法中,我需要能够解码文件并作为数据流返回.所以我决定使用内置管道.

问题是如果我使用createPipe方法,我只能写入64KB.之后我无法将数据写入管道.另请注意,在数据完全解码并写入管道之前,我无法读取.

package com.aujas.html.viewer.content;
public class LocalFileContentProvider extends ContentProvider {

private static final String URI_PREFIX = "content://com.aujas.html.viewer.localfile.dec/";
public static File file;
public String filename;
public ParcelFileDescriptor[] parcels;

public static String constructUri(String url) {
    String editString = url.replaceAll("%20", " ");
    int n = editString.length();
    String uri = editString.substring(5, n - 1);
    Log.d("URI", uri);
    return URI_PREFIX + uri + "\"";
}

public ParcelFileDescriptor openFile(Uri uri, String mode) {

    Log.d("OPEN", uri.getPath());
    return parcels[0];

}

@Override
public boolean onCreate() {
    return true;
}

@Override …
Run Code Online (Sandbox Code Playgroud)

android pipe parcelable android-contentprovider

1
推荐指数
1
解决办法
3100
查看次数