diff options
Diffstat (limited to 'OpenPGP-Keychain-API/libraries/openpgp-api-library/src/org/openintents')
| -rw-r--r-- | OpenPGP-Keychain-API/libraries/openpgp-api-library/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java | 40 | 
1 files changed, 35 insertions, 5 deletions
| diff --git a/OpenPGP-Keychain-API/libraries/openpgp-api-library/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java b/OpenPGP-Keychain-API/libraries/openpgp-api-library/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java index c80656c52..0395a7bc5 100644 --- a/OpenPGP-Keychain-API/libraries/openpgp-api-library/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java +++ b/OpenPGP-Keychain-API/libraries/openpgp-api-library/src/org/openintents/openpgp/util/OpenPgpServiceConnection.java @@ -25,34 +25,64 @@ import android.content.ServiceConnection;  import android.os.IBinder;  public class OpenPgpServiceConnection { + +    // interface to create callbacks for onServiceConnected +    public interface OnBound { +        public void onBound(IOpenPgpService service); +    } +      private Context mApplicationContext; -    private boolean mBound;      private IOpenPgpService mService;      private String mProviderPackageName; +    private OnBound mOnBoundListener; + +    /** +     * Create new OpenPgpServiceConnection +     * +     * @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.mProviderPackageName = providerPackageName;      } +    /** +     * Create new OpenPgpServiceConnection +     * +     * @param context +     * @param providerPackageName specify package name of OpenPGP provider, +     *                            e.g., "org.sufficientlysecure.keychain" +     * @param onBoundListener     callback, executed when connection to service has been established +     */ +    public OpenPgpServiceConnection(Context context, String providerPackageName, +                                    OnBound onBoundListener) { +        this.mApplicationContext = context.getApplicationContext(); +        this.mProviderPackageName = providerPackageName; +        this.mOnBoundListener = onBoundListener; +    } +      public IOpenPgpService getService() {          return mService;      }      public boolean isBound() { -        return mBound; +        return (mService != null);      }      private ServiceConnection mServiceConnection = new ServiceConnection() {          public void onServiceConnected(ComponentName name, IBinder service) {              mService = IOpenPgpService.Stub.asInterface(service); -            mBound = true; +            if (mOnBoundListener != null) { +                mOnBoundListener.onBound(mService); +            }          }          public void onServiceDisconnected(ComponentName name) {              mService = null; -            mBound = false;          }      }; @@ -63,7 +93,7 @@ public class OpenPgpServiceConnection {       */      public boolean bindToService() {          // if not already bound... -        if (mService == null && !mBound) { +        if (mService == null) {              try {                  Intent serviceIntent = new Intent();                  serviceIntent.setAction(IOpenPgpService.class.getName()); | 
