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のdeleteメソッドでは、最初に行うことは次のとおりです。
int uriType = sURIMatcher.match(uri);
これは、アプリケーションタグ内のマニフェストにあるものです。
<provider
android:authorities="com.MyProject.project.MyContentProvider"
android:exported="false"
android:name="com.MyProject.project.MyContentProvider">
</provider>
これにより、uriType=-1が返されます。なんで?ウリの作り方の何が問題になっていますか?