diff --git a/src/org/geometerplus/fbreader/network/NetworkLibrary.java b/src/org/geometerplus/fbreader/network/NetworkLibrary.java index 414cc510f..5626acc1a 100644 --- a/src/org/geometerplus/fbreader/network/NetworkLibrary.java +++ b/src/org/geometerplus/fbreader/network/NetworkLibrary.java @@ -227,7 +227,11 @@ public class NetworkLibrary { myLinks = new CompositeList(linksList, new LinksComparator()); } - public void initialize() throws ZLNetworkException { + private boolean myIsAlreadyInitialized; + public synchronized void initialize() throws ZLNetworkException { + if (myIsAlreadyInitialized) { + return; + } final LinksComparator comparator = new LinksComparator(); try { @@ -243,18 +247,21 @@ public class NetworkLibrary { throw e; } - NetworkDatabase.Instance().loadCustomLinks( - new NetworkDatabase.ICustomLinksHandler() { - public void handleCustomLinkData(int id, String siteName, - String title, String summary, String icon, Map links) { - final ICustomNetworkLink link = OPDSLinkReader.createCustomLink(id, siteName, title, summary, icon, links); - if (link != null) { - addLinkInternal(myCustomLinks, link, comparator); - link.setSaveLinkListener(myChangesListener); + final NetworkDatabase db = NetworkDatabase.Instance(); + if (db != null) { + db.loadCustomLinks( + new NetworkDatabase.ICustomLinksHandler() { + public void handleCustomLinkData(int id, String siteName, + String title, String summary, String icon, Map links) { + final ICustomNetworkLink link = OPDSLinkReader.createCustomLink(id, siteName, title, summary, icon, links); + if (link != null) { + addLinkInternal(myCustomLinks, link, comparator); + link.setSaveLinkListener(myChangesListener); + } } } - } - ); + ); + } /*testDate(new ATOMUpdated(2010, 1, 1, 1, 0, 0, 0, 2, 0), new ATOMUpdated(2009, 12, 31, 23, 0, 0, 0, 0, 0)); @@ -274,6 +281,7 @@ public class NetworkLibrary { new ATOMUpdated(2012, 2, 15, 23, 40, 1, 0, 3, 30)); testDate(new ATOMUpdated(2012, 2, 15, 23, 40, 0, 0.001f, 3, 30), new ATOMUpdated(2012, 2, 15, 23, 40, 0, 0, 3, 30));*/ + myIsAlreadyInitialized = true; } /*private void testDate(ATOMDateConstruct date1, ATOMDateConstruct date2) { diff --git a/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidLibrary.java b/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidLibrary.java index 5527032f7..14991b987 100644 --- a/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidLibrary.java +++ b/src/org/geometerplus/zlibrary/ui/android/library/ZLAndroidLibrary.java @@ -29,6 +29,7 @@ import android.net.Uri; import org.geometerplus.zlibrary.core.library.ZLibrary; import org.geometerplus.zlibrary.core.filesystem.ZLResourceFile; +import org.geometerplus.zlibrary.core.network.ZLNetworkException; import org.geometerplus.zlibrary.ui.android.R; import org.geometerplus.zlibrary.ui.android.view.ZLAndroidPaintContext; @@ -38,6 +39,8 @@ import org.geometerplus.zlibrary.ui.android.dialogs.ZLAndroidDialogManager; import org.geometerplus.android.fbreader.network.BookDownloader; import org.geometerplus.android.fbreader.network.BookDownloaderService; +import org.geometerplus.fbreader.network.NetworkLibrary; + public final class ZLAndroidLibrary extends ZLibrary { private ZLAndroidActivity myActivity; private final Application myApplication; @@ -81,7 +84,12 @@ public final class ZLAndroidLibrary extends ZLibrary { externalUrl = false; } // FIXME: initialize network library and use rewriteUrl!!! - //reference = NetworkLibrary.Instance().rewriteUrl(reference, externalUrl); + final NetworkLibrary nLibrary = NetworkLibrary.Instance(); + try { + nLibrary.initialize(); + } catch (ZLNetworkException e) { + } + reference = NetworkLibrary.Instance().rewriteUrl(reference, externalUrl); intent.setData(Uri.parse(reference)); myActivity.startActivity(intent); }