blob: 918ec3d5e2c42fc813fb5233cd7f607e2afc0ec9 [file] [log] [blame]
Martijn Coenen1fa2aff2013-02-27 09:21:22 -08001package android.nfc;
2
3import android.net.Uri;
4import android.os.Parcel;
5import android.os.Parcelable;
Andres Morales56f299b2014-10-31 08:26:33 -07006import android.os.UserHandle;
Martijn Coenen1fa2aff2013-02-27 09:21:22 -08007
8/**
9 * Class to IPC data to be shared over Android Beam.
10 * Allows bundling NdefMessage, Uris and flags in a single
11 * IPC call. This is important as we want to reduce the
12 * amount of IPC calls at "touch time".
13 * @hide
14 */
15public final class BeamShareData implements Parcelable {
16 public final NdefMessage ndefMessage;
17 public final Uri[] uris;
Andres Morales56f299b2014-10-31 08:26:33 -070018 public final UserHandle userHandle;
Martijn Coenen1fa2aff2013-02-27 09:21:22 -080019 public final int flags;
20
Andres Morales56f299b2014-10-31 08:26:33 -070021 public BeamShareData(NdefMessage msg, Uri[] uris, UserHandle userHandle, int flags) {
Martijn Coenen1fa2aff2013-02-27 09:21:22 -080022 this.ndefMessage = msg;
23 this.uris = uris;
Andres Morales56f299b2014-10-31 08:26:33 -070024 this.userHandle = userHandle;
Martijn Coenen1fa2aff2013-02-27 09:21:22 -080025 this.flags = flags;
26 }
27
28 @Override
29 public int describeContents() {
30 return 0;
31 }
32
33 @Override
34 public void writeToParcel(Parcel dest, int flags) {
35 int urisLength = (uris != null) ? uris.length : 0;
36 dest.writeParcelable(ndefMessage, 0);
37 dest.writeInt(urisLength);
38 if (urisLength > 0) {
39 dest.writeTypedArray(uris, 0);
40 }
Andres Morales56f299b2014-10-31 08:26:33 -070041 dest.writeParcelable(userHandle, 0);
Martijn Coenen1fa2aff2013-02-27 09:21:22 -080042 dest.writeInt(this.flags);
43 }
44
45 public static final Parcelable.Creator<BeamShareData> CREATOR =
46 new Parcelable.Creator<BeamShareData>() {
47 @Override
48 public BeamShareData createFromParcel(Parcel source) {
49 Uri[] uris = null;
50 NdefMessage msg = source.readParcelable(NdefMessage.class.getClassLoader());
51 int numUris = source.readInt();
52 if (numUris > 0) {
53 uris = new Uri[numUris];
54 source.readTypedArray(uris, Uri.CREATOR);
55 }
Andres Morales56f299b2014-10-31 08:26:33 -070056 UserHandle userHandle = source.readParcelable(UserHandle.class.getClassLoader());
Martijn Coenen1fa2aff2013-02-27 09:21:22 -080057 int flags = source.readInt();
58
Andres Morales56f299b2014-10-31 08:26:33 -070059 return new BeamShareData(msg, uris, userHandle, flags);
Martijn Coenen1fa2aff2013-02-27 09:21:22 -080060 }
61
62 @Override
63 public BeamShareData[] newArray(int size) {
64 return new BeamShareData[size];
65 }
66 };
67}