7

内部ストレージから SD カードにファイルをコピーまたは移動したい。これは、Storage Access Framework (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 に答える