我有一个这样定义的权限字符串:
public final static String AUTHORITY = "dsndata.sds2mobile.jobprovider";
后跟 UriMatcher 的一个版本:
uriMatcher.addURI(JobMetaData.AUTHORITY, "/JobNames/*",
JOBNAME_SINGLE_URI);
传递给开关的 uri 是:
content://dsndata.sds2mobile.jobprovider/JobNames/test
这会通过开关并达到默认值(抛出 IllegalArgumentException)。
我错过了什么吗?我进行了搜索,但找不到任何可以解释不匹配的内容。
最佳答案
我对 IllegalArgumentException 也有同样的问题。即使那些调试 Uri 的也是一样的! [让我发疯]。如果你先定义了 */匹配,那似乎匹配并阻止其他人匹配。 顺序很重要!!
我重新排序,'external_warning_id' 现在可以正常工作了。
//putting it first as /* seems to get matched first
URL_MATCHER.addURI(AUTHORITY, TABLE_NAME.toLowerCase() + "/external_warning_id" + "/*",
EXTERNAL_WARNING_ID);
// was the first entry in static block
URL_MATCHER.addURI(AUTHORITY, TABLE_NAME.toLowerCase() + "/*", WARNING__ID);
关于android - Android 中 URI 匹配器的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4719192/