2014-01-15 3 views
1

Я пишу DbxFile из файла SD CARD, используя метод writeFromExistingFile (File, boolean). Но он не работает и дает ошибку Cross link, указывающую, что он не может писать из SDCARD в кэш DbxFileSystem. Может ли кто-нибудь описать правильное использование этого метода? Также я могу скопировать файл .db из SDcard в систему DbxFile, потому что я не хочу использовать DataStore API? Ошибка, которую я получил во время записи: E/libDropboxSync.so (ERR) (11250): DROPBOX_ERROR_SYSTEM: file.cpp: 737: перемещение /storage/emulated/0/sync_sdk.txt в кеш: ссылка на одно устройствоКак использовать метод writeFromExistingFile (File, boolean) API-интерфейса Dropbox SYNC?

+0

Хороший старт Задавая этот вопрос было бы сообщить нам фактическую ошибку, которую вы получите (например, полную трассировку исключения). «Ошибка перекрестной ссылки» довольно расплывчата. – smarx

+0

@smarx - Здесь я также разместил здесь ошибку. Обратите внимание на это. – akg

ответ

0

Это сообщение указывает на errno == EXDEV после вызова rename() (http://linux.die.net/man/3/rename). Это указывает на то, что исходный файл является ссылкой, которая не может быть использована для работы с томами (например, между SD-картой и внутренним хранилищем). Это дело здесь? Есть предварительная проверка, которая бы отклонила символические ссылки, но это может быть жесткая ссылка. Или документы могут просто вводить в заблуждение, и это может быть просто проблемой при перемещении файла между томами.

В общем случае использование опции shouldSteal для перемещения ссылки в кеш API приведет к возникновению проблем, поскольку кэш ожидает уникального права собственности на файл. Вероятно, вы должны установить shouldSteal = false, что приведет к тому, что DbxFile сделает копию вашего входного файла (после чего вы можете удалить его, если хотите). Это должно работать независимо от того, является ли вход ссылкой или где вход является, если он доступен для чтения.

0

я имел успех справляясь и изображение (JPG) с моей SD-карты в Dropbox с помощью этого:

DbxFileSystem dbxFiles = DbxFileSystem.forAccount(accountManager.getLinkedAccount()); 
    //Get the Source 
File pictureFile = new File("/sdcard/<Your SD Path>/<Your SD File>"); 
    //Tell it were you want it 
DbxFile bitMap = dbxFiles.create(new DbxPath("<Dbx Path>/<Dbx File>")); 
    //write it there 
bitMap.writeFromExistingFile(pictureFile, false); 

Заменить то, что в <> с информацией

Смежные вопросы