<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                > 編寫:[jdneo](https://github.com/jdneo) - 原文:[http://developer.android.com/training/secure-file-sharing/retrieve-info.html](http://developer.android.com/training/secure-file-sharing/retrieve-info.html) 當一個客戶端應用程序擁有了文件的Content URI之后,它就可以獲取該文件并進行下一步的工作了,但是在此之前,客戶端應用程序還可以向服務端應用程序索取關于文件的信息,包括文件的數據類型和文件大小等等。數據類型可以幫助客戶端應用程序確定自己能否處理該文件,文件大小能幫助客戶端應用程序為文件設置合理的緩沖區。 這節課將展示如何通過查詢服務端應用程序的[FileProvider](http://developer.android.com/reference/android/support/v4/content/FileProvider.html)來獲取文件的MIME類型和文件大小。 ### 獲取文件的MIME類型 客戶端應用程序可以通過文件的數據類型判斷自己應該如何處理這個文件的內容。為了得到Content URI所對應的文件數據類型,客戶端應用程序可以調用[ContentResolver.getType()](http://developer.android.com/reference/android/content/ContentResolver.html#getType(android.net.Uri))方法。這個方法返回了文件的MIME類型。默認情況下,一個[FileProvider](http://developer.android.com/reference/android/support/v4/content/FileProvider.html)通過文件的后綴名來確定其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](http://developer.android.com/reference/android/support/v4/content/FileProvider.html)類有一個[query()](http://developer.android.com/reference/android/support/v4/content/FileProvider.html#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String))方法的默認實現,它返回一個[Cursor](http://developer.android.com/reference/android/database/Cursor.html)對象,該Cursor對象包含了Content URI所關聯的文件的名稱和大小。默認的實現返回下面兩列信息: [**DISPLAY_NAME**](http://developer.android.com/reference/android/provider/OpenableColumns.html#DISPLAY_NAME) 文件的文件名,它是一個[String](http://developer.android.com/reference/java/lang/String.html)類型。這個值和[File.getName()](http://developer.android.com/reference/java/io/File.html#getName())所返回的值是一樣的。 [**SIZE**](http://developer.android.com/reference/android/provider/OpenableColumns.html#SIZE) 文件的大小,以字節為單位,它是一個long類型。這個值和[File.length()](http://developer.android.com/reference/java/io/File.html#length())所返回的值是一樣的。 客戶端應用可以通過將[query()](http://developer.android.com/reference/android/support/v4/content/FileProvider.html#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String))的除了Content URI之外的其他參數都設置為“null”,來同時獲取文件的[名稱](http://developer.android.com/reference/android/provider/OpenableColumns.html#DISPLAY_NAME)(DISPLAY_NAME)和[大小](http://developer.android.com/reference/android/provider/OpenableColumns.html#SIZE)(SIZE)。例如,下面的代碼獲取一個文件的[名稱](http://developer.android.com/reference/android/provider/OpenableColumns.html#DISPLAY_NAME)和[大小](http://developer.android.com/reference/android/provider/OpenableColumns.html#SIZE),然后在兩個[TextView](http://developer.android.com/reference/android/widget/TextView.html)中將他們顯示出來: ~~~ ... /* * 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))); ... ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看