1

我为我的 SQLiteDatabase 创建了一个 ContentProvider,而我正在使用的 Uri 与 UriMatcher 不匹配。在我的 ContentProvider 中,我有这些全局变量:

private static final String AUTHORITY = "com.MyProject.project.MyContentProvider";
private static final String TABLE_BASEPATH = "MyTable_tbl";
public static final Uri My_URI = Uri.parse("content://" + AUTHORITY + "/" + TABLE_BASEPATH);
public static final int EVERYTHING = 100;
public static final int FILTERED = 110;

然后,我有这个 UriMatcher:

private static final UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
static {    
    sURIMatcher.addURI(AUTHORITY, TABLE_BASEPATH, EVERYTHING);    
    sURIMatcher.addURI(AUTHORITY, TABLE_BASEPATH + "/#", FILTERED);
    }

在我的活动中,我有:

MyContentProvider mycontentProvider = new MyContentProvider ();
    mycontentProvider .delete(MY_URI, null, null);

在我的 SQLiteDatabase 中,我有:

public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + DATABASETABLE + " (" + KEY_ROWID
            + " INTEGER PRIMARY KEY AUTOINCREMENT, " + KEY_STITCHNAME
            + " TEXT NOT NULL, " + KEY_USES + " TEXT NOT NULL, "
            + KEY_VIDEOID + " TEXT NOT NULL, " + KEY_INSTR
            + " TEXT NOT NULL, " + KEY_NOTES + " TEXT NOT NULL, "
            + KEY_LEVEL + " TEXT NOT NULL, " + KEY_CHART
            + " TEXT NOT NULL)");

}

其中 DATABASETABLE 是我的 SQLiteDatabase 中的全局变量。它被分配了一个值,如下所示:

private static final String DATABASETABLE = "MyTable_tbl";

在我的 ContentProvider 的删除方法中,我做的第一件事是:

int uriType = sURIMatcher.match(uri);

这是我在清单中的应用程序标签内的内容:

<provider
    android:authorities="com.MyProject.project.MyContentProvider"
    android:exported="false"
    android:name="com.MyProject.project.MyContentProvider">        
</provider>

这将返回 uriType = -1。为什么?我如何构建我的 Uri 有什么问题?

4

0 回答 0