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

发布于 2015-03-05 18:33:23
您应该使用startActivityForResult方法发送此意图。
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE);
intent.putExtra("android.content.extra.SHOW_ADVANCED", true);
startActivityForResult(intent, REQUEST_CODE);之后,您可以在onActivityResult方法中获得uuid。
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方法是隐藏的,所以我使用反射来获得它。
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);
}https://stackoverflow.com/questions/28605278
复制相似问题