2016-11-05 2 views
0

ich die nächsten Content-Provider habe Um eine Zeile in der Tabelle AGENDA einzufügen, ich mache:Einfügen eine Zeile mit Android-Content-Provider

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

und alles funktioniert gut.

Aber jetzt möchte ich die URL mit AGENDA_INSERTWITHCONFLICT verwenden, um eine Zeile einzufügen. Bitte: Wie kann ich die Zeile ändern:

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

es zu tun?

Hier ist mein Provider:

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; 
    } 

} 

Antwort

1

make folgende Änderungen, Bitte verwenden Sie convetions Benennung nach Bedarf.

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

Aufrufmechanismus

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

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

Vielen Dank, Herr Sush –

+0

@LuizAlves Mein Vergnügen – Sush

Verwandte Themen