Как найти файл, принадлежащий SD-карте в Android API 29, поскольку Environment.getExternalStorageDirectory () устарел - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно проверить, принадлежит ли файл SDcard или нет, ранее использовался код

@RequiresApi(api = Build.VERSION_CODES.KITKAT)
        public boolean isFromSdCard(String filepath) {
            String path1 = Environment.getExternalStorageDirectory().toString();
            return !filepath.startsWith(path1);

        }

Поскольку API 29 Environment.getExternalStorageDirectory() устарел, как мы можем выполнить проверку сейчас

Я хочу передать файл в собственный код, используя openFileDescriptor

Uri contentUri = ContentUris.withAppendedId(
        MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
        cursor.getLong(Integer.parseInt(BaseColumns._ID)));
String fileOpenMode = "r";
ParcelFileDescriptor parcelFd =
        resolver.openFileDescriptor(contentUri, fileOpenMode);
if (parcelFd != null) {
    int fd = parcelFd.detachFd();
    // Pass the integer value "fd" into your native code.
}

на My Galaxy A5 (2016) (Android 7.0). В доступе отказано. Pixel 2 Simulator с API 24 также получает ошибку отказа в разрешении

нужно ли нам проверять

if (resultCode == RESULT_OK) {
                getContentResolver().takePersistableUriPermission(data.getData(),
                        Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            } 

Я использовал, чтобы проверить это в старом коде, если файл присутствовал на SD-карте, как можно мы делаем это как для API 29,

...