我想检索带有附加ID的ContentURI,并且能够删除id。
换句话说,我有一个内容URI,例如:
org.mycontentproviderAuthority/path1/path2/3
我想得到
org.mycontentproviderAuthority/path1/path2/
是否可以使用Uri方法做到这一点?我的意思是我想我可以使用String tokenizer来删除最后一个数字,但是我认为这样的uri api会更安全。
我尝试了uri.getAuthority()+ uri.getPath(),但这让我回到了整个ContentUri。
答案 0 :(得分:0)
答案 1 :(得分:0)
您可以使用以下内容:
static public Uri getUriWithoutLastNPathParts(final Uri uri, final int n) {
final List<String> segments = uri.getPathSegments();
final String[] newSegments = new String[segments.size() - n];
final Uri.Builder builder = new Uri.Builder();
builder.encodedAuthority(uri.getAuthority());
builder.encodedPath(uri.getPath());
builder.encodedQuery(uri.getQuery());
// no "appendPath", it messes up the thing
for (int i = 0; i < newSegments.length; i++) {
newSegments[i] = segments.get(i);
}
builder.encodedPath(TextUtils.join("/", newSegments));
return builder.build();
}
用法:
Uri uri = Uri.parse("org.mycontentproviderAuthority/path1/path2/3");
Log.i("Segments", uri + " " + getUriWithoutLastNPathParts(uri, 1));
uri = Uri.parse("org.mycontentproviderAuthority/path1/path2/3?foo=bar");
Log.i("Segments", uri + " " + getUriWithoutLastNPathParts(uri, 2));