Uri 匹配器与 uri 不匹配
Uri Matcher doesn't match uri
这是我的 Uri 匹配器
static UriMatcher buildUriMatcher() {
UriMatcher mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
// Bind uriMatcher int constants and uris
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_DRIVE, DRIVE_LIST);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_DRIVE + "/#", DRIVE_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE, FILE_LIST);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/*", FILE_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/drive/#", FILE_LIST_WITH_DRIVE_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/file/*", FILE_LIST_WITH_FOLDER_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/drive/#/*", FILE_LIST_WITH_DRIVE_ID_AND_FOLDER_ID);
// Return the new matcher!
return mUriMatcher;
}
这里是PATH_FILE常量
public static final String PATH_FILE = "file";
UriMatcher 与我的 uri 不匹配
URI : content://olexiimuraviov.ua.onespace_diplomaproject/file/drive/11/root
这里有一个例外
java.lang.UnsupportedOperationException:
Unknown uri: content://olexiimuraviov.ua.onespace_diplomaproject/file/drive/11/root
at OneSpaceProvider.query(...)
我尝试调试,但一无所获。 Uri 模式看起来很好,给定的 uri 也很好,但匹配器不匹配它。你能帮我解决这个问题吗?提前致谢!
正如 Selvin 在他的示例中所述,有问题的规则是绑定 FILE_ID 的规则。段的第一部分匹配,因此它不会尝试查找匹配该段的任何其他规则。把那个规则移到最后应该没问题。
这是我的 Uri 匹配器
static UriMatcher buildUriMatcher() {
UriMatcher mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
// Bind uriMatcher int constants and uris
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_DRIVE, DRIVE_LIST);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_DRIVE + "/#", DRIVE_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE, FILE_LIST);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/*", FILE_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/drive/#", FILE_LIST_WITH_DRIVE_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/file/*", FILE_LIST_WITH_FOLDER_ID);
mUriMatcher.addURI(OneSpaceContract.CONTENT_AUTHORITY, OneSpaceContract.PATH_FILE + "/drive/#/*", FILE_LIST_WITH_DRIVE_ID_AND_FOLDER_ID);
// Return the new matcher!
return mUriMatcher;
}
这里是PATH_FILE常量
public static final String PATH_FILE = "file";
UriMatcher 与我的 uri 不匹配
URI : content://olexiimuraviov.ua.onespace_diplomaproject/file/drive/11/root
这里有一个例外
java.lang.UnsupportedOperationException:
Unknown uri: content://olexiimuraviov.ua.onespace_diplomaproject/file/drive/11/root
at OneSpaceProvider.query(...)
我尝试调试,但一无所获。 Uri 模式看起来很好,给定的 uri 也很好,但匹配器不匹配它。你能帮我解决这个问题吗?提前致谢!
正如 Selvin 在他的示例中所述,有问题的规则是绑定 FILE_ID 的规则。段的第一部分匹配,因此它不会尝试查找匹配该段的任何其他规则。把那个规则移到最后应该没问题。