我有一个自定义ContentProvider,可以为ShareActionProvider进行后台处理。提供的Uri的路径是完整的文件路径(例如:/mnt/sdcard/my.file)。 uri是这样创建的:
content://AUTHORITY/mnt/sdcard/my.file
uri匹配描述为:
uriMatcher.addURI(AUTHORITY, "*", 1);
现在这适用于:
content://AUTHORITY/my.file
但它不适用于完整路径。有没有办法匹配任何数量的路径段?
答案 0 :(得分:1)
uriMatcher的通配符*一次匹配1个段,所以如果你想匹配
content://AUTHORITY/mnt/sdcard/my.file
你应该使用
uriMatcher.addURI(AUTHORITY, "*/*/*", 1);
这可能不是您想要的,因为您必须知道您接收的段数。因此,您可能应该实现自己的方式来匹配uris并提取所需的段(类似于uri.getPathSegments(),并遍历段以获取路径的每个部分)。
贝斯茨。
答案 1 :(得分:0)
我改为使用了uri片段:
content://AUTHORITY/file.ext#/full/path/to/file.ext
您可以通过以下方式获取完整路径:
uri.getFragment()