首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android 5 SD卡标签

Android 5 SD卡标签
EN

Stack Overflow用户
提问于 2015-02-19 11:32:50
回答 1查看 1.5K关注 0票数 0

当我发送ACTION_OPEN_DOCUMENT_TREE意图时,我可以看到某种SD卡标签。我怎样才能在我的申请中得到它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-05 18:33:23

您应该使用startActivityForResult方法发送此意图。

代码语言:javascript
复制
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
startActivityForResult(intent, REQUEST_CODE);

之后,您可以在onActivityResult方法中获得uuid。

代码语言:javascript
复制
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    Uri treeUri = intent.getData();
    final int splitIndex = treeId.indexOf(':', 1);
    final String uuid = treeId.substring(0, splitIndex);
}

uuid是您正在寻找的文本。

如果需要获取所有存储的uuid,而不显示文档树选择器,则可以使用StorageManager。但是getVolumeList和getUuid方法是隐藏的,所以我使用反射来获得它。

代码语言:javascript
复制
    StorageManager mStorageManager = (android.os.storage.StorageManager) mContext
                .getSystemService(Context.STORAGE_SERVICE);

        Class<?> storageVolumeClazz = Class.forName("android.os.storage.StorageVolume");

        Method getVolumeList = mStorageManager.getClass().getMethod("getVolumeList");
        Method getUuid = storageVolumeClazz.getMethod("getUuid");
        Object result = getVolumeList.invoke(mStorageManager);

        final int length = Array.getLength(result);
        for (int i = 0; i < length; i++) {
            Object storageVolumeElement = Array.get(result, i);
            String uuid = (String) getUuid.invoke(storageVolumeElement);
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28605278

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档