2

我有一个为 ShareActionProvider 进行后台处理的自定义 ContentProvider。提供的 Uri 的路径是完整的文件路径(例如:/mnt/sdcard/my.file)。uri 是这样创建的:

content://AUTHORITY/mnt/sdcard/my.file

uri 匹配被描述为:

uriMatcher.addURI(AUTHORITY, "*", 1);

现在这适用于:

content://AUTHORITY/my.file

但它不适用于完整路径。有没有办法匹配任意数量的路径段?

4

2 回答 2

1

uriMatcher 的通配符 * 一次匹配 1 个段,所以如果你想匹配

content://AUTHORITY/mnt/sdcard/my.file

你应该使用

uriMatcher.addURI(AUTHORITY, "*/*/*", 1);

这可能不是您想要的,因为您必须知道您收到了多少段。因此,您可能应该实现自己的方式来匹配 uri 并提取所需的段(类似于 uri.getPathSegments(),并遍历这些段以获取路径的每个部分)。

最好的。

于 2014-02-06T09:51:04.523 回答
0

我改用了 uri 片段:

content://AUTHORITY/file.ext#/full/path/to/file.ext

您可以使用以下方法获取完整路径:

uri.getFragment()
于 2015-10-16T00:35:07.473 回答