19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/*
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2006 The Android Open Source Project
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License.
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project *
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License.
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.content;
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.res.AssetFileDescriptor;
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.Cursor;
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.CursorWindow;
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.IBulkCursor;
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.database.IContentObserver;
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.net.Uri;
251877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrickimport android.os.Bundle;
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IBinder;
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.IInterface;
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.ParcelFileDescriptor;
291877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrickimport android.os.RemoteException;
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.io.FileNotFoundException;
3203d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintanaimport java.util.ArrayList;
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/**
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The ipc interface to talk to a content provider.
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic interface IContentProvider extends IInterface {
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /**
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * @hide - hide this because return type IBulkCursor and parameter
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     * IContentObserver are system private classes.
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project     */
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public IBulkCursor bulkQuery(Uri url, String[] projection,
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String selection, String[] selectionArgs, String sortOrder, IContentObserver observer,
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            CursorWindow window) throws RemoteException;
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Cursor query(Uri url, String[] projection, String selection,
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String[] selectionArgs, String sortOrder) throws RemoteException;
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public String getType(Uri url) throws RemoteException;
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public Uri insert(Uri url, ContentValues initialValues)
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException;
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int bulkInsert(Uri url, ContentValues[] initialValues) throws RemoteException;
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int delete(Uri url, String selection, String[] selectionArgs)
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException;
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public int update(Uri url, ContentValues values, String selection,
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            String[] selectionArgs) throws RemoteException;
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public ParcelFileDescriptor openFile(Uri url, String mode)
579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException, FileNotFoundException;
589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    public AssetFileDescriptor openAssetFile(Uri url, String mode)
599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project            throws RemoteException, FileNotFoundException;
6003d9490758c9318cee6d14d3cc5007556dce92d0Fred Quintana    public ContentProviderResult[] applyBatch(ArrayList<ContentProviderOperation> operations)
618943737692169f564cd34a9c8d471f3a5d438712Fred Quintana            throws RemoteException, OperationApplicationException;
621877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    /**
631877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @hide -- until interface has proven itself
641877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     *
651877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * Call an provider-defined method.  This can be used to implement
661877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * interfaces that are cheaper than using a Cursor.
671877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     *
681877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @param method Method name to call.  Opaque to framework.
691877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @param request Nullable String argument passed to method.
701877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     * @param args Nullable Bundle argument passed to method.
711877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick     */
721877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    public Bundle call(String method, String request, Bundle args) throws RemoteException;
739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    /* IPC constants */
759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final String descriptor = "android.content.IContentProvider";
769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int QUERY_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION;
789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int GET_TYPE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 1;
799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int INSERT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 2;
809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int DELETE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 3;
819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int UPDATE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 9;
829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int BULK_INSERT_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 12;
839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int OPEN_FILE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 13;
849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project    static final int OPEN_ASSET_FILE_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 14;
858943737692169f564cd34a9c8d471f3a5d438712Fred Quintana    static final int APPLY_BATCH_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 19;
861877d0158b529663b8315482e7346a7bcaa96166Brad Fitzpatrick    static final int CALL_TRANSACTION = IBinder.FIRST_CALL_TRANSACTION + 20;
879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project}
88