- Android入門基礎:從這裡開始
- Android分享操作
- Android多媒體
- Android圖像與動畫
- Android網絡連接與雲服務
- Android聯繫人與位置信息
- Android可穿戴應用
- Android TV應用
- Android企業級應用
- Android交互設計
- Android界面設計
- Android用戶輸入
- Android後臺任務
- Android性能優化
- Android安全與隱私
- Android測試程序
獲取文件信息
編寫:jdneo - 原文:http://developer.android.com/training/secure-file-sharing/retrieve-info.html
當一個客戶端應用程序擁有了文件的Content URI之後,它就可以獲取該文件並進行下一步的工作了,但在此之前,客戶端應用程序還可以向服務端應用程序獲取關於文件的信息,包括文件的數據類型和文件大小等等。數據類型可以幫助客戶端應用程序確定自己能否處理該文件,文件大小能幫助客戶端應用程序為文件設置合理的緩衝區。
本課將展示如何通過查詢服務端應用程序的FileProvider來獲取文件的MIME類型和文件大小。
獲取文件的MIME類型
客戶端應用程序可以通過文件的數據類型判斷自己應該如何處理這個文件的內容。客戶端應用程序可以通過調用ContentResolver.getType()方法獲得Content URI所對應的文件數據類型。該方法返回文件的MIME類型。默認情況下,一個FileProvider通過文件的後綴名來確定其MIME類型。
下例展示了當服務端應用程序將Content URI返回給客戶端應用程序後,客戶端應用程序應該如何獲取文件的MIMIE類型:
...
/*
* Get the file's content URI from the incoming Intent, then
* get the file's MIME type
*/
Uri returnUri = returnIntent.getData();
String mimeType = getContentResolver().getType(returnUri);
...
獲取文件名及文件大小
FileProvider類有一個query()方法的默認實現,它返回一個Cursor對象,該Cursor對象包含了Content URI所關聯的文件的名稱和大小。默認的實現返回下面兩列信息:
文件名,String類型。這個值和File.getName()所返回的值一樣。
文件大小,以字節為單位,long類型。這個值和File.length()所返回的值一樣。
客戶端應用可以通過將query()的除了Content URI之外的其他參數都設置為“null”,來同時獲取文件的名稱(DISPLAY_NAME)和大小(SIZE)。例如,下面的代碼獲取一個文件的名稱和大小,然後在兩個TextView中將他們顯示出來:
...
/*
* Get the file's content URI from the incoming Intent,
* then query the server app to get the file's display name
* and size.
*/
Uri returnUri = returnIntent.getData();
Cursor returnCursor =
getContentResolver().query(returnUri, null, null, null, null);
/*
* Get the column indexes of the data in the Cursor,
* move to the first row in the Cursor, get the data,
* and display it.
*/
int nameIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME);
int sizeIndex = returnCursor.getColumnIndex(OpenableColumns.SIZE);
returnCursor.moveToFirst();
TextView nameView = (TextView) findViewById(R.id.filename_text);
TextView sizeView = (TextView) findViewById(R.id.filesize_text);
nameView.setText(returnCursor.getString(nameIndex));
sizeView.setText(Long.toString(returnCursor.getLong(sizeIndex)));
...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论