@@ -0,0 +1,2165 @@
+package org.positronicnet.sample.todo_cp;%0A%0Aimport android.net.Uri;%0A%0A// ContentProvider %22Contract%22 declarations for the Todo ContentProvider%0A// in tests for ContentExporter, etc.%0A%0Apublic class TodoContract %7B%0A%0A  // URIs for common queries/updates%0A%0A  public static String TODO_PREFIX = %0A    %22content://org.positronicnet.sample.todo_cp/%22;%0A%0A  public static String TODO_LISTS_PREFIX = TODO_PREFIX + %22lists%22;%0A  public static Uri    TODO_LISTS_URI = Uri.parse( TODO_LISTS_PREFIX );%0A%0A  public static Uri todoListUri( Long id ) %0A  %7B%0A    return Uri.withAppendedPath( TODO_LISTS_URI, Long.toString( id ));%0A  %7D%0A    %0A  public static String TODO_LIST_ITEMS_PATTERN = TODO_LISTS_PREFIX + %22/=/items%22;%0A%0A  public static Uri todoListItemsUri( Long listId )%0A  %7B%0A    return Uri.withAppendedPath( TODO_LISTS_URI, %0A                                 Long.toString( listId ) + %22/items%22 );%0A  %7D%0A%0A  public static String TODO_LIST_ITEM_PATTERN = TODO_LISTS_PREFIX+%22/=/items/=%22;%0A%0A  public static Uri todoListItemUri( Long listId, Long itemId )%0A  %7B%0A    return Uri.withAppendedPath( TODO_LISTS_URI, %0A                                 Long.toString( listId ) + %22/items/%22 + itemId );%0A  %7D%0A%0A  public static String TODO_LIST_TYPE = %22vnd.org.positronicnet.todolist%22;%0A  public static String TODO_ITEM_TYPE = %22vnd.org.positronicnet.todoitem%22;%0A%0A  // Columns for individual tables%0A%0A  static class List %7B%0A    public static String _ID  = %22_id%22;%0A    public static String NAME = %22name%22;%0A  %7D%0A%0A  static class Item %7B%0A%0A    // Note that todo_list_id is implicit in the URI scheme above,%0A    // and the provider is smart enough to use the values in the URIs%0A    // on inserts and updates, so there's no need to explicitly map it.%0A%0A    public static String _ID          = %22_id%22;%0A    public static String DESCRIPTION  = %22description%22;%0A    public static String IS_DONE      = %22is_done%22;%0A  %7D%0A%0A  // Generating content-types to match platform conventions.%0A  // Might want these somewhere where they'd be more generally useful%0A%0A  public static String dirContentType( String s )%0A  %7B%0A    return %22vnd.android.cursor.dir/%22+s;%0A  %7D%0A%0A  public static String rowContentType( String s )%0A  %7B%0A    return %22vnd.android.cursor.item/%22+s;%0A  %7D%0A%7D

Add ContentProvider Contract class for ContentProvider sample app.