Loading api/current.xml +167 −195 Original line number Diff line number Diff line Loading @@ -28053,36 +28053,6 @@ <parameter name="values" type="android.content.ContentValues[]"> </parameter> </method> <method name="bulkInsertEntities" return="android.net.Uri[]" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> </parameter> </method> <method name="bulkUpdateEntities" return="int[]" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> </parameter> </method> <method name="delete" return="int" abstract="true" Loading Loading @@ -28382,8 +28352,8 @@ deprecated="not deprecated" visibility="public" > <method name="bulkInsert" return="int" <method name="applyBatch" return="android.content.ContentProviderResult[]" abstract="false" native="false" synchronized="false" Loading @@ -28392,32 +28362,15 @@ deprecated="not deprecated" visibility="public" > <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="initialValues" type="android.content.ContentValues[]"> <parameter name="operations" type="android.content.ContentProviderOperation[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> </method> <method name="bulkInsertEntities" return="android.net.Uri[]" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="bulkUpdateEntities" return="int[]" <method name="bulkInsert" return="int" abstract="false" native="false" synchronized="false" Loading @@ -28426,9 +28379,9 @@ deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> <parameter name="initialValues" type="android.content.ContentValues[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> Loading Loading @@ -28652,6 +28605,8 @@ deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <method name="apply" return="android.content.ContentProviderResult" abstract="false" Loading @@ -28671,6 +28626,50 @@ <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> </method> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getUri" return="android.net.Uri" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isReadOperation" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isWriteOperation" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="newCountQuery" return="android.content.ContentProviderOperation.Builder" abstract="false" Loading Loading @@ -28753,6 +28752,31 @@ <parameter name="numBackRefs" type="int"> </parameter> </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <class name="ContentProviderOperation.Builder" extends="java.lang.Object" Loading @@ -28773,6 +28797,19 @@ visibility="public" > </method> <method name="withEntity" return="android.content.ContentProviderOperation.Builder" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="entity" type="android.content.Entity"> </parameter> </method> <method name="withExpectedCount" return="android.content.ContentProviderOperation.Builder" abstract="false" Loading Loading @@ -28849,6 +28886,8 @@ deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <constructor name="ContentProviderResult" type="android.content.ContentProviderResult" static="false" Loading @@ -28869,6 +28908,52 @@ <parameter name="count" type="int"> </parameter> </constructor> <constructor name="ContentProviderResult" type="android.content.ContentProviderResult" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="source" type="android.os.Parcel"> </parameter> </constructor> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="count" type="java.lang.Integer" transient="false" Loading Loading @@ -29018,40 +29103,27 @@ <parameter name="name" type="java.lang.String"> </parameter> </method> <method name="bulkInsert" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="values" type="android.content.ContentValues[]"> </parameter> </method> <method name="bulkInsertEntities" return="android.net.Uri[]" <method name="applyBatch" return="android.content.ContentProviderResult[]" abstract="false" native="false" synchronized="false" static="false" final="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> <parameter name="authority" type="java.lang.String"> </parameter> <parameter name="entities" type="android.content.Entity[]"> <parameter name="operations" type="android.content.ContentProviderOperation[]"> </parameter> <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="bulkUpdateEntities" return="int[]" <method name="bulkInsert" return="int" abstract="false" native="false" synchronized="false" Loading @@ -29060,12 +29132,10 @@ deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> <parameter name="values" type="android.content.ContentValues[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="cancelSync" return="void" Loading Loading @@ -29276,7 +29346,7 @@ <parameter name="sortOrder" type="java.lang.String"> </parameter> </method> <method name="queryEntity" <method name="queryEntities" return="android.content.EntityIterator" abstract="false" native="false" Loading Loading @@ -32604,119 +32674,6 @@ </exception> </method> </interface> <interface name="IEntityIterator" abstract="true" static="false" final="false" deprecated="not deprecated" visibility="public" > <implements name="android.os.IInterface"> </implements> <method name="close" return="void" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="hasNext" return="boolean" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="next" return="android.content.Entity" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> </interface> <class name="IEntityIterator.Stub" extends="android.os.Binder" abstract="true" static="true" final="false" deprecated="not deprecated" visibility="public" > <implements name="android.content.IEntityIterator"> </implements> <constructor name="IEntityIterator.Stub" type="android.content.IEntityIterator.Stub" static="false" final="false" deprecated="not deprecated" visibility="public" > </constructor> <method name="asBinder" return="android.os.IBinder" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="asInterface" return="android.content.IEntityIterator" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="obj" type="android.os.IBinder"> </parameter> </method> <method name="onTransact" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="code" type="int"> </parameter> <parameter name="data" type="android.os.Parcel"> </parameter> <parameter name="reply" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> </class> <class name="Intent" extends="java.lang.Object" abstract="false" Loading Loading @@ -46712,6 +46669,21 @@ <exception name="FileNotFoundException" type="java.io.FileNotFoundException"> </exception> </method> <method name="readExceptionWithOperationApplicationExceptionFromParcel" return="void" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="reply" type="android.os.Parcel"> </parameter> <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> </method> <method name="sqlEscapeString" return="java.lang.String" abstract="false" core/java/android/content/ContentProvider.java +18 −20 Original line number Diff line number Diff line Loading @@ -151,9 +151,23 @@ public abstract class ContentProvider implements ComponentCallbacks { return ContentProvider.this.bulkInsert(uri, initialValues); } public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) { public Uri insertEntity(Uri uri, Entity entities) { checkWritePermission(uri); return ContentProvider.this.bulkInsertEntities(uri, entities); return ContentProvider.this.insertEntity(uri, entities); } public ContentProviderResult[] applyBatch(ContentProviderOperation[] operations) throws OperationApplicationException { for (ContentProviderOperation operation : operations) { if (operation.isReadOperation()) { checkReadPermission(operation.getUri()); } if (operation.isWriteOperation()) { checkWritePermission(operation.getUri()); } } return ContentProvider.this.applyBatch(operations); } public int delete(Uri uri, String selection, String[] selectionArgs) { Loading @@ -167,9 +181,9 @@ public abstract class ContentProvider implements ComponentCallbacks { return ContentProvider.this.update(uri, values, selection, selectionArgs); } public int[] bulkUpdateEntities(Uri uri, Entity[] entities) { public int updateEntity(Uri uri, Entity entity) { checkWritePermission(uri); return ContentProvider.this.bulkUpdateEntities(uri, entities); return ContentProvider.this.updateEntity(uri, entity); } public ParcelFileDescriptor openFile(Uri uri, String mode) Loading Loading @@ -403,14 +417,6 @@ public abstract class ContentProvider implements ComponentCallbacks { throw new UnsupportedOperationException(); } public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) { Uri[] result = new Uri[entities.length]; for (int i = 0; i < entities.length; i++) { result[i] = insertEntity(uri, entities[i]); } return result; } /** * A request to delete one or more rows. The selection clause is applied when performing * the deletion, allowing the operation to affect multiple rows in a Loading Loading @@ -459,14 +465,6 @@ public abstract class ContentProvider implements ComponentCallbacks { throw new UnsupportedOperationException(); } public int[] bulkUpdateEntities(Uri uri, Entity[] entities) { int[] result = new int[entities.length]; for (int i = 0; i < entities.length; i++) { result[i] = updateEntity(uri, entities[i]); } return result; } /** * Open a file blob associated with a content URI. * This method can be called from multiple Loading core/java/android/content/ContentProviderClient.java +6 −10 Original line number Diff line number Diff line Loading @@ -96,22 +96,18 @@ public class ContentProviderClient { /** see {@link ContentProvider#insertEntity} */ public Uri insertEntity(Uri uri, Entity entity) throws RemoteException { return mContentProvider.bulkInsertEntities(uri, new Entity[]{entity})[0]; } /** see {@link ContentProvider#bulkInsertEntities} */ public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) throws RemoteException { return mContentProvider.bulkInsertEntities(uri, entities); return mContentProvider.insertEntity(uri, entity); } /** see {@link ContentProvider#updateEntity} */ public int updateEntity(Uri uri, Entity entity) throws RemoteException { return mContentProvider.bulkUpdateEntities(uri, new Entity[]{entity})[0]; return mContentProvider.updateEntity(uri, entity); } /** see {@link ContentProvider#bulkUpdateEntities} */ public int[] bulkUpdateEntities(Uri uri, Entity[] entities) throws RemoteException { return mContentProvider.bulkUpdateEntities(uri, entities); /** see {@link ContentProvider#applyBatch} */ public ContentProviderResult[] applyBatch(ContentProviderOperation[] operations) throws RemoteException, OperationApplicationException { return mContentProvider.applyBatch(operations); } /** Loading core/java/android/content/ContentProviderNative.java +53 −45 Original line number Diff line number Diff line Loading @@ -154,37 +154,36 @@ abstract public class ContentProviderNative extends Binder implements IContentPr return true; } case BULK_INSERT_ENTITIES_TRANSACTION: case INSERT_ENTITIES_TRANSACTION: { data.enforceInterface(IContentProvider.descriptor); Uri uri = Uri.CREATOR.createFromParcel(data); String className = data.readString(); Class entityClass = Class.forName(className); int numEntities = data.readInt(); Entity[] entities = new Entity[numEntities]; for (int i = 0; i < numEntities; i++) { entities[i] = (Entity) data.readParcelable(entityClass.getClassLoader()); } Uri[] uris = bulkInsertEntities(uri, entities); Entity entity = (Entity) data.readParcelable(null); Uri newUri = insertEntity(uri, entity); reply.writeNoException(); reply.writeTypedArray(uris, 0); Uri.writeToParcel(reply, newUri); return true; } case BULK_UPDATE_ENTITIES_TRANSACTION: case UPDATE_ENTITIES_TRANSACTION: { data.enforceInterface(IContentProvider.descriptor); Uri uri = Uri.CREATOR.createFromParcel(data); String className = data.readString(); Class entityClass = Class.forName(className); int numEntities = data.readInt(); Entity[] entities = new Entity[numEntities]; for (int i = 0; i < numEntities; i++) { entities[i] = (Entity) data.readParcelable(entityClass.getClassLoader()); } int[] counts = bulkUpdateEntities(uri, entities); Entity entity = (Entity) data.readParcelable(null); int count = updateEntity(uri, entity); reply.writeNoException(); reply.writeIntArray(counts); reply.writeInt(count); return true; } case APPLY_BATCH_TRANSACTION: { data.enforceInterface(IContentProvider.descriptor); final ContentProviderOperation[] operations = data.createTypedArray(ContentProviderOperation.CREATOR); final ContentProviderResult[] results = applyBatch(operations); reply.writeNoException(); reply.writeTypedArray(results, 0); return true; } Loading Loading @@ -472,23 +471,18 @@ final class ContentProviderProxy implements IContentProvider return count; } public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) throws RemoteException { public ContentProviderResult[] applyBatch(ContentProviderOperation[] operations) throws RemoteException, OperationApplicationException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IContentProvider.descriptor); uri.writeToParcel(data, 0); data.writeString(entities[0].getClass().getName()); data.writeInt(entities.length); for (Entity entity : entities) { data.writeParcelable(entity, 0); } data.writeTypedArray(operations, 0); mRemote.transact(IContentProvider.APPLY_BATCH_TRANSACTION, data, reply, 0); mRemote.transact(IContentProvider.BULK_INSERT_ENTITIES_TRANSACTION, data, reply, 0); DatabaseUtils.readExceptionFromParcel(reply); Uri[] results = new Uri[entities.length]; reply.readTypedArray(results, Uri.CREATOR); DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(reply); final ContentProviderResult[] results = reply.createTypedArray(ContentProviderResult.CREATOR); data.recycle(); reply.recycle(); Loading @@ -496,28 +490,42 @@ final class ContentProviderProxy implements IContentProvider return results; } public int[] bulkUpdateEntities(Uri uri, Entity[] entities) throws RemoteException { public Uri insertEntity(Uri uri, Entity entity) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); try { data.writeInterfaceToken(IContentProvider.descriptor); uri.writeToParcel(data, 0); data.writeString(entities[0].getClass().getName()); data.writeInt(entities.length); for (Entity entity : entities) { data.writeParcelable(entity, 0); } mRemote.transact(IContentProvider.BULK_UPDATE_ENTITIES_TRANSACTION, data, reply, 0); mRemote.transact(IContentProvider.INSERT_ENTITIES_TRANSACTION, data, reply, 0); DatabaseUtils.readExceptionFromParcel(reply); int[] results = new int[entities.length]; reply.readIntArray(results); return Uri.CREATOR.createFromParcel(reply); } finally { data.recycle(); reply.recycle(); } } return results; public int updateEntity(Uri uri, Entity entity) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); try { data.writeInterfaceToken(IContentProvider.descriptor); uri.writeToParcel(data, 0); data.writeParcelable(entity, 0); mRemote.transact(IContentProvider.UPDATE_ENTITIES_TRANSACTION, data, reply, 0); DatabaseUtils.readExceptionFromParcel(reply); return reply.readInt(); } finally { data.recycle(); reply.recycle(); } } public int delete(Uri url, String selection, String[] selectionArgs) Loading core/java/android/content/ContentProviderOperation.java +141 −5 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
api/current.xml +167 −195 Original line number Diff line number Diff line Loading @@ -28053,36 +28053,6 @@ <parameter name="values" type="android.content.ContentValues[]"> </parameter> </method> <method name="bulkInsertEntities" return="android.net.Uri[]" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> </parameter> </method> <method name="bulkUpdateEntities" return="int[]" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> </parameter> </method> <method name="delete" return="int" abstract="true" Loading Loading @@ -28382,8 +28352,8 @@ deprecated="not deprecated" visibility="public" > <method name="bulkInsert" return="int" <method name="applyBatch" return="android.content.ContentProviderResult[]" abstract="false" native="false" synchronized="false" Loading @@ -28392,32 +28362,15 @@ deprecated="not deprecated" visibility="public" > <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="initialValues" type="android.content.ContentValues[]"> <parameter name="operations" type="android.content.ContentProviderOperation[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> </method> <method name="bulkInsertEntities" return="android.net.Uri[]" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="bulkUpdateEntities" return="int[]" <method name="bulkInsert" return="int" abstract="false" native="false" synchronized="false" Loading @@ -28426,9 +28379,9 @@ deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> <parameter name="initialValues" type="android.content.ContentValues[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> Loading Loading @@ -28652,6 +28605,8 @@ deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <method name="apply" return="android.content.ContentProviderResult" abstract="false" Loading @@ -28671,6 +28626,50 @@ <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> </method> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="getUri" return="android.net.Uri" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isReadOperation" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="isWriteOperation" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="newCountQuery" return="android.content.ContentProviderOperation.Builder" abstract="false" Loading Loading @@ -28753,6 +28752,31 @@ <parameter name="numBackRefs" type="int"> </parameter> </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> </class> <class name="ContentProviderOperation.Builder" extends="java.lang.Object" Loading @@ -28773,6 +28797,19 @@ visibility="public" > </method> <method name="withEntity" return="android.content.ContentProviderOperation.Builder" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="entity" type="android.content.Entity"> </parameter> </method> <method name="withExpectedCount" return="android.content.ContentProviderOperation.Builder" abstract="false" Loading Loading @@ -28849,6 +28886,8 @@ deprecated="not deprecated" visibility="public" > <implements name="android.os.Parcelable"> </implements> <constructor name="ContentProviderResult" type="android.content.ContentProviderResult" static="false" Loading @@ -28869,6 +28908,52 @@ <parameter name="count" type="int"> </parameter> </constructor> <constructor name="ContentProviderResult" type="android.content.ContentProviderResult" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="source" type="android.os.Parcel"> </parameter> </constructor> <method name="describeContents" return="int" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="writeToParcel" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="dest" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> </method> <field name="CREATOR" type="android.os.Parcelable.Creator" transient="false" volatile="false" static="true" final="true" deprecated="not deprecated" visibility="public" > </field> <field name="count" type="java.lang.Integer" transient="false" Loading Loading @@ -29018,40 +29103,27 @@ <parameter name="name" type="java.lang.String"> </parameter> </method> <method name="bulkInsert" return="int" abstract="false" native="false" synchronized="false" static="false" final="true" deprecated="not deprecated" visibility="public" > <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="values" type="android.content.ContentValues[]"> </parameter> </method> <method name="bulkInsertEntities" return="android.net.Uri[]" <method name="applyBatch" return="android.content.ContentProviderResult[]" abstract="false" native="false" synchronized="false" static="false" final="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> <parameter name="authority" type="java.lang.String"> </parameter> <parameter name="entities" type="android.content.Entity[]"> <parameter name="operations" type="android.content.ContentProviderOperation[]"> </parameter> <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="bulkUpdateEntities" return="int[]" <method name="bulkInsert" return="int" abstract="false" native="false" synchronized="false" Loading @@ -29060,12 +29132,10 @@ deprecated="not deprecated" visibility="public" > <parameter name="uri" type="android.net.Uri"> <parameter name="url" type="android.net.Uri"> </parameter> <parameter name="entities" type="android.content.Entity[]"> <parameter name="values" type="android.content.ContentValues[]"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="cancelSync" return="void" Loading Loading @@ -29276,7 +29346,7 @@ <parameter name="sortOrder" type="java.lang.String"> </parameter> </method> <method name="queryEntity" <method name="queryEntities" return="android.content.EntityIterator" abstract="false" native="false" Loading Loading @@ -32604,119 +32674,6 @@ </exception> </method> </interface> <interface name="IEntityIterator" abstract="true" static="false" final="false" deprecated="not deprecated" visibility="public" > <implements name="android.os.IInterface"> </implements> <method name="close" return="void" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="hasNext" return="boolean" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> <method name="next" return="android.content.Entity" abstract="true" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> </interface> <class name="IEntityIterator.Stub" extends="android.os.Binder" abstract="true" static="true" final="false" deprecated="not deprecated" visibility="public" > <implements name="android.content.IEntityIterator"> </implements> <constructor name="IEntityIterator.Stub" type="android.content.IEntityIterator.Stub" static="false" final="false" deprecated="not deprecated" visibility="public" > </constructor> <method name="asBinder" return="android.os.IBinder" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > </method> <method name="asInterface" return="android.content.IEntityIterator" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="obj" type="android.os.IBinder"> </parameter> </method> <method name="onTransact" return="boolean" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" > <parameter name="code" type="int"> </parameter> <parameter name="data" type="android.os.Parcel"> </parameter> <parameter name="reply" type="android.os.Parcel"> </parameter> <parameter name="flags" type="int"> </parameter> <exception name="RemoteException" type="android.os.RemoteException"> </exception> </method> </class> <class name="Intent" extends="java.lang.Object" abstract="false" Loading Loading @@ -46712,6 +46669,21 @@ <exception name="FileNotFoundException" type="java.io.FileNotFoundException"> </exception> </method> <method name="readExceptionWithOperationApplicationExceptionFromParcel" return="void" abstract="false" native="false" synchronized="false" static="true" final="false" deprecated="not deprecated" visibility="public" > <parameter name="reply" type="android.os.Parcel"> </parameter> <exception name="OperationApplicationException" type="android.content.OperationApplicationException"> </exception> </method> <method name="sqlEscapeString" return="java.lang.String" abstract="false"
core/java/android/content/ContentProvider.java +18 −20 Original line number Diff line number Diff line Loading @@ -151,9 +151,23 @@ public abstract class ContentProvider implements ComponentCallbacks { return ContentProvider.this.bulkInsert(uri, initialValues); } public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) { public Uri insertEntity(Uri uri, Entity entities) { checkWritePermission(uri); return ContentProvider.this.bulkInsertEntities(uri, entities); return ContentProvider.this.insertEntity(uri, entities); } public ContentProviderResult[] applyBatch(ContentProviderOperation[] operations) throws OperationApplicationException { for (ContentProviderOperation operation : operations) { if (operation.isReadOperation()) { checkReadPermission(operation.getUri()); } if (operation.isWriteOperation()) { checkWritePermission(operation.getUri()); } } return ContentProvider.this.applyBatch(operations); } public int delete(Uri uri, String selection, String[] selectionArgs) { Loading @@ -167,9 +181,9 @@ public abstract class ContentProvider implements ComponentCallbacks { return ContentProvider.this.update(uri, values, selection, selectionArgs); } public int[] bulkUpdateEntities(Uri uri, Entity[] entities) { public int updateEntity(Uri uri, Entity entity) { checkWritePermission(uri); return ContentProvider.this.bulkUpdateEntities(uri, entities); return ContentProvider.this.updateEntity(uri, entity); } public ParcelFileDescriptor openFile(Uri uri, String mode) Loading Loading @@ -403,14 +417,6 @@ public abstract class ContentProvider implements ComponentCallbacks { throw new UnsupportedOperationException(); } public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) { Uri[] result = new Uri[entities.length]; for (int i = 0; i < entities.length; i++) { result[i] = insertEntity(uri, entities[i]); } return result; } /** * A request to delete one or more rows. The selection clause is applied when performing * the deletion, allowing the operation to affect multiple rows in a Loading Loading @@ -459,14 +465,6 @@ public abstract class ContentProvider implements ComponentCallbacks { throw new UnsupportedOperationException(); } public int[] bulkUpdateEntities(Uri uri, Entity[] entities) { int[] result = new int[entities.length]; for (int i = 0; i < entities.length; i++) { result[i] = updateEntity(uri, entities[i]); } return result; } /** * Open a file blob associated with a content URI. * This method can be called from multiple Loading
core/java/android/content/ContentProviderClient.java +6 −10 Original line number Diff line number Diff line Loading @@ -96,22 +96,18 @@ public class ContentProviderClient { /** see {@link ContentProvider#insertEntity} */ public Uri insertEntity(Uri uri, Entity entity) throws RemoteException { return mContentProvider.bulkInsertEntities(uri, new Entity[]{entity})[0]; } /** see {@link ContentProvider#bulkInsertEntities} */ public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) throws RemoteException { return mContentProvider.bulkInsertEntities(uri, entities); return mContentProvider.insertEntity(uri, entity); } /** see {@link ContentProvider#updateEntity} */ public int updateEntity(Uri uri, Entity entity) throws RemoteException { return mContentProvider.bulkUpdateEntities(uri, new Entity[]{entity})[0]; return mContentProvider.updateEntity(uri, entity); } /** see {@link ContentProvider#bulkUpdateEntities} */ public int[] bulkUpdateEntities(Uri uri, Entity[] entities) throws RemoteException { return mContentProvider.bulkUpdateEntities(uri, entities); /** see {@link ContentProvider#applyBatch} */ public ContentProviderResult[] applyBatch(ContentProviderOperation[] operations) throws RemoteException, OperationApplicationException { return mContentProvider.applyBatch(operations); } /** Loading
core/java/android/content/ContentProviderNative.java +53 −45 Original line number Diff line number Diff line Loading @@ -154,37 +154,36 @@ abstract public class ContentProviderNative extends Binder implements IContentPr return true; } case BULK_INSERT_ENTITIES_TRANSACTION: case INSERT_ENTITIES_TRANSACTION: { data.enforceInterface(IContentProvider.descriptor); Uri uri = Uri.CREATOR.createFromParcel(data); String className = data.readString(); Class entityClass = Class.forName(className); int numEntities = data.readInt(); Entity[] entities = new Entity[numEntities]; for (int i = 0; i < numEntities; i++) { entities[i] = (Entity) data.readParcelable(entityClass.getClassLoader()); } Uri[] uris = bulkInsertEntities(uri, entities); Entity entity = (Entity) data.readParcelable(null); Uri newUri = insertEntity(uri, entity); reply.writeNoException(); reply.writeTypedArray(uris, 0); Uri.writeToParcel(reply, newUri); return true; } case BULK_UPDATE_ENTITIES_TRANSACTION: case UPDATE_ENTITIES_TRANSACTION: { data.enforceInterface(IContentProvider.descriptor); Uri uri = Uri.CREATOR.createFromParcel(data); String className = data.readString(); Class entityClass = Class.forName(className); int numEntities = data.readInt(); Entity[] entities = new Entity[numEntities]; for (int i = 0; i < numEntities; i++) { entities[i] = (Entity) data.readParcelable(entityClass.getClassLoader()); } int[] counts = bulkUpdateEntities(uri, entities); Entity entity = (Entity) data.readParcelable(null); int count = updateEntity(uri, entity); reply.writeNoException(); reply.writeIntArray(counts); reply.writeInt(count); return true; } case APPLY_BATCH_TRANSACTION: { data.enforceInterface(IContentProvider.descriptor); final ContentProviderOperation[] operations = data.createTypedArray(ContentProviderOperation.CREATOR); final ContentProviderResult[] results = applyBatch(operations); reply.writeNoException(); reply.writeTypedArray(results, 0); return true; } Loading Loading @@ -472,23 +471,18 @@ final class ContentProviderProxy implements IContentProvider return count; } public Uri[] bulkInsertEntities(Uri uri, Entity[] entities) throws RemoteException { public ContentProviderResult[] applyBatch(ContentProviderOperation[] operations) throws RemoteException, OperationApplicationException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); data.writeInterfaceToken(IContentProvider.descriptor); uri.writeToParcel(data, 0); data.writeString(entities[0].getClass().getName()); data.writeInt(entities.length); for (Entity entity : entities) { data.writeParcelable(entity, 0); } data.writeTypedArray(operations, 0); mRemote.transact(IContentProvider.APPLY_BATCH_TRANSACTION, data, reply, 0); mRemote.transact(IContentProvider.BULK_INSERT_ENTITIES_TRANSACTION, data, reply, 0); DatabaseUtils.readExceptionFromParcel(reply); Uri[] results = new Uri[entities.length]; reply.readTypedArray(results, Uri.CREATOR); DatabaseUtils.readExceptionWithOperationApplicationExceptionFromParcel(reply); final ContentProviderResult[] results = reply.createTypedArray(ContentProviderResult.CREATOR); data.recycle(); reply.recycle(); Loading @@ -496,28 +490,42 @@ final class ContentProviderProxy implements IContentProvider return results; } public int[] bulkUpdateEntities(Uri uri, Entity[] entities) throws RemoteException { public Uri insertEntity(Uri uri, Entity entity) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); try { data.writeInterfaceToken(IContentProvider.descriptor); uri.writeToParcel(data, 0); data.writeString(entities[0].getClass().getName()); data.writeInt(entities.length); for (Entity entity : entities) { data.writeParcelable(entity, 0); } mRemote.transact(IContentProvider.BULK_UPDATE_ENTITIES_TRANSACTION, data, reply, 0); mRemote.transact(IContentProvider.INSERT_ENTITIES_TRANSACTION, data, reply, 0); DatabaseUtils.readExceptionFromParcel(reply); int[] results = new int[entities.length]; reply.readIntArray(results); return Uri.CREATOR.createFromParcel(reply); } finally { data.recycle(); reply.recycle(); } } return results; public int updateEntity(Uri uri, Entity entity) throws RemoteException { Parcel data = Parcel.obtain(); Parcel reply = Parcel.obtain(); try { data.writeInterfaceToken(IContentProvider.descriptor); uri.writeToParcel(data, 0); data.writeParcelable(entity, 0); mRemote.transact(IContentProvider.UPDATE_ENTITIES_TRANSACTION, data, reply, 0); DatabaseUtils.readExceptionFromParcel(reply); return reply.readInt(); } finally { data.recycle(); reply.recycle(); } } public int delete(Uri url, String selection, String[] selectionArgs) Loading
core/java/android/content/ContentProviderOperation.java +141 −5 File changed.Preview size limit exceeded, changes collapsed. Show changes