下面列出了android.os.Parcel#readTypedObject ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public AdvertiseData createFromParcel(Parcel in) {
Builder builder = new Builder();
ArrayList<ParcelUuid> uuids = in.createTypedArrayList(ParcelUuid.CREATOR);
for (ParcelUuid uuid : uuids) {
builder.addServiceUuid(uuid);
}
int manufacturerSize = in.readInt();
for (int i = 0; i < manufacturerSize; ++i) {
int manufacturerId = in.readInt();
byte[] manufacturerData = in.createByteArray();
builder.addManufacturerData(manufacturerId, manufacturerData);
}
int serviceDataSize = in.readInt();
for (int i = 0; i < serviceDataSize; ++i) {
ParcelUuid serviceDataUuid = in.readTypedObject(ParcelUuid.CREATOR);
byte[] serviceData = in.createByteArray();
builder.addServiceData(serviceDataUuid, serviceData);
}
builder.setIncludeTxPowerLevel(in.readByte() == 1);
builder.setIncludeDeviceName(in.readByte() == 1);
return builder.build();
}
public TextViewDrawableAction(Parcel parcel) {
viewId = parcel.readInt();
isRelative = (parcel.readInt() != 0);
useIcons = (parcel.readInt() != 0);
if (useIcons) {
i1 = parcel.readTypedObject(Icon.CREATOR);
i2 = parcel.readTypedObject(Icon.CREATOR);
i3 = parcel.readTypedObject(Icon.CREATOR);
i4 = parcel.readTypedObject(Icon.CREATOR);
} else {
d1 = parcel.readInt();
d2 = parcel.readInt();
d3 = parcel.readInt();
d4 = parcel.readInt();
}
}
/**
* Unflatten the AppWidgetProviderInfo from a parcel.
*/
@SuppressWarnings("deprecation")
public AppWidgetProviderInfo(Parcel in) {
this.provider = in.readTypedObject(ComponentName.CREATOR);
this.minWidth = in.readInt();
this.minHeight = in.readInt();
this.minResizeWidth = in.readInt();
this.minResizeHeight = in.readInt();
this.updatePeriodMillis = in.readInt();
this.initialLayout = in.readInt();
this.initialKeyguardLayout = in.readInt();
this.configure = in.readTypedObject(ComponentName.CREATOR);
this.label = in.readString();
this.icon = in.readInt();
this.previewImage = in.readInt();
this.autoAdvanceViewId = in.readInt();
this.resizeMode = in.readInt();
this.widgetCategory = in.readInt();
this.providerInfo = in.readTypedObject(ActivityInfo.CREATOR);
this.widgetFeatures = in.readInt();
}
/**
* @hide
*/
protected KeyChainSnapshot(Parcel in) {
mSnapshotVersion = in.readInt();
mKeyChainProtectionParams = in.createTypedArrayList(KeyChainProtectionParams.CREATOR);
mEncryptedRecoveryKeyBlob = in.createByteArray();
mEntryRecoveryData = in.createTypedArrayList(WrappedApplicationKey.CREATOR);
mMaxAttempts = in.readInt();
mCounterId = in.readLong();
mServerParams = in.createByteArray();
mCertPath = in.readTypedObject(RecoveryCertPath.CREATOR);
}
/**
* @hide
*/
protected KeyChainProtectionParams(Parcel in) {
mUserSecretType = in.readInt();
mLockScreenUiFormat = in.readInt();
mKeyDerivationParams = in.readTypedObject(KeyDerivationParams.CREATOR);
mSecret = in.createByteArray();
}
/**
* Reads a DisplayCutout from a {@link Parcel}.
*
* @see #writeCutoutToParcel(DisplayCutout, Parcel, int)
*/
public static DisplayCutout readCutoutFromParcel(Parcel in) {
int variant = in.readInt();
if (variant == -1) {
return null;
}
if (variant == 0) {
return NO_CUTOUT;
}
Rect safeInsets = in.readTypedObject(Rect.CREATOR);
Region bounds = in.readTypedObject(Region.CREATOR);
return new DisplayCutout(safeInsets, bounds, false /* copyArguments */);
}
public RemoteAnimationDefinition(Parcel in) {
final int size = in.readInt();
mTransitionAnimationMap = new SparseArray<>(size);
for (int i = 0; i < size; i++) {
final int transition = in.readInt();
final RemoteAnimationAdapterEntry entry = in.readTypedObject(
RemoteAnimationAdapterEntry.CREATOR);
mTransitionAnimationMap.put(transition, entry);
}
}
public BluetoothCodecStatus createFromParcel(Parcel in) {
final BluetoothCodecConfig codecConfig = in.readTypedObject(
BluetoothCodecConfig.CREATOR);
final BluetoothCodecConfig[] codecsLocalCapabilities = in.createTypedArray(
BluetoothCodecConfig.CREATOR);
final BluetoothCodecConfig[] codecsSelectableCapabilities = in.createTypedArray(
BluetoothCodecConfig.CREATOR);
return new BluetoothCodecStatus(codecConfig,
codecsLocalCapabilities,
codecsSelectableCapabilities);
}
protected Slice(Parcel in) {
mHints = in.readStringArray();
int n = in.readInt();
mItems = new SliceItem[n];
for (int i = 0; i < n; i++) {
mItems[i] = SliceItem.CREATOR.createFromParcel(in);
}
mUri = Uri.CREATOR.createFromParcel(in);
mSpec = in.readTypedObject(SliceSpec.CREATOR);
}
private ProgramSelector(Parcel in) {
mProgramType = in.readInt();
mPrimaryId = in.readTypedObject(Identifier.CREATOR);
mSecondaryIds = in.createTypedArray(Identifier.CREATOR);
if (Stream.of(mSecondaryIds).anyMatch(id -> id == null)) {
throw new IllegalArgumentException("secondaryIds list must not contain nulls");
}
mVendorIds = in.createLongArray();
}
private ProgramInfo(Parcel in) {
mSelector = Objects.requireNonNull(in.readTypedObject(ProgramSelector.CREATOR));
mLogicallyTunedTo = in.readTypedObject(ProgramSelector.Identifier.CREATOR);
mPhysicallyTunedTo = in.readTypedObject(ProgramSelector.Identifier.CREATOR);
mRelatedContent = in.createTypedArrayList(ProgramSelector.Identifier.CREATOR);
mInfoFlags = in.readInt();
mSignalQuality = in.readInt();
mMetadata = in.readTypedObject(RadioMetadata.CREATOR);
mVendorInfo = Utils.readStringMap(in);
}
private WebViewProviderResponse(Parcel in) {
packageInfo = in.readTypedObject(PackageInfo.CREATOR);
status = in.readInt();
}
/** Read from Parcel. */
private PipModeChangeItem(Parcel in) {
mIsInPipMode = in.readBoolean();
mOverrideConfig = in.readTypedObject(Configuration.CREATOR);
}
/** Read from Parcel. */
private ConfigurationChangeItem(Parcel in) {
mConfiguration = in.readTypedObject(Configuration.CREATOR);
}
/** Read from Parcel. */
private ActivityConfigurationChangeItem(Parcel in) {
mConfiguration = in.readTypedObject(Configuration.CREATOR);
}
/** Read from Parcel. */
private MoveToDisplayItem(Parcel in) {
mTargetDisplayId = in.readInt();
mConfiguration = in.readTypedObject(Configuration.CREATOR);
}
/** Read from Parcel. */
private MultiWindowModeChangeItem(Parcel in) {
mIsInMultiWindowMode = in.readBoolean();
mOverrideConfig = in.readTypedObject(Configuration.CREATOR);
}
ReflectionAction(Parcel in) {
this.viewId = in.readInt();
this.methodName = in.readString();
this.type = in.readInt();
//noinspection ConstantIfStatement
if (false) {
Log.d(LOG_TAG, "read viewId=0x" + Integer.toHexString(this.viewId)
+ " methodName=" + this.methodName + " type=" + this.type);
}
// For some values that may have been null, we first check a flag to see if they were
// written to the parcel.
switch (this.type) {
case BOOLEAN:
this.value = in.readBoolean();
break;
case BYTE:
this.value = in.readByte();
break;
case SHORT:
this.value = (short)in.readInt();
break;
case INT:
this.value = in.readInt();
break;
case LONG:
this.value = in.readLong();
break;
case FLOAT:
this.value = in.readFloat();
break;
case DOUBLE:
this.value = in.readDouble();
break;
case CHAR:
this.value = (char)in.readInt();
break;
case STRING:
this.value = in.readString();
break;
case CHAR_SEQUENCE:
this.value = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
break;
case URI:
this.value = in.readTypedObject(Uri.CREATOR);
break;
case BITMAP:
this.value = in.readTypedObject(Bitmap.CREATOR);
break;
case BUNDLE:
this.value = in.readBundle();
break;
case INTENT:
this.value = in.readTypedObject(Intent.CREATOR);
break;
case COLOR_STATE_LIST:
this.value = in.readTypedObject(ColorStateList.CREATOR);
break;
case ICON:
this.value = in.readTypedObject(Icon.CREATOR);
default:
break;
}
}
private Announcement(@NonNull Parcel in) {
mSelector = in.readTypedObject(ProgramSelector.CREATOR);
mType = in.readInt();
mVendorInfo = Utils.readStringMap(in);
}
public SetRemoteViewsAdapterIntent(Parcel parcel) {
viewId = parcel.readInt();
intent = parcel.readTypedObject(Intent.CREATOR);
}