我为我的 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 有什么问题?