From 3efa76579eba3f7378bc42fef6df8b002618bb00 Mon Sep 17 00:00:00 2001 From: Tom Hacohen Date: Tue, 30 Oct 2018 21:34:54 +0000 Subject: [PATCH] Fix crash with missing contact downloader when importing. --- .../syncadapter/syncadapter/ContactsSyncManager.java | 10 ++++++++-- .../syncadapter/ui/importlocal/ImportFragment.java | 4 +++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/etesync/syncadapter/syncadapter/ContactsSyncManager.java b/app/src/main/java/com/etesync/syncadapter/syncadapter/ContactsSyncManager.java index e24fcb6c..d0d7669e 100644 --- a/app/src/main/java/com/etesync/syncadapter/syncadapter/ContactsSyncManager.java +++ b/app/src/main/java/com/etesync/syncadapter/syncadapter/ContactsSyncManager.java @@ -160,7 +160,7 @@ public class ContactsSyncManager extends SyncManager { protected void processSyncEntry(SyncEntry cEntry) throws IOException, ContactsStorageException, CalendarStorageException { InputStream is = new ByteArrayInputStream(cEntry.getContent().getBytes(Charsets.UTF_8)); - Contact.Downloader downloader = new ResourceDownloader(); + Contact.Downloader downloader = new ResourceDownloader(context); Contact[] contacts = Contact.fromStream(is, Charsets.UTF_8, downloader); if (contacts.length == 0) { @@ -242,7 +242,13 @@ public class ContactsSyncManager extends SyncManager { // downloader helper class - private class ResourceDownloader implements Contact.Downloader { + public static class ResourceDownloader implements Contact.Downloader { + Context context; + + public ResourceDownloader(Context context) { + this.context = context; + } + @Override public byte[] download(String url, String accepts) { HttpUrl httpUrl = HttpUrl.parse(url); diff --git a/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.java b/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.java index 49d6b0e0..13589970 100644 --- a/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.java +++ b/app/src/main/java/com/etesync/syncadapter/ui/importlocal/ImportFragment.java @@ -25,6 +25,7 @@ import com.etesync.syncadapter.resource.LocalAddressBook; import com.etesync.syncadapter.resource.LocalCalendar; import com.etesync.syncadapter.resource.LocalContact; import com.etesync.syncadapter.resource.LocalEvent; +import com.etesync.syncadapter.syncadapter.ContactsSyncManager; import com.etesync.syncadapter.ui.Refreshable; import org.apache.commons.codec.Charsets; @@ -288,7 +289,8 @@ public class ImportFragment extends DialogFragment { } } else if (info.type.equals(CollectionInfo.Type.ADDRESS_BOOK)) { // FIXME: Handle groups and download icon? - final Contact[] contacts = Contact.fromStream(importStream, Charsets.UTF_8, null); + Contact.Downloader downloader = new ContactsSyncManager.ResourceDownloader(getContext()); + final Contact[] contacts = Contact.fromStream(importStream, Charsets.UTF_8, downloader); if (contacts.length == 0) { App.log.warning("Empty/invalid file.");