Используя SAF, предоставленный в KitKat, MediaScanner не вызывается в файлах, сохраненных во внутренних или внешних точках хранения устройства. Поэтому я должен определить на основе возвращаемого URI, если я попытаюсь запустить MediaScanner.Storage Access Framework не обновляет MediaScanner (MTP)
// The SAF uses content URI to pass meta about the file. The following host is used for internal storage.
if (mExportServiceUri.getHost().equals("com.android.externalstorage.documents")) {
final File externalStorage = Environment.getExternalStorageDirectory();
final String path = mExportServiceUri.getEncodedPath().replace("/document/primary%3A", "");
MediaScannerConnection.scanFile(mService.getApplicationContext(), new String[] { new File(
externalStorage, path).getAbsolutePath() }, null, null);
}
Нужно ли кому-либо еще обойти эту проблему, и если да, то есть ли лучший подход, чем это? В настоящее время это поддерживает только внешнее хранилище устройства и дополнительное пространство для хранения, такое как SDCard, необходимо обрабатывать в отдельной проверке.
Я считаю, что это решает мои проблемы, хотя я обеспокоен тем, что он может не работать на всех устройствах, идущих вперед или даже в настоящее время. Я по-прежнему открыт для предложений по улучшению обработки MediaScanner. –