1

IDが追加されたContentURIを取得し、IDを削除できるようにしたいと思います。

言い換えれば、私は次のようなコンテンツURIを持っています:

   org.mycontentproviderAuthority/path1/path2/3 

と私は取得したい

   org.mycontentproviderAuthority/path1/path2/

できればURIメソッドでそれを行うことは可能ですか?文字列トークナイザーを使用して最後の桁を削除できると思いますが、そのためのURIAPIの方が安全だと思います。

uri.getAuthority()+ uri.getPath()を試しましたが、ContentUri全体が返されます。

4

2 に答える 2

0

これは、コンテンツURIからIDを解析する例です http://appulearn.blogspot.com/2012/05/getting-android-id-from-uri-content.html

于 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 に答える