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の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が返されます。なんで?ウリの作り方の何が問題になっていますか?

4

0 に答える 0