1

しばらく試してみましたが、URI マッチングの問題を解決できないようです。どんな助けでも大歓迎です。

コンテンツ uri と uri マッチャーの宣言は次のとおりです。

private static final String AUTHORITY = "edu.uprm.civil.db";

public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY);

private static UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
static {
    sURIMatcher.addURI(AUTHORITY, "/get-table" + "/*", TABLE_REQUEST_CODE);
    sURIMatcher.addURI(AUTHORITY, "/get-row" + "/*", ROW_REQUEST_CODE);
    sURIMatcher.addURI(AUTHORITY, "/search" + "/*", TABLE_SEARCH_REQUEST_CODE);
}

渡される uri は、次のコードで構築されます。

    Uri.Builder uriBuilder = DBContentProvider.CONTENT_URI.buildUpon();

    switch(id){
    case LOADER_GET_TABLE_ID :
        uriBuilder.appendPath("get-table");
        uriBuilder.appendPath("q");
        uriBuilder.appendQueryParameter("table", formID);
        return new CursorLoader(context, uriBuilder.build(), null, null, null, null);
    case ...

メソッドをデバッグすると、パラメーターに含まれる URI を確認できますが、一致することはありません。

uri の取得方法:

content://edu.uprm.civil.db/get-table/q?table=150

さらに情報が必要な場合はお知らせください。それは私にとって頭痛の種でした...

4

1 に答える 1

0

のルールを変更し、パス パラメータからUriMatcher開始を削除します。/

sURIMatcher.addURI(AUTHORITY, "get-table" + "/*", TABLE_REQUEST_CODE);
sURIMatcher.addURI(AUTHORITY, "get-row" + "/*", ROW_REQUEST_CODE);
sURIMatcher.addURI(AUTHORITY, "search" + "/*", TABLE_SEARCH_REQUEST_CODE);
于 2012-04-21T09:56:53.670 に答える