【问题标题】:What does MediaStore.Images.Media.getContentUri(String volumeName):Uri do?MediaStore.Images.Media.getContentUri(String volumeName):Uri 是做什么的?
【发布时间】:2014-02-27 21:11:08
【问题描述】:

Content Provider Media API 的公共方法在我看来非常简单,除了这个。我不确定这是做什么的或如何使用它。任何有关使用的见解将不胜感激。

【问题讨论】:

  • 今天我在研究 MediaStore.Audio.Media.getContentUri(String volumeName) 方法时遇到了同样的问题。发表于 1 个月前,44 次浏览但没有人能够回复? :(

标签: android


【解决方案1】:

如源代码所示,您对INTERNAL_CONTENT_URI 使用“内部”,对EXTERNAL_CONTENT_URI 使用“外部”:

    /**
     * Get the content:// style URI for the image media table on the
     * given volume.
     *
     * @param volumeName the name of the volume to get the URI for
     * @return the URI to the image media table on the given volume
     */
    public static Uri getContentUri(String volumeName) {
        return Uri.parse(CONTENT_AUTHORITY_SLASH + volumeName +
                "/images/media");
    }

    /**
     * The content:// style URI for the internal storage.
     */
    public static final Uri INTERNAL_CONTENT_URI =
            getContentUri("internal");

    /**
     * The content:// style URI for the "primary" external storage
     * volume.
     */
    public static final Uri EXTERNAL_CONTENT_URI =
            getContentUri("external");

CONTENT_AUTHORITY_SLASHcontent://media/ 一样好。

public static final String AUTHORITY = "media";

private static final String CONTENT_AUTHORITY_SLASH = "content://" + AUTHORITY + "/";

【讨论】:

  • 但是volumeName指的是你SD卡上的目录名吗?
  • @NoniA。 volumeName 指的是type of storage。通常内部被认为是私有的和外部公共的。
【解决方案2】:

我认为卷名是"external""internal" 来指代媒体的外部(SD 卡)和内部位置。每个Media 子容器都有这个。

它们还具有用于 Internal 和 External URI 的静态常量,这可能比 getContentUri(volumeName) 更适合使用

即,我认为(但我尚未验证)

MediaStore.Images.Media.getContentUri("external").equals(MediaStore.Images.Media.EXTERNAL_CONTENT_URI)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-12
    • 2011-11-17
    • 1970-01-01
    • 2013-02-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多