更改活动(上下文)会影响接收到的 uri 的访问权限吗?

问题描述 投票:0回答:1

我正在尝试从应用程序外部的“共享菜单”接收文件,然后对其进行处理。我收到

Uri
并将其转换为
fileDescriptor
,将其放入静态变量中,然后在另一个活动中使用该变量。问题是在第一个活动中,一切都运行良好(例如使用
MetaDataRetriever
获取缩略图),但在下一个活动中,使用相同的方法,它会给出错误
java.lang.RuntimeException: setDataSource failed: status = 0x80000000
。如果我直接使用
URI
也会发生同样的情况。我知道我可以在同一项活动中完成所有任务,但更喜欢在单独的活动中完成。

`公共静态位图 videoThumbMini(FileDescriptor 描述符) { 位图 位图 = null;

    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    try {
        retriever.setDataSource(descriptor);
        bitmap = retriever.getFrameAtTime(1000);
        if (bitmap == null)
            return null;
        float ratio = 1;
        if (bitmap.getHeight() > 300)
            ratio = bitmap.getHeight() / 300f;
        bitmap = Bitmap.createScaledBitmap(bitmap, (int) (bitmap.getWidth() / ratio), 200, false);
    } catch (RuntimeException e) {
        Logger.log(e.getMessage() + " ERR3", false, e);
    } finally {
        try {
            retriever.release();
        } catch (Exception e) {
            Logger.log(e.getMessage() + " ERR4", false, e);
        }
    }
    return bitmap;
}`
android uri file-descriptor
1个回答
0
投票

对于后来的人来说,这可以使其正常工作:

grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);

将包名称设置为与您的应用程序相同。

© www.soinside.com 2019 - 2024. All rights reserved.