diff options
-rw-r--r-- | src/org/openintents/openpgp/util/OpenPgpServiceConnection.java | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java b/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java index 0395a7bc5..2700caf01 100644 --- a/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java +++ b/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java @@ -26,9 +26,11 @@ import android.os.IBinder; public class OpenPgpServiceConnection { - // interface to create callbacks for onServiceConnected + // callback interface public interface OnBound { public void onBound(IOpenPgpService service); + + public void onError(Exception e); } private Context mApplicationContext; @@ -39,19 +41,19 @@ public class OpenPgpServiceConnection { private OnBound mOnBoundListener; /** - * Create new OpenPgpServiceConnection + * Create new connection * * @param context * @param providerPackageName specify package name of OpenPGP provider, * e.g., "org.sufficientlysecure.keychain" */ public OpenPgpServiceConnection(Context context, String providerPackageName) { - this.mApplicationContext = context.getApplicationContext(); + this.mApplicationContext = context; this.mProviderPackageName = providerPackageName; } /** - * Create new OpenPgpServiceConnection + * Create new connection with callback * * @param context * @param providerPackageName specify package name of OpenPGP provider, @@ -60,8 +62,7 @@ public class OpenPgpServiceConnection { */ public OpenPgpServiceConnection(Context context, String providerPackageName, OnBound onBoundListener) { - this.mApplicationContext = context.getApplicationContext(); - this.mProviderPackageName = providerPackageName; + this(context, providerPackageName); this.mOnBoundListener = onBoundListener; } @@ -91,23 +92,25 @@ public class OpenPgpServiceConnection { * * @return */ - public boolean bindToService() { + public void bindToService() { // if not already bound... if (mService == null) { try { - Intent serviceIntent = new Intent(); - serviceIntent.setAction(IOpenPgpService.class.getName()); + Intent serviceIntent = new Intent(OpenPgpApi.SERVICE_INTENT); // NOTE: setPackage is very important to restrict the intent to this provider only! serviceIntent.setPackage(mProviderPackageName); mApplicationContext.bindService(serviceIntent, mServiceConnection, Context.BIND_AUTO_CREATE); - - return true; } catch (Exception e) { - return false; + if (mOnBoundListener != null) { + mOnBoundListener.onError(e); + } } } else { - return true; + // already bound, but also inform client about it with callback + if (mOnBoundListener != null) { + mOnBoundListener.onBound(mService); + } } } |