【发布时间】:2021-11-03 23:36:36
【问题描述】:
我在 android 邮件应用程序中遇到崩溃,我追溯到 UriMatcher 未能匹配 URI。
相关代码:
UriMatcher sURIMatcher = new UriMatcher(UriMatcher.NO_MATCH);
sURIMatcher.addURI(EmailContent.AUTHORITY, "uiattachmentbycid/#/*", UI_ATTACHMENT_BY_CID);
int match = sURIMatcher.match(uri);
if (match < 0) {
throw new IllegalArgumentException("Unknown uri: " + uri);
}
这失败了
java.lang.IllegalArgumentException:未知 uri: content://com.android.email.provider/uiattachmentbycid/4127/assets/img/filiale-icon@2x.png
知道这里有什么问题吗?
【问题讨论】:
-
EmailContent.AUTHORITY的设置似乎很奇怪,所以也许它与com.android.email.provider不匹配。 -
我在那里放了一个调试 printf 并且权限确实是 com.android.email.provider 看来问题是斜杠的数量不同。检查 UriMatcher 的代码,它会遍历所有 uri 组件并尝试找到匹配的节点。添加的 URI 仅匹配“content://com.android.email.provider/uiattachmentbycid/4127/assets”,但之后的所有内容都没有匹配部分。 IE。 “*”不匹配斜线