ZotDroid - A Zotero Client for Android

  • edited February 9, 2018
    Hi @OniDaito

    using external path didn't allow viewing PDF files on box webdav server in ZotDroid.

    I added an SD Card to my Galaxy S8. I created a new ZotDroid directory on the SD Card.

    I changed ZotDroid Download Location to "/SD card/ZotDroid" which is how the Files app shows the path. When I try to look at a PDF in my library (synced to box webdav), I still get error: Could not find file to write to. Consider changing your Downloads directory to a publicly accessible folder.

    I also notice that after trying to view PDF and getting the error message mentioned above, when I return to settings/general/ Download Location, it has reverted back to the default /storage/emulated/0/Documents/ZotDroid (but only if unsuccessfulyy tried to view PDF).

    Hope this somehow helps you troubleshoot this.
  • @protein%20function hello there.
    Thanks for getting back to me. It seems clear that ZotDroid is having trouble creating the correct directory with the right permissions. The errors seem to be consistent with that.

    I think that I need to simulate your specific device and test it through some more. Are you using Android 7? I'll be taking a look soon and putting out a fix as soon as I find out exactly what is going on with this particular Android setup.
  • @OniDaito Thanks for all you hard work! But reading all these bug reports makes me wonder if it was a good idea release a paid version which is obviously in beta state. You can not expect people to pay for the app if they can not open pdf attachments. At least for me, that's the whole point of having a Zotero app. I would pay 5 Euros or even more if the app would work properly. But I do not want to pay for a beta-version if can not be sure that it will work as expected one day.
  • @tobsto Thanks for the comments. I disagree however. All the comments you will see here are more than likely to be bug reports - you simply don't hear from all the folks it works for (I have access to these stats through the Google store).

    Secondly, testing Android on every device and version is almost impossible - considerable effort was put into testing but I couldn't catch everything.

    Finally, the problem a few people have reported appears to be the same issue with a certain version of android and the saving of attachments to a public folder. Hopefully that will be fixed by the end of next week.
  • @OnoDaito Google Play Store still not indicating an update for my installed ZotDroid version 1.0.

    Please consider to troubleshoot PDF access issue for Samsung Galaxy S8 running Android 7. I can test if needed.
  • @protein%20function I certainly will be doing this, as the Samsung Galaxy with 7.1 is the consistent factor in all the error reports I've recieved. I'll be looking at this as soon as I can, hopefully solving it by the end of next week with any luck.
  • Version 1.1.1 is now released.

    Changes include better ACRA error reporting even if the file exceptions are handled. This ought to make it easier for me to see what is going wrong with the problems people have reported.

    I also noticed an error with Android 7+ where certain files would not open due to an Intents problem when handing over to other programs. This should help a few folk out.

    @protein%20function this may be of use to you, or at least I'll be able to spot a little more of what is going wrong.
  • Just installed, and synced my account, on an ageing Motorola G3 phone. Went through without a hitch.

    There is a UI problem, though. My account contains 61 group libraries. The ZotDroid listing is centered vertically, and won't scroll in either direction, so all I see is a chunk from the middle of the list (My Library is beyond the top of the physical screen). I won't be able to use the app until that bit is fixed, but it was a smooth experience to that point.
  • edited February 19, 2018
    There are some other glitches, though. When I open the library listing with the top-left hamburger, and then click "Top (expand)" beneath it, I'm taken to a list of collections. To view a list of items, I have to select a collection. It does not appear to be possible to view items that are not in a collection. Is that by intention?

    I tried search as a workaround, but that seems limited in scope to the collection being viewed --which makes sense, given resource constraints--but I also found that a search that returns no hits continues to display the full list of items, rather than giving an indication that no items were found. That makes it a little hard to determine whether a search succeeded or failed.

    (edited to correct some inaccuracies in the description)
  • @fbennett yes, this was initially by design as I wasn't too sure on the best place to put hanging records. Initially, these were in the TOP level but it didn't seem too intuitive. I might put them back there possibly.

    Regarding the G3 screen size, I am beginning to run out of screen space to put things (and disk space for all the various emulators I need!) but I'll attempt to format it for that screen if its possible. The left hand drawer should scroll I'd have thought (certainly the option is there). I'll take a look at that and see why it isnt.

    Search should indeed, return no results if none are found as that is perhaps more intuitive than not doing anything if it doesn't find any. Switching that over might make things a little easier.
  • @OnoDaito

    OK, I do have ver 1.1.1 (that's progress on the PlayStore front).

    This update has not changed the behaviors I mentioned above for not being able to open a PDF from box webdav that I know is there (nor am I able to test personal webdav).

  • @protein%20function I've received a couple of crash reports and they've been quite helpful. I suspect the issue revolves around the credentials registered with Zotero themselves. Sometimes, they don't actually get written into the preferences. This might take a while to sort out because it's more browser dependent. I'll see if theres a good way around it.
  • Hi @OnoDaitro,

    I purchased the app. However, the problem of not being able to open pdf attachements persists for entries in a group (which I mostly use). It does work for my personal library, though. Here is the error message:

    Error: WebDav download error. Failed to download from Zotero. Check internet settings, webdav settings and firewalls. does not appear to exists.

    I tried this for multiple library entries and different wifi connections.

    My settings are the following:
    User ID: myuserid
    Font Size: blank
    User Secret: myuserkey
    Download Location: /storage/emulated/0/Documents/ZotDroid
    Database Location: /data/user/0/computer.benjamin.zotdr0id/databases
    User Secret: someKey
    User Key: theSameKeyAsAbove

    I do not use a external webdav server but Zoteros build in server

    I use Android 8.1.0 on a Google Nexus 5X

    Could you please help me?


  • @fbennett Just had a look on the G3. I've got 30 top level collections and they all seem to load fine and I can scroll. Also, I was incorrect before - items with no collections appear in the top-level. However, the search will not search *all* collections if you are currently viewing a collection. Search searches within the currently viewed collection. I personally prefer this and I believe it makes more sense so I don't think I'll change it, though I will do the 'no results means no results' thing. Perhaps I could be more explicit about where we are searching.
  • @tobsto thanks for the feedback!

    I'm not very familiar with group collections - I personally never use them, so I'm a bit slow on getting them finalised. I do note however, that certain attachments aren't supported by Zotero Groups at all. I can't seem to add attachments even with the main Zotero application on the desktop.

    Could you be a little more specific on the groups and attachments? Do you own the groups or is it someone else? Are the attachments underneath a parent item? How do you upload the attachments? etc. All details are helpful.

    I've noticed that it's possible to get into a state where the OAUTH (bloody OAUTH! ><) credentials don't get saved. The library I'm using is very old and I want to replace it but it appears that Zotero hasn't moved on to OAUTH2. This is causing issues for some users and it *may* be the problem for you. I need to look into this a little more.
  • Thanks @OniDaito for the quick answer.

    Here comes the additional information:

    - I own the group
    - the attachments are PDF files.
    - I can upload and download them with the Zotero Client under Windows and Linux.
    - The attachments are all underneath a parent item (usually they were added as arxiv.org articles via the Firefox plugin)

    Thanks for you help!

  • Version 1.1.2 is now out. This is a temporary installment whilst I add a few more group features which might take a bit more time.

    Local group / My Library is now the first in the list. There are a few more UX changes as well.

    @protein%20function I have temporary fix to try. Remove all cookies and saved data from your browser, then select "reset and sync" inside zotdroid and log back into Zotero.

    The reason? I've noticed that OAUTH handoff from the browser to zotdroid doesnt always work and the userid does not get filled in. This is quite annoying and I suspect it is down to the old OAUTH library I'm using. I need to check if I can use the updated Google OAUTH2 library with Zotero. It needs to happen at somepoint. It's not something inside my control at present - I'm looking into it.

    @tobsto version 1.1.2 should hopefully work for you.

    @fbennett I think I've figured out what you mean regarding the unassigned items. In the LOCAL group it's fine, but the Shared Groups have problems. I need to do a little more work to assign non-collection items to their correct groups. I should be able to fix that but it's a bit more work than I thought. For now, only group items under collections work. I'll look into adding this functionality in 1.1.3

    I've fixed the no-search-results and added a search hint. Hopefully it's a bit more usable now.

    I'm looking into the Groups API more so I can fix these non-collection Shared group items. Hopefully, that can all be sorted next week.

    Now back to the MRes :)
  • I finally managed to make zotdroid work seamlessly with my webdav on box (I mean I could also open PDF on my device). With today's update it keeps on sending crash reports when I try to open a PDF. What happened? I own OnePlus phone. Thanks in advance for your help
  • @maurone thanks for the feedback.

    The group libraries were not working correctly for a number of users so I've been looking into that.

    Can you be more specific with your setup? Android version is always helpful, as is any settings you can share with me?

    I have a feeling that when updates to Zotdroid are made, certain fields are not properly filled in. I wonder if the upgrade process wipes things like userid and username - stuff that you will need in order to download atachments.

    Can you confirm that ALL of your settings in general are correct and filled in please?

    The sooner I can get a better OAUTH library and settings into ZotDroid the better I reckon.
  • Thanks for the reply. Android version 8.0.0. I use https://dav.box.com/dav as a web dav service, that is perfectly working on my desktop version of Zotero. Yes I confirm that all the settings are correct and filled in on the device (BTW they were the same working on the previous version of Zotdroid). Keep up with your good work, Zotdroid is a really good app!
  • Hello all. v1.1.3 is out.

    I must apologise - in trying to fix the groups, another bug wormed it's way in and got past all my tests and emulators. Essentially, it was causing a lot of download problems for folk. So I'm sorry about that. Groups are more complicated than I thought and will require further work to get them absolutely spot on.

    Secondly, I've noticed that a lot of the download errors are due to a) incorrect download directories or b) OAUTH not filling in the correct parameters. It is this latter problem that is plaguing us at the moment because OAUTH browser handling is really not working 100%. This is due to a couple of factors that are outside my control.

    I'm hoping I can switch to OAUTH2 and use the provided Google library in the near future. This would fix the problem. In the meantime, I'll need to hunt for a better solution.

  • Hello everyone!

    v1.1.4 is out now

    This is a massive fix for a small problem - hanging items in groups. @fbennett this should fix your problem if you upgrade, run a sync and then restart zotdroid.

    I've had to take a long look at how to upgrade databases and the like and it's tricky, and no mistake! I've also been busy writing up my thesis so I've been out of the Android game for a bit.

    A few people have asked for adding to Zotdroid from a browser. Now it turns out that as well as connectors, there is a 'share' option in browsers that permits programs like Instagram to share links. This could work for us.

    If people want this feature, I'll see about adding it but it will take a while as I'll need to redo the oauth system (I need to do that anyway) because reasons. But it seems like a feature people want.
  • @OniDaito
    just so you know, I'm getting the same errors with regard to the OAUTH not filling in the correct parameters, and thus webdav not working.
    Have tried all the suggestions made here, but still not bale to download pdfs
  • Hello all

    Version 1.1.5 is now out.

    This version completely replaces the OAUTH mechanism. It's a big update!

    I've had to do this because the failures like the one @henge gets, do keep happening and it's to do with the browser handoff from OAUTH not always completing properly. As such, the userid is not set and downloads cannot work.

    This version should fix this problem. It's been through a lot of testing - I just hope no new bugs are introduced! *fingers crossed*

    Thanks for all the help.
  • Magic!
    I'll be testing as soon as I get home!
    Thanks @OniDaito, your hard work is much appreciated.
  • I've tried using ZotDroid again with version 1.1.5 that I just installed from the Play Store.

    The most serious problems are:

    A. ZotDroid cannot use the collection of PDFs that exists locally in the tablet (when that collection respects the Zotero folder/subfolder hierarchy).

    B. ZotDroid takes very long for common operations (in the order of 20 seconds to 1 to 2 minutes, which is way too long for real).

    Details follow:

    1. The menu with the collections (in my case there are about 100 collections) takes about 1 minute to appear.

    2. Clicking on any collection takes between 30 seconds and over a minute to bring me to that collection.

    3. Clicking "<- BACK" in the collection pane takes between 20 seconds and 40 seconds to bring me back to the top-level listing.

    4. Ordering items (sorting) takes about 30 seconds to over a minute, even if there are only a few items (< than 40).

    5. I do not see an option for reverse order sorting (i.e., choosing if order is increasing or decreasing).

    6. It does not seem possible to use (in a sensible way) the PDFs that exist locally. In the tablet, I have a directory (folder) that is an exact replica of my directory (folder) structure of my complete Zotero attachments in my computers. So I have, say


    I have specified, in ZotDroid, that the Downloads Location is


    but ZotDroid complaints it cannot find the attachment. It says
    "WebDav download error. Problem writing to location...."

    The problem is that ZotDroid looks for the file


    instead of respecting the complete path in the zotero storage folder structure
    (i.e., it does not go down through, say, E3AI6PPR). I have verified that is the case because when I copy some_paper.pdf directly under Zotero-storage, then ZotDroid can find and open the file.

    That ZotDroid ignores the real Zotero folder structure is a show stopper for those of us that keep our whole Zotero storage in sync. Respecting the exact Zotero storage folder structure is essential, since Zotero allows storing attachments with the same name for different items.

    Android version: 5.0.2

    Hardware: BQ Edison 3 3G
    Processor: Quadcore Cortex A7, 1.30 GHz
    RAM: 2 GB
    Internal storage: 32 GB.
    Number of items in Zotero library: about 5000
  • Hello @rdiaz - thank-you for the detailed reply. This is very useful. I will answer each point as best as I can.

    1) The issue with the downloading has come up a couple of times. Finding a world readable and writable directory is actually harder than it sounds thanks to security settings.

    Zotero themselves, I believe, *do not* recommend syncing files outside of zotero itself. Indeed, there is a particular method they follow for webdav storage that is different to the one you describe.

    My own library won't fit on an SD-Card - initially I envisioned only partial downloads of a users library, not an entire library. Zotdroid was built with large libraries in mind. I consider the saving hierarchy to be a bit of an edge case, however i'll put it on the list to fix. It was never on the original spec unfortunately. I consider it less important than ....

    2) The speed issue. I've noticed this myself on my older tablet. It is quite annoying and I'd like to get it fixed ASAP. The problem is the classic memory / cpu tradeoff. Large libraries take a long time to completely load into memory. Everytime you make a search one needs to look through the entire list, showing only the first 50 or so items.

    I will look into speeding this process up asap. I agree, it's quite a pain.

    3) Searching with descending order is trivially easy from a technical point of view *but* not from a UX view. I'm running out of screen space and one needs to remember that smaller devices should be supported.

    Im thinking I could put a toolbar as the first item in the scrolling list maybe? I could move the search options out of the right hand menu, but it will need some thought. UX is a tricky beast to tame, but I agree, it's an important option.

    I'll take a look at the speed issue first, then have a look at the directory bit. Thanks for the headsup.
  • edited March 27, 2018
    First of all, thanks for your work! It's great to finally have an Android client that works and enables to use the library on the go. I've only installed it yesterday but so far I'm quite happy. I use my own webdav server (not the Zotero storage) and that also works fine.

    Some things are still a bit basic so I hope you will continue to work on it. It probably doesn't have enough features for complex literature work, but it't quite enough if I'm on a train and want to spend the time going through a few papers and read the PDFs.

    The improvements that would be useful for me are:

    - store the PDFs on the SD card. I know this is tricky in terms of Android security, and I think you can only ask for access to a specific subdirectory under the data directory on the SD card, not a custom directory. But it's a space issue.

    - option to synchronise all PDFs from the whole library, so that all PDFs are on the device (this requires SD storage, see above). When I'm out I may not have internet, and I may not know in advance which PDFs I need, so I want to have my full library with me.

    - include the abstracts. This is probably a database issue as it would blow up the size enormously, but is important for searching.

    I'm not sure if you should ask for money at this stage. I was quite happy to pay it and support/encourage the development, and it's less than I'd pay for a coffee on the train, so I don't mind much. Still, as it's still quite unpolished, it's perhaps a bit of a psychological barrier. Perhaps you can offer a free version with limited functionality so that people can try it out before buying?
  • @OniDaito on the PDFs:

    I do not think Zotero itself does not recommended syncing files outside of zotero itself. The warnings in, for example, https://www.zotero.org/support/sync, refer to syncing the db, not the PDFs themselves: "While using a third-party tool to sync the 'storage' subdirectory of the Zotero data directory is generally safe, (...)".

    As for having the whole library in the tablet: I think this is a reasonable use case. @smatthie seems to agree :-) Nowdays, tablets with 32 and 64 GB are not uncommon, and getting more storage via SD cards is easily possible.

    With respect to the paths, my comment is that you are actually stripping away part of the path, and leaving only the file name. By stripping the directory, one can get into problems of different files with the same file name (nothing prevents you from doing this in Zotero).

    And if another application (say Syncthing or your favourite one) takes care of syncing the whole hierarchy of directories "Finding a world readable and writable directory is actually harder than it sounds thanks to security settings." would no longer be a problem. The only thing that ZotDroid would need to do is read the files as given by the path. (This setup works fine for me with Zotero-to-Referey: https://github.com/rdiaz02/Zotero-to-Referey --- but maybe things are messier with versions of Android > 5).

    I also agree with @smatthie that abstracts are important.
  • I want to buy this app on the ios App Store
Sign In or Register to comment.