Я делаю приложение для Android, которое позволяет передавать некоторые файлы из внутреннего хранилища на внешнее хранилище (SD-карту) с помощью SAF.Как программно перемещать, копировать файлы в SD?
Вот как я называю намерение позволить пользователю выбрать каталог SD-карты.
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
startActivityForResult(intent, 42);
И это мой onActivityResult
public void onActivityResult(int requestCode, int resultCode, Intent data) {
treeUri = data.getData();
final int takeFlags = data.getFlags()
& (Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
getActivity().getContentResolver().takePersistableUriPermission(treeUri, takeFlags);
}
Я беру разрешение на всю карту SD, так что я могу переместить или удалить любой файл в сд карты в любое время .The проблема заключается, что даже после того, разрешение Я не могу переместить или удалить любой файл на SD-карте.
Как перенести файл из внутреннего хранилища на внешнюю (SD-карту) для Android версии 5.0 и выше.
EDIT: Это код, который я использую для перемещения файлов.
public static void MoveFiles(File src, File dst) throws IOException
{
FileChannel inChannel = new FileInputStream(src).getChannel();
FileChannel outChannel = new FileOutputStream(dst).getChannel();
try
{
inChannel.transferTo(0, inChannel.size(), outChannel);
}
finally
{
if (inChannel != null)
inChannel.close();
if (outChannel != null)
outChannel.close();
src.delete();
}
}
«Проблема в том, что даже после получения разрешения я не могу перемещать или удалять любые файлы на SD-карте» - вы не указали какой-либо код для «перемещения или удаления любого файла на SD-карте», и у вас нет объяснил, какова фактическая проблема (например, трассировка стека Java). – CommonsWare
у вас есть, конечно, эти разрешения добавлены в файл манифеста? – user1086500
@CommonsWare Я отредактировал мой вопрос. – Rahulrr2602