7

我想将文件从内部存储复制或移动到 SD 卡。我通过存储访问框架(SAF)和DocumentFile类来做到这一点......

复制是基于流的,并且DocumentFile没有File设置上次修改日期的类的功能。

我知道,我将文件移动/复制到 sd 卡,所以我知道我创建了一个本地文件。有了这些信息,是否有可能更新基础文件的最后修改日期DocumentFile

似乎您无法在不丢失上次修改日期的情况下将文件从内部存储移动/复制到 sd 卡...

阅读 - 工作

public long lastModified(DocumentFile file, Context context)
{
    long lastModified = 0;
    final Cursor cursor = context.getContentResolver().query(file.getUri(), null, null, null, null);
    try
    {
        if (cursor.moveToFirst())
            lastModified = cursor.getLong(cursor.getColumnIndexOrThrow(DocumentsContract.Document.COLUMN_LAST_MODIFIED));
    }
    finally
    {
        cursor.close();
    }

    return lastModified;
}

写作 - 不工作

public boolean setLastModified(DocumentFile file, Context context, long time)
{
    ContentValues updateValues = new ContentValues();
    updateValues.put(DocumentsContract.Document.COLUMN_LAST_MODIFIED, time);
    int updated = context.getContentResolver().update(file.getUri(), updateValues, null, null);
    return updated == 1;
}

这失败了一个java.lang.UnsupportedOperationException: Update not supported例外......

4

2 回答 2

-2

由于 API >=26,您可以使用刷新。这应该可以立即更新 Documentfile。这对我有用:

 context.getContentResolver().refresh(file.getUri(), null, null, null);
于 2019-09-03T10:22:57.450 回答
-2

可能您需要清单中的权限“android.permission.WRITE_USER_DICTIONARY”

于 2019-03-12T11:30:52.220 回答