if (fileUri.getScheme().equals(ContentResolver.SCHEME_CONTENT))
{
Cursor cursor = getApplicationContext().getContentResolver().query(
fileUri,
new String[] { android.provider.MediaStore.Images.ImageColumns.DISPLAY_NAME },
null,
null,
null);
cursor.moveToFirst();
fileName = cursor.getString(0);
cursor.close();
}
我正在使用此代码块来检索Content Uri的名称和大小,到目前为止,它适用于所有提供Content Uri的云存储应用程序(OneDrive,Dropbox,Google Drive,框)。
在OneDrive最新更新(版本2.7.0)之后启动了问题,该更新添加了使用存储访问框架打开文件的选项。当您通过Intent Chooser(" Open From")在Nexus设备上选择文件时,OneDrive应用程序会出现两次(请参阅sattached屏幕截图): https://www.dropbox.com/s/klu11xc8mqi1acu/Screenshot_2014-09-28-11-49-34.png?dl=0
从"鞋帮"中选择任何文件。 OneDrive将返回内容Uri 文件大小始终为0,文件名始终是URI本身。 但是,从" lower"中选择任何文件。 OneDrive将返回一个File Uri(缓存) 文件大小和名称是正确的。
非常感谢任何帮助。