1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17package android.app; 18 19import android.content.ContentProviderNative; 20import android.content.IContentProvider; 21import android.content.pm.ProviderInfo; 22import android.os.IBinder; 23import android.os.Parcel; 24import android.os.Parcelable; 25 26/** 27 * Information you can retrieve about a particular application. 28 * 29 * @hide 30 */ 31public class ContentProviderHolder implements Parcelable { 32 public final ProviderInfo info; 33 public IContentProvider provider; 34 public IBinder connection; 35 public boolean noReleaseNeeded; 36 37 public ContentProviderHolder(ProviderInfo _info) { 38 info = _info; 39 } 40 41 @Override 42 public int describeContents() { 43 return 0; 44 } 45 46 @Override 47 public void writeToParcel(Parcel dest, int flags) { 48 info.writeToParcel(dest, 0); 49 if (provider != null) { 50 dest.writeStrongBinder(provider.asBinder()); 51 } else { 52 dest.writeStrongBinder(null); 53 } 54 dest.writeStrongBinder(connection); 55 dest.writeInt(noReleaseNeeded ? 1 : 0); 56 } 57 58 public static final Parcelable.Creator<ContentProviderHolder> CREATOR 59 = new Parcelable.Creator<ContentProviderHolder>() { 60 @Override 61 public ContentProviderHolder createFromParcel(Parcel source) { 62 return new ContentProviderHolder(source); 63 } 64 65 @Override 66 public ContentProviderHolder[] newArray(int size) { 67 return new ContentProviderHolder[size]; 68 } 69 }; 70 71 private ContentProviderHolder(Parcel source) { 72 info = ProviderInfo.CREATOR.createFromParcel(source); 73 provider = ContentProviderNative.asInterface( 74 source.readStrongBinder()); 75 connection = source.readStrongBinder(); 76 noReleaseNeeded = source.readInt() != 0; 77 } 78}