private void updateFlingerOptions() {
   // magic communication with surface flinger.
   try {
     IBinder flinger = ServiceManager.getService("SurfaceFlinger");
     if (flinger != null) {
       Parcel data = Parcel.obtain();
       Parcel reply = Parcel.obtain();
       data.writeInterfaceToken("android.ui.ISurfaceComposer");
       flinger.transact(1010, data, reply, 0);
       @SuppressWarnings("unused")
       int showCpu = reply.readInt();
       @SuppressWarnings("unused")
       int enableGL = reply.readInt();
       int showUpdates = reply.readInt();
       updateCheckBox(mShowScreenUpdates, showUpdates != 0);
       @SuppressWarnings("unused")
       int showBackground = reply.readInt();
       int disableOverlays = reply.readInt();
       updateCheckBox(mDisableOverlays, disableOverlays != 0);
       reply.recycle();
       data.recycle();
     }
   } catch (RemoteException ex) {
   }
 }
  @Override // Binder call
  public void registerCallback(IDisplayManagerCallback callback) {
    if (callback == null) {
      throw new IllegalArgumentException("listener must not be null");
    }

    synchronized (mSyncRoot) {
      int callingPid = Binder.getCallingPid();
      if (mCallbacks.get(callingPid) != null) {
        throw new SecurityException(
            "The calling process has already " + "registered an IDisplayManagerCallback.");
      }

      CallbackRecord record = new CallbackRecord(callingPid, callback);
      try {
        IBinder binder = callback.asBinder();
        binder.linkToDeath(record, 0);
      } catch (RemoteException ex) {
        // give up
        throw new RuntimeException(ex);
      }

      mCallbacks.put(callingPid, record);
    }
  }
 @Override
 protected Void doInBackground(Void... params) {
   String[] services;
   try {
     services = ServiceManager.listServices();
   } catch (RemoteException e) {
     return null;
   }
   for (String service : services) {
     IBinder obj = ServiceManager.checkService(service);
     if (obj != null) {
       Parcel data = Parcel.obtain();
       try {
         obj.transact(IBinder.SYSPROPS_TRANSACTION, data, null, 0);
       } catch (RemoteException e) {
       } catch (Exception e) {
         Log.i(
             "DevSettings",
             "Somone wrote a bad service '" + service + "' that doesn't like to be poked: " + e);
       }
       data.recycle();
     }
   }
   return null;
 }
    private void registerClientLocked(IMediaRouterClient client,
            int pid, String packageName, int userId, boolean trusted) {
        final IBinder binder = client.asBinder();
        ClientRecord clientRecord = mAllClientRecords.get(binder);
        if (clientRecord == null) {
            boolean newUser = false;
            UserRecord userRecord = mUserRecords.get(userId);
            if (userRecord == null) {
                userRecord = new UserRecord(userId);
                newUser = true;
            }
            clientRecord = new ClientRecord(userRecord, client, pid, packageName, trusted);
            try {
                binder.linkToDeath(clientRecord, 0);
            } catch (RemoteException ex) {
                throw new RuntimeException("Media router client died prematurely.", ex);
            }

            if (newUser) {
                mUserRecords.put(userId, userRecord);
                initializeUserLocked(userRecord);
            }

            userRecord.mClientRecords.add(clientRecord);
            mAllClientRecords.put(binder, clientRecord);
            initializeClientLocked(clientRecord);
        }
    }
  @SuppressWarnings("unchecked")
  private ParceledListSlice(Parcel p, ClassLoader loader) {
    final int N = p.readInt();
    mList = new ArrayList<T>(N);
    if (DEBUG) Log.d(TAG, "Retrieving " + N + " items");
    if (N <= 0) {
      return;
    }

    Parcelable.Creator<?> creator = p.readParcelableCreator(loader);
    Class<?> listElementClass = null;

    int i = 0;
    while (i < N) {
      if (p.readInt() == 0) {
        break;
      }

      final T parcelable = p.readCreator(creator, loader);
      if (listElementClass == null) {
        listElementClass = parcelable.getClass();
      } else {
        verifySameType(listElementClass, parcelable.getClass());
      }

      mList.add(parcelable);

      if (DEBUG) Log.d(TAG, "Read inline #" + i + ": " + mList.get(mList.size() - 1));
      i++;
    }
    if (i >= N) {
      return;
    }
    final IBinder retriever = p.readStrongBinder();
    while (i < N) {
      if (DEBUG) Log.d(TAG, "Reading more @" + i + " of " + N + ": retriever=" + retriever);
      Parcel data = Parcel.obtain();
      Parcel reply = Parcel.obtain();
      data.writeInt(i);
      try {
        retriever.transact(IBinder.FIRST_CALL_TRANSACTION, data, reply, 0);
      } catch (RemoteException e) {
        Log.w(TAG, "Failure retrieving array; only received " + i + " of " + N, e);
        return;
      }
      while (i < N && reply.readInt() != 0) {
        final T parcelable = reply.readCreator(creator, loader);
        verifySameType(listElementClass, parcelable.getClass());

        mList.add(parcelable);

        if (DEBUG) Log.d(TAG, "Read extra #" + i + ": " + mList.get(mList.size() - 1));
        i++;
      }
      reply.recycle();
      data.recycle();
    }
  }
 public void onReceive(Context context, Intent intent) {
   try {
     IBinder caller = intent.getIBinderExtra("caller");
     Parcel data = Parcel.obtain();
     data.writeInterfaceToken(LaunchpadActivity.LAUNCH);
     data.writeString(BroadcastTest.RECEIVER_REMOTE);
     caller.transact(BroadcastTest.GOT_RECEIVE_TRANSACTION, data, null, 0);
     data.recycle();
   } catch (RemoteException ex) {
   }
 }
Пример #7
0
  private void writeFlingerOptions() {
    try {
      IBinder flinger = ServiceManager.getService("SurfaceFlinger");
      if (flinger != null) {
        Parcel data = Parcel.obtain();
        data.writeInterfaceToken("android.ui.ISurfaceComposer");
        data.writeInt(mShowScreenUpdates.isChecked() ? 1 : 0);
        flinger.transact(1002, data, null, 0);
        data.recycle();

        updateFlingerOptions();
      }
    } catch (RemoteException ex) {
    }
  }
 @Override
 public void sendAnnounce(
     int id,
     java.lang.String imageAnnounce,
     java.lang.String header,
     java.lang.String body,
     long timestamp,
     java.lang.String openInPhoneAction)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     _data.writeInt(id);
     _data.writeString(imageAnnounce);
     _data.writeString(header);
     _data.writeString(body);
     _data.writeLong(timestamp);
     _data.writeString(openInPhoneAction);
     mRemote.transact(Stub.TRANSACTION_sendAnnounce, _data, _reply, 0);
     _reply.readException();
   } finally {
     _reply.recycle();
     _data.recycle();
   }
 }
 public boolean isMyLocationButtonEnabled()
     throws RemoteException
 {
     Parcel parcel;
     Parcel parcel1;
     boolean flag;
     flag = false;
     parcel = Parcel.obtain();
     parcel1 = Parcel.obtain();
     int i;
     parcel.writeInterfaceToken("com.google.android.gms.maps.internal.IUiSettingsDelegate");
     kn.transact(11, parcel, parcel1, 0);
     parcel1.readException();
     i = parcel1.readInt();
     if (i != 0)
     {
         flag = true;
     }
     parcel1.recycle();
     parcel.recycle();
     return flag;
     Exception exception;
     exception;
     parcel1.recycle();
     parcel.recycle();
     throw exception;
 }
 @Override
 public int register(
     com.sonyericsson.extras.liveview.IPluginServiceCallbackV1 cb,
     java.lang.String imageMenu,
     java.lang.String pluginName,
     boolean selectableMenu,
     java.lang.String packageName)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   int _result;
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     _data.writeStrongBinder((((cb != null)) ? (cb.asBinder()) : (null)));
     _data.writeString(imageMenu);
     _data.writeString(pluginName);
     _data.writeInt(((selectableMenu) ? (1) : (0)));
     _data.writeString(packageName);
     mRemote.transact(Stub.TRANSACTION_register, _data, _reply, 0);
     _reply.readException();
     _result = _reply.readInt();
   } finally {
     _reply.recycle();
     _data.recycle();
   }
   return _result;
 }
  private void writeDisableOverlaysOption() {
    try {
      IBinder flinger = ServiceManager.getService("SurfaceFlinger");
      if (flinger != null) {
        Parcel data = Parcel.obtain();
        data.writeInterfaceToken("android.ui.ISurfaceComposer");
        final int disableOverlays = mDisableOverlays.isChecked() ? 1 : 0;
        data.writeInt(disableOverlays);
        flinger.transact(1008, data, null, 0);
        data.recycle();

        updateFlingerOptions();
      }
    } catch (RemoteException ex) {
    }
  }
 public void setZoomGesturesEnabled(boolean flag)
     throws RemoteException
 {
     Parcel parcel;
     Parcel parcel1;
     int i;
     i = 0;
     parcel = Parcel.obtain();
     parcel1 = Parcel.obtain();
     parcel.writeInterfaceToken("com.google.android.gms.maps.internal.IUiSettingsDelegate");
     if (flag)
     {
         i = 1;
     }
     parcel.writeInt(i);
     kn.transact(5, parcel, parcel1, 0);
     parcel1.readException();
     parcel1.recycle();
     parcel.recycle();
     return;
     Exception exception;
     exception;
     parcel1.recycle();
     parcel.recycle();
     throw exception;
 }
Пример #13
0
        public fk a(b b1, int i, int j, int k, String s)
            throws RemoteException
        {
            Parcel parcel;
            Parcel parcel1;
            parcel = Parcel.obtain();
            parcel1 = Parcel.obtain();
            parcel.writeInterfaceToken("com.google.android.gms.plus.internal.IPlusService");
            if (b1 == null)
            {
                break MISSING_BLOCK_LABEL_103;
            }
            b1 = b1.asBinder();
_L1:
            parcel.writeStrongBinder(b1);
            parcel.writeInt(i);
            parcel.writeInt(j);
            parcel.writeInt(k);
            parcel.writeString(s);
            kn.transact(16, parcel, parcel1, 0);
            parcel1.readException();
            b1 = com.google.android.gms.internal.fk.a.A(parcel1.readStrongBinder());
            parcel1.recycle();
            parcel.recycle();
            return b1;
            b1 = null;
              goto _L1
 public final void scheduleStopService(IBinder token) throws RemoteException {
   Parcel data = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   data.writeStrongBinder(token);
   mRemote.transact(SCHEDULE_STOP_SERVICE_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
   data.recycle();
 }
Пример #15
0
 public boolean onMyLocationButtonClick()
     throws RemoteException
 {
     Parcel parcel;
     Parcel parcel1;
     boolean flag;
     flag = true;
     parcel = Parcel.obtain();
     parcel1 = Parcel.obtain();
     int i;
     parcel.writeInterfaceToken("com.google.android.gms.maps.internal.IOnMyLocationButtonClickListener");
     zzle.transact(1, parcel, parcel1, 0);
     parcel1.readException();
     i = parcel1.readInt();
     if (i == 0)
     {
         flag = false;
     }
     parcel1.recycle();
     parcel.recycle();
     return flag;
     Exception exception;
     exception;
     parcel1.recycle();
     parcel.recycle();
     throw exception;
 }
 public void scheduleCrash(String msg) throws RemoteException {
   Parcel data = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   data.writeString(msg);
   mRemote.transact(SCHEDULE_CRASH_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
   data.recycle();
 }
Пример #17
0
 @Override
 public com.xively.android.service.Response deleteDatapoint(
     int feedId, java.lang.String datastreamId, java.lang.String datapointAt)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   com.xively.android.service.Response _result;
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     _data.writeInt(feedId);
     _data.writeString(datastreamId);
     _data.writeString(datapointAt);
     mRemote.transact(Stub.TRANSACTION_deleteDatapoint, _data, _reply, 0);
     _reply.readException();
     if ((0 != _reply.readInt())) {
       _result = com.xively.android.service.Response.CREATOR.createFromParcel(_reply);
     } else {
       _result = null;
     }
   } finally {
     _reply.recycle();
     _data.recycle();
   }
   return _result;
 }
Пример #18
0
 public void b(String s1, boolean flag)
     throws RemoteException
 {
     Parcel parcel;
     Parcel parcel1;
     int i;
     i = 0;
     parcel = Parcel.obtain();
     parcel1 = Parcel.obtain();
     parcel.writeInterfaceToken("com.google.android.gms.ads.identifier.internal.IAdvertisingIdService");
     parcel.writeString(s1);
     if (flag)
     {
         i = 1;
     }
     parcel.writeInt(i);
     lb.transact(4, parcel, parcel1, 0);
     parcel1.readException();
     parcel1.recycle();
     parcel.recycle();
     return;
     s1;
     parcel1.recycle();
     parcel.recycle();
     throw s1;
 }
Пример #19
0
 public boolean isValidPurchase(String s)
     throws RemoteException
 {
     Parcel parcel;
     Parcel parcel1;
     boolean flag;
     flag = true;
     parcel = Parcel.obtain();
     parcel1 = Parcel.obtain();
     int i;
     parcel.writeInterfaceToken("com.google.android.gms.ads.internal.purchase.client.IPlayStorePurchaseListener");
     parcel.writeString(s);
     a.transact(1, parcel, parcel1, 0);
     parcel1.readException();
     i = parcel1.readInt();
     if (i == 0)
     {
         flag = false;
     }
     parcel1.recycle();
     parcel.recycle();
     return flag;
     s;
     parcel1.recycle();
     parcel.recycle();
     throw s;
 }
 @Override
 public int setupConnection(
     android.os.Bundle args, org.chromium.content.common.IChildProcessCallback callback)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   int _result;
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     if ((args != null)) {
       _data.writeInt(1);
       args.writeToParcel(_data, 0);
     } else {
       _data.writeInt(0);
     }
     _data.writeStrongBinder((((callback != null)) ? (callback.asBinder()) : (null)));
     mRemote.transact(Stub.TRANSACTION_setupConnection, _data, _reply, 0);
     _reply.readException();
     _result = _reply.readInt();
   } finally {
     _reply.recycle();
     _data.recycle();
   }
   return _result;
 }
Пример #21
0
    public LatLng fromScreenLocation(d d1)
    {
        Object obj;
        Parcel parcel;
        Parcel parcel1;
        obj = null;
        parcel = Parcel.obtain();
        parcel1 = Parcel.obtain();
        parcel.writeInterfaceToken("com.google.android.gms.maps.internal.IProjectionDelegate");
        if (d1 == null)
        {
            break MISSING_BLOCK_LABEL_83;
        }
        d1 = d1.asBinder();
_L1:
        parcel.writeStrongBinder(d1);
        kq.transact(1, parcel, parcel1, 0);
        parcel1.readException();
        d1 = obj;
        if (parcel1.readInt() != 0)
        {
            d1 = LatLng.CREATOR.createFromParcel(parcel1);
        }
        parcel1.recycle();
        parcel.recycle();
        return d1;
        d1 = null;
          goto _L1
Пример #22
0
 /**
  * Returns the current SKUs owned by the user of the type and package name specified along
  * with purchase information and a signature of the data to be validated. This will return all
  * SKUs that have been purchased in V3 and managed items purchased using V1 and V2 that have
  * not been consumed.
  *
  * @param apiVersion billing API version that the app is using
  * @param packageName package name of the calling app
  * @param type the type of the in-app items being requested ("inapp" for one-time purchases
  *     and "subs" for subscription).
  * @param continuationToken to be set as null for the first call, if the number of owned skus
  *     are too many, a continuationToken is returned in the response bundle. This method can
  *     be called again with the continuation token to get the next set of owned skus.
  * @return Bundle containing the following key-value pairs "RESPONSE_CODE" with int value,
  *     RESULT_OK(0) if success, other response codes on failure as listed above.
  *     "INAPP_PURCHASE_ITEM_LIST" - StringArrayList containing the list of SKUs
  *     "INAPP_PURCHASE_DATA_LIST" - StringArrayList containing the purchase information
  *     "INAPP_DATA_SIGNATURE_LIST"- StringArrayList containing the signatures of the purchase
  *     information "INAPP_CONTINUATION_TOKEN" - String containing a continuation token for the
  *     next set of in-app purchases. Only set if the user has more owned skus than the current
  *     list.
  */
 @Override
 public android.os.Bundle getPurchases(
     int apiVersion,
     java.lang.String packageName,
     java.lang.String type,
     java.lang.String continuationToken)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   android.os.Bundle _result;
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     _data.writeInt(apiVersion);
     _data.writeString(packageName);
     _data.writeString(type);
     _data.writeString(continuationToken);
     mRemote.transact(Stub.TRANSACTION_getPurchases, _data, _reply, 0);
     _reply.readException();
     if ((0 != _reply.readInt())) {
       _result = android.os.Bundle.CREATOR.createFromParcel(_reply);
     } else {
       _result = null;
     }
   } finally {
     _reply.recycle();
     _data.recycle();
   }
   return _result;
 }
  public void onServiceConnected(ComponentName className, IBinder service) {
    // Get the OpenUDID from the remote service
    try {
      // Send a random number to the service
      android.os.Parcel data = android.os.Parcel.obtain();
      data.writeInt(mRandom.nextInt());
      android.os.Parcel reply = android.os.Parcel.obtain();
      service.transact(1, android.os.Parcel.obtain(), reply, 0);
      if (data.readInt() == reply.readInt()) // Check if the service returns us this number
      {
        final String _openUDID = reply.readString();
        if (_openUDID != null) { // if valid OpenUDID, save it
          if (LOG) Log.d(TAG, "Received " + _openUDID);

          if (mReceivedOpenUDIDs.containsKey(_openUDID))
            mReceivedOpenUDIDs.put(_openUDID, mReceivedOpenUDIDs.get(_openUDID) + 1);
          else mReceivedOpenUDIDs.put(_openUDID, 1);
        }
      }
    } catch (RemoteException e) {
      if (LOG) Log.e(TAG, "RemoteException: " + e.getMessage());
    }
    mContext.unbindService(this);

    startService(); // Try the next one
  }
Пример #24
0
 /**
  * This demonstrates the basic types that you can use as parameters and return values in AIDL.
  */
 public void basicTypes(
     int anInt,
     long aLong,
     boolean aBoolean,
     float aFloat,
     double aDouble,
     java.lang.String aString)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     _data.writeInt(anInt);
     _data.writeLong(aLong);
     _data.writeInt(((aBoolean) ? (1) : (0)));
     _data.writeFloat(aFloat);
     _data.writeDouble(aDouble);
     _data.writeString(aString);
     mRemote.transact(Stub.TRANSACTION_basicTypes, _data, _reply, 0);
     _reply.readException();
   } finally {
     _reply.recycle();
     _data.recycle();
   }
 }
Пример #25
0
 /** Given the arguments in bundle form, returns a bundle for results. */
 @Override
 public android.os.Bundle sendBillingRequest(android.os.Bundle bundle)
     throws android.os.RemoteException {
   android.os.Parcel _data = android.os.Parcel.obtain();
   android.os.Parcel _reply = android.os.Parcel.obtain();
   android.os.Bundle _result;
   try {
     _data.writeInterfaceToken(DESCRIPTOR);
     if ((bundle != null)) {
       _data.writeInt(1);
       bundle.writeToParcel(_data, 0);
     } else {
       _data.writeInt(0);
     }
     mRemote.transact(Stub.TRANSACTION_sendBillingRequest, _data, _reply, 0);
     _reply.readException();
     if ((0 != _reply.readInt())) {
       _result = android.os.Bundle.CREATOR.createFromParcel(_reply);
     } else {
       _result = null;
     }
   } finally {
     _reply.recycle();
     _data.recycle();
   }
   return _result;
 }
 public final void requestThumbnail(IBinder token) throws RemoteException {
   Parcel data = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   data.writeStrongBinder(token);
   mRemote.transact(REQUEST_THUMBNAIL_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
   data.recycle();
 }
 public final void scheduleConfigurationChanged(Configuration config) throws RemoteException {
   Parcel data = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   config.writeToParcel(data, 0);
   mRemote.transact(SCHEDULE_CONFIGURATION_CHANGED_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
   data.recycle();
 }
 public void setSchedulingGroup(int group) throws RemoteException {
   Parcel data = Parcel.obtain();
   data.writeInterfaceToken(IApplicationThread.descriptor);
   data.writeInt(group);
   mRemote.transact(SET_SCHEDULING_GROUP_TRANSACTION, data, null, IBinder.FLAG_ONEWAY);
   data.recycle();
 }
Пример #29
0
        public boolean a(c c1)
            throws RemoteException
        {
            Parcel parcel;
            Parcel parcel1;
            boolean flag;
            flag = false;
            parcel = Parcel.obtain();
            parcel1 = Parcel.obtain();
            parcel.writeInterfaceToken("com.google.android.gms.maps.model.internal.IGroundOverlayDelegate");
            if (c1 == null)
            {
                break MISSING_BLOCK_LABEL_77;
            }
            c1 = c1.asBinder();
_L1:
            int i;
            parcel.writeStrongBinder(c1);
            kn.transact(19, parcel, parcel1, 0);
            parcel1.readException();
            i = parcel1.readInt();
            if (i != 0)
            {
                flag = true;
            }
            parcel1.recycle();
            parcel.recycle();
            return flag;
            c1 = null;
              goto _L1
 @DSGenerator(
     tool_name = "Doppelganger",
     tool_version = "2.0",
     generated_on = "2014-09-07 03:18:43.621 -0400",
     hash_original_method = "F734F687479909C039B4CE55836EDBA8",
     hash_generated_method = "AE15C647DA7C1BDF3023D909C73BD407")
 private ParceledListSlice(Parcel p, ClassLoader loader) {
   final int N = p.readInt();
   mList = new ArrayList<T>(N);
   if (DEBUG) Log.d(TAG, "Retrieving " + N + " items");
   if (N <= 0) {
     return;
   }
   Parcelable.Creator<T> creator = p.readParcelableCreator(loader);
   int i = 0;
   while (i < N) {
     if (p.readInt() == 0) {
       break;
     }
     mList.add(p.readCreator(creator, loader));
     if (DEBUG) Log.d(TAG, "Read inline #" + i + ": " + mList.get(mList.size() - 1));
     i++;
   }
   if (i >= N) {
     return;
   }
   final IBinder retriever = p.readStrongBinder();
   while (i < N) {
     if (DEBUG) Log.d(TAG, "Reading more @" + i + " of " + N + ": retriever=" + retriever);
     Parcel data = Parcel.obtain();
     Parcel reply = Parcel.obtain();
     data.writeInt(i);
     try {
       retriever.transact(IBinder.FIRST_CALL_TRANSACTION, data, reply, 0);
     } catch (RemoteException e) {
       Log.w(TAG, "Failure retrieving array; only received " + i + " of " + N, e);
       return;
     }
     while (i < N && reply.readInt() != 0) {
       mList.add(reply.readCreator(creator, loader));
       if (DEBUG) Log.d(TAG, "Read extra #" + i + ": " + mList.get(mList.size() - 1));
       i++;
     }
     reply.recycle();
     data.recycle();
   }
 }