Android ContentResolver.Query не находит путь, но «вставка» не удастся с уникальным ограничением.Android

Форум для тех, кто программирует под Android
Anonymous
Android ContentResolver.Query не находит путь, но «вставка» не удастся с уникальным ограничением.

Сообщение Anonymous »

У меня есть функция Android, которая используется для создания URI из файла, для намерения обмена. Если это так, URI возвращается. Если нет, то вставлен новый путь файла. < /P>
public static Uri getMediaContentUri(Context context, File file) {
String filePath = file.getAbsolutePath();
try (Cursor cursor = context.getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
new String[] {MediaStore.Images.Media._ID},
MediaStore.Images.Media.DATA + "=? ",
new String[] {filePath}, null)) {

if ((cursor != null) && cursor.moveToFirst()) {
@SuppressLint("Range")
int id = cursor.getInt(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
Uri baseUri = Uri.parse("content://media/external/images/media");
return Uri.withAppendedPath(baseUri, Integer.toString(id));
}
else if (file.exists()) {
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DATA, filePath);
return context.getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);
}
return null;
}
}
< /code>
Для большинства файлов он работает должным образом. Но для некоторых (особенно файлов, загруженных из приложения Android Facebook в каталог ".../dcim/facebook"), он не работает. Часть запроса не возвращает какую -либо запись в курсоре, поэтому функция затем пытается вставить запись, но она бросает и исключает: < /p>

android.database.sqlite.sqliteconstaintexception: уникальное ограничение. /> < /ul>
Я не помню, если я заметил эту проблему для любых других файлов, кроме тех, которые из приложения FB.>

Подробнее здесь: https://stackoverflow.com/questions/795 ... -with-uniq

Вернуться в «Android»