package android.nfc;
import android.net.Uri;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.UserHandle;
/**
* Class to IPC data to be shared over Android Beam.
* Allows bundling NdefMessage, Uris and flags in a single
* IPC call. This is important as we want to reduce the
* amount of IPC calls at "touch time".
* @hide
*/
public final class BeamShareData implements Parcelable {
public final NdefMessage ndefMessage;
public final Uri[] uris;
public final UserHandle userHandle;
public final int flags;
public BeamShareData(NdefMessage msg, Uri[] uris, UserHandle userHandle, int flags) {
this.ndefMessage = msg;
this.uris = uris;
this.userHandle = userHandle;
this.flags = flags;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
int urisLength = (uris != null) ? uris.length : 0;
dest.writeParcelable(ndefMessage, 0);
dest.writeInt(urisLength);
if (urisLength > 0) {
dest.writeTypedArray(uris, 0);
}
dest.writeParcelable(userHandle, 0);
dest.writeInt(this.flags);
}
public static final Parcelable.Creator<BeamShareData> CREATOR =
new Parcelable.Creator<BeamShareData>() {
@Override
public BeamShareData createFromParcel(Parcel source) {
Uri[] uris = null;
NdefMessage msg = source.readParcelable(NdefMessage.class.getClassLoader());
int numUris = source.readInt();
if (numUris > 0) {
uris = new Uri[numUris];
source.readTypedArray(uris, Uri.CREATOR);
}
UserHandle userHandle = source.readParcelable(UserHandle.class.getClassLoader());
int flags = source.readInt();
return new BeamShareData(msg, uris, userHandle, flags);
}
@Override
public BeamShareData[] newArray(int size) {
return new BeamShareData[size];
}
};
}