В моем случае у меня есть файл, созданный во время моей предыдущей установки, но после переустановки я пытаюсь записать файл, теперь он выдает исключение «Файл не найден». При отладке file.exists возвращает true, но при записи в этот файл он возвращает исключение «файл не существует» в Android 30.
Метод, вызываемый при нажатии кнопки: String S_LOG_DIR_PATH = Environment.getExternalStorageDirectory().toString()
+ File.separator + Environment.DIRECTORY_DOWNLOADS +
File.separator + "mShaktiLog" ;
String S_LogFile_FullFilePath = S_LOG_DIR_PATH +File.separator +"test.txt";
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
File file = new File(S_LogFile_FullFilePath);
if ( isPermissionGranted() ) {
if ( !LogManager.checkFileExists() ) {
String initialDirectoryPath = S_LOG_DIR_PATH;
Uri initialUri = Uri.parse(initialDirectoryPath);
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, initialUri);
getActivity().startActivityForResult(intent, 25);
} else {
LogManager.createActiveLogFile(getActivity(), file);
}
} else {
LogManager.debug(TAG + ":: permission error");
}
}
onActivityResult
Uri uri = data.getData();
ContentResolver contentResolver = ApplicationClass.getShaktiApplicationContext().getContentResolver();
contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
isURIPermissionGranted(uri);
LogManager.logStr(uri, "Reinitiated");
Проверка FileExistencey с помощью ContentResolver
@RequiresApi(api = Build.VERSION_CODES.R)
public static boolean checkFileExists(){
String folderName = "mShaktiLog";
boolean isFileExists = false;
ContentResolver resolver = ApplicationClass.getShaktiApplicationContext().getContentResolver();
String[] projection = {
MediaStore.Downloads.DISPLAY_NAME,
MediaStore.Downloads.RELATIVE_PATH
};
String selection = MediaStore.Downloads.DISPLAY_NAME + "=? AND " +
MediaStore.Downloads.RELATIVE_PATH + "=?";
Uri downloadsUri = MediaStore.Downloads.EXTERNAL_CONTENT_URI;
String[] selectionArgs = {S_LOG_FILE_NAME, Environment.DIRECTORY_DOWNLOADS + File.separator + folderName};
// String[] selectionArgs = {S_LOG_FILE_NAME, Environment.DIRECTORY_DOWNLOADS};
Cursor cursor = resolver.query(downloadsUri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.getCount() > 0) {
isFileExists = true;
}
if (cursor != null) {
cursor.close();
}
return isFileExists;
}
Подробнее здесь: https://stackoverflow.com/questions/784 ... t-found-ex
File.exists возвращает true, но при записи в этот файл возвращается исключение «файл не найден» в Android 30 в Android ⇐ Android
Форум для тех, кто программирует под Android
1715265699
Anonymous
В моем случае у меня есть файл, созданный во время моей предыдущей установки, но после переустановки я пытаюсь записать файл, теперь он выдает исключение «Файл не найден». При отладке file.exists возвращает true, но при записи в этот файл он возвращает исключение «файл не существует» в Android 30.
Метод, вызываемый при нажатии кнопки: String S_LOG_DIR_PATH = Environment.getExternalStorageDirectory().toString()
+ File.separator + Environment.DIRECTORY_DOWNLOADS +
File.separator + "mShaktiLog" ;
String S_LogFile_FullFilePath = S_LOG_DIR_PATH +File.separator +"test.txt";
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
File file = new File(S_LogFile_FullFilePath);
if ( isPermissionGranted() ) {
if ( !LogManager.checkFileExists() ) {
String initialDirectoryPath = S_LOG_DIR_PATH;
Uri initialUri = Uri.parse(initialDirectoryPath);
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(DocumentsContract.EXTRA_INITIAL_URI, initialUri);
getActivity().startActivityForResult(intent, 25);
} else {
LogManager.createActiveLogFile(getActivity(), file);
}
} else {
LogManager.debug(TAG + ":: permission error");
}
}
onActivityResult
Uri uri = data.getData();
ContentResolver contentResolver = ApplicationClass.getShaktiApplicationContext().getContentResolver();
contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_READ_URI_PERMISSION);
contentResolver.takePersistableUriPermission(uri, Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
isURIPermissionGranted(uri);
LogManager.logStr(uri, "Reinitiated");
Проверка FileExistencey с помощью ContentResolver
@RequiresApi(api = Build.VERSION_CODES.R)
public static boolean checkFileExists(){
String folderName = "mShaktiLog";
boolean isFileExists = false;
ContentResolver resolver = ApplicationClass.getShaktiApplicationContext().getContentResolver();
String[] projection = {
MediaStore.Downloads.DISPLAY_NAME,
MediaStore.Downloads.RELATIVE_PATH
};
String selection = MediaStore.Downloads.DISPLAY_NAME + "=? AND " +
MediaStore.Downloads.RELATIVE_PATH + "=?";
Uri downloadsUri = MediaStore.Downloads.EXTERNAL_CONTENT_URI;
String[] selectionArgs = {S_LOG_FILE_NAME, Environment.DIRECTORY_DOWNLOADS + File.separator + folderName};
// String[] selectionArgs = {S_LOG_FILE_NAME, Environment.DIRECTORY_DOWNLOADS};
Cursor cursor = resolver.query(downloadsUri, projection, selection, selectionArgs, null);
if (cursor != null && cursor.getCount() > 0) {
isFileExists = true;
}
if (cursor != null) {
cursor.close();
}
return isFileExists;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/78447440/file-exists-returns-true-but-on-writing-to-that-file-returning-file-not-found-ex[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия