From b3b5fb1bf9da94a4656a2006e61397eb41277acc Mon Sep 17 00:00:00 2001 From: Nikolay Pultsin Date: Mon, 20 Jun 2011 18:50:13 +0100 Subject: [PATCH] updated API, fixed exception in initialization --- src/org/geometerplus/android/fbreader/FBReader.java | 6 +++++- .../fbreader/api/ApiClientImplementation.java | 13 ++++++++++--- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/src/org/geometerplus/android/fbreader/FBReader.java b/src/org/geometerplus/android/fbreader/FBReader.java index d80c6bb9c..e39ac342d 100644 --- a/src/org/geometerplus/android/fbreader/FBReader.java +++ b/src/org/geometerplus/android/fbreader/FBReader.java @@ -22,6 +22,7 @@ package org.geometerplus.android.fbreader; import java.util.*; import android.app.SearchManager; +import android.content.ActivityNotFoundException; import android.content.Intent; import android.net.Uri; import android.os.Bundle; @@ -188,7 +189,10 @@ public final class FBReader extends ZLAndroidActivity { ((PopupPanel)fbReader.getPopupById(NavigationPopup.ID)).createControlPanel(this, root, PopupWindow.Location.Bottom); ((PopupPanel)fbReader.getPopupById(SelectionPopup.ID)).createControlPanel(this, root, PopupWindow.Location.Floating); - startActivityForResult(new Intent(PluginApi.ACTION_REGISTER), COLLECT_PLUGINS); + try { + startActivityForResult(new Intent(PluginApi.ACTION_REGISTER), COLLECT_PLUGINS); + } catch (ActivityNotFoundException e) { + } } @Override diff --git a/src/org/geometerplus/android/fbreader/api/ApiClientImplementation.java b/src/org/geometerplus/android/fbreader/api/ApiClientImplementation.java index 5030c38bd..acc972fb1 100644 --- a/src/org/geometerplus/android/fbreader/api/ApiClientImplementation.java +++ b/src/org/geometerplus/android/fbreader/api/ApiClientImplementation.java @@ -10,13 +10,19 @@ import android.content.*; import android.os.IBinder; public class ApiClientImplementation implements ServiceConnection, Api, ApiMethods { + public static interface ConnectionListener { + void onConnected(); + } + private static String ACTION_API = "android.fbreader.action.API"; private final Context myContext; + private ConnectionListener myListener; private volatile ApiInterface myInterface; - public ApiClientImplementation(Context context) { + public ApiClientImplementation(Context context, ConnectionListener listener) { myContext = context; + myListener = listener; connect(); } @@ -37,12 +43,13 @@ public class ApiClientImplementation implements ServiceConnection, Api, ApiMetho } public synchronized void onServiceConnected(ComponentName className, IBinder service) { - System.err.println("onServiceConnected call"); myInterface = ApiInterface.Stub.asInterface(service); + if (myListener != null) { + myListener.onConnected(); + } } public synchronized void onServiceDisconnected(ComponentName name) { - System.err.println("onServiceDisconnected call"); myInterface = null; }