プロバイダーに ContentProviderOperations のバッチを適用しています。
ContentProviderResult[] result = resolver.applyBatch(...)
すべてが期待どおりに機能し、データが DB に挿入されますが、id を抽出する場合、id である必要がある uri の最後の要素は常に null です。
これは、テーブルの _id を自動インクリメントに設定したために発生していますか (つまり、ID を自動インクリメントせず、コードから手動で uid を入力すると機能します)。
そうでない場合は、この動作の原因を教えてください。
更新:これは、テーブルを作成するための文字列です:
private static final String CREATE_TABLE_WORKFLOWSTATES =
"CREATE TABLE " + Tables.WORKFLOWSTATES + " ("
+ BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT,"
+ WorkflowStatesColumns.NAME + " TEXT NOT NULL,"
+ "UNIQUE ("+ WorkflowStatesColumns.NAME + ") ON CONFLICT IGNORE)";
テーブルを表示すると、列 _ idとnameが表示され、挿入されたデータが表示され、自動インクリメントが適切に機能していることがわかります。
更新 2:これは私が ContentProviderOperation を構築した方法です:
これは、ContentProviderOperations を使用した ArrayList です (CollectionUtils は、Arraylist をインスタンス化するためのカスタム クラスです)。
ArrayList<ContentProviderOperation> batch = CollectionUtils.newArrayList();
これが実際の操作です。
batch.add(ContentProviderOperation
.newInsert(InvoiceContract.addCallerIsSyncAdapterParameter(WorkflowStates.CONTENT_URI))
.withValue(WorkflowStates.NAME, task.getWFS()).build());