1

我想检索带有附加 id 的 ContentURI 并能够删除 id。

换句话说,我有一个 Content URI,例如:

   org.mycontentproviderAuthority/path1/path2/3 

我想得到

   org.mycontentproviderAuthority/path1/path2/

是否可以最好使用 Uri 方法来做到这一点?我的意思是我想我可以使用字符串标记器来删除最后一个数字,但我假设一个 uri api 会更安全。

我尝试了 uri.getAuthority() + uri.getPath() 但这给了我整个 ContentUri。

4

2 回答 2

0

这是从内容 URI http://appulearn.blogspot.com/2012/05/getting-android-id-from-uri-content.html解析 ID 的示例

于 2012-11-01T14:16:35.887 回答
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));
于 2012-11-01T15:01:50.887 回答