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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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