2016-11-05 5 views
0

У меня есть следующий контент-провайдера Для вставки строки в таблице ПОВЕСТКЕ, я:Вставка строки с Android Content Provider

ContentValues values = new ContentValues(1); 
values.put("MSG", "test"); 
    context.getContentResolver().insert(DataProvider.CONTENT_URI_AGENDA, values); 

и все работает хорошо.

Но теперь я хотел бы использовать uri с AGENDA_INSERTWITHCONFLICT, чтобы вставить строку. Пожалуйста, Как я могу изменить строку:

context.getContentResolver().insert(DataProvider.CONTENT_URI_AGENDA, values); 

, чтобы сделать это?

Вот мой провайдер:

public class DataProvider extends ContentProvider { 
    public static final String TAGPROVIDER = "net.techabout.medappointment.provider"; 
    public static final Uri CONTENT_URI_AGENDA = Uri.parse("content://"+TAGPROVIDER+"/agenda"); 

    public static final String TABLE_AGENDA = "agenda"; 

    private DbHelper dbHelper; 

    private static final int AGENDA_ALLROWS = 5; 
    private static final int AGENDA_INSERTWITHCONFLICT=7; 

    private static final UriMatcher uriMatcher; 

    static { 
     uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
     uriMatcher.addURI(TAGPROVIDER, "agenda", AGENDA_ALLROWS); 
     uriMatcher.addURI(TAGPROVIDER, "agenda", AGENDA_INSERTWITHCONFLICT); 
    } 

    @Override 
    public Uri insert(Uri uri, ContentValues values) { 
     SQLiteDatabase db = dbHelper.getWritableDatabase(); 

     long id; 
     switch (uriMatcher.match(uri)) { 
      case AGENDA_ALLROWS: 
       id = db.insertOrThrow(TABLE_AGENDA, null, values); 
       break; 
      case AGENDA_INSERTWITHCONFLICT: 
        id=db.insertWithOnConflict(TABLE_AGENDA, BaseColumns._ID, values, SQLiteDatabase.CONFLICT_REPLACE); 
        break; 

      default: 
       throw new IllegalArgumentException("Unsupported URI: " + uri); 
     } 

     Uri insertUri = ContentUris.withAppendedId(uri, id); 
     getContext().getContentResolver().notifyChange(insertUri, null); 
     return insertUri; 
    } 

} 

ответ

1

сделайте следующие изменения, пожалуйста, используйте именовании convetions по мере необходимости.

// content provider 
static { 
    uriMatcher = new UriMatcher(UriMatcher.NO_MATCH); 
    uriMatcher.addURI(TAGPROVIDER, "agenda", AGENDA_ALLROWS); 
    uriMatcher.addURI(TAGPROVIDER, "agenda_insert_conflicts", AGENDA_INSERTWITHCONFLICT); 
} 

вызов механизм

String URL = "net.techabout.medappointment.provider/agenda_insert_conflicts"; 

    Uri uri = Uri.parse(URL); 
context.getContentResolver().insert(uri , values); 
+0

Спасибо, г-н Sush –

+0

@LuizAlves удовольствие – Sush