Android的文本和輸入---複製和粘貼

來源:互聯網
上載者:User

複製流化的資料 你可以複製和粘貼被流化的大文本和位元據。這種資料可以是以下形式: 1. 儲存在實際裝置上的的檔案; 2. 來自通訊端中的資料流; 3. 儲存在底層資料庫系統中的大資料。 針對資料流的內容提供器使用一個檔案描述對象(如AssetFileDescriptor,而不是Cursor對象)來提供對資料的訪問。粘貼資料的應用程式會使用這個檔案描述對象來讀取資料流。 按照以下步驟建立使用提供其來複製資料流的應用程式: 1. 建立一個準備放入剪貼簿上的資料流所對應的內容URI。包括以下可選的內容:      A.給資料流編製一個要放到URI上的標識,然後在包含該標識和對應資料流名稱的提供器中維護一個表;      B.直接把資料流的名稱編寫到該URI上;      C.使用能夠始終從該提供器中返回當前資料流的唯一URI。如果你選擇這種方法,你必須要記住,無論何時,通過URI把資料流複製到剪貼簿時,都要更新你的提供器,以便指向不同的資料流。 2. 給你計劃提供的每種資料流都提供一個MIME類型。粘貼資料的應用程式需要這個資訊來判斷它們是否可以粘貼剪貼簿上的資料。 3. 實現ContentProvider類中的一個方法,讓它返回對應資料流的檔案描述對象。如果你把標識編寫到了內容的URI上,就可以使用這個方法來判斷對應的資料流是否開啟。 4. 要把資料流複製到剪貼簿上,就要構造該內容的URI並把它放到剪貼簿上。 要粘貼一個資料流,應用程式就要從剪貼簿上擷取剪貼對象和其中的URI,並在調用ContentResolver對象的開啟資料流的檔案描述對象的方法中使用它。ContentResolver方法會調用對應的ContentProvider方法,並把內容的URI傳遞給它。你提供器會把這個檔案描述對象返回給ContentResolver的方法。然後粘貼資料的應用程式就有能力從資料流中讀取該資料了。 下面介紹了對內容提供器來說最為重要的幾個檔案描述對象方法。其中的每一個方法在ContentResolver對象都有對應的附加了Descriptor字串的方法名稱,例如:ContentReslolver中對應openAssetFile()方法的是openAssetFileDescriptor()方法。 openTypeAssetFile() 如果內容提供器支援所提供的MIME類型,那麼這個方法會返回一個資源檔的描述對象。調用者應用提供一個MIME類型模式。如果內容提供器可以提供這個MIME類型,   那麼它就會返回一個AssetFileDescriptor檔案控制代碼,否則它會拋出一個異常。 這個方法能夠處理檔案的內容,你可以使用它來讀取內容提供器已經複製到剪貼簿中資源。 openAssetFile() 這個方法是比openTypeAssetFile()方法更一般化的形式。它不針對MIME類型來進行過濾,但可以讀取檔案的內容。 openFile() 這個方法比openAssetFile()方法還要一般化。它不能夠檔案的內容。 你可以選擇使用代用檔案描述符方法的openPipeHelper()方法,它允許粘貼資料的應用程式在後台線程中使用管道來讀取流式資料。要使用這個方法,你需要實現ContentProvider.PipeDataWriter介面。在Note Pad樣本中就是這麼做的,詳細請看NotePadProvider.java的openTypeAssetFile()方法。 設計有效複製/粘貼功能 要給你的應用程式設計有效複製/粘貼功能,就要記住以下幾點: 1.  任何時候,在剪貼簿上都只有一個剪貼對象。系統中,任何一個新的應用程式的複製操作都會覆寫之前的剪貼對象。因為使用者在做了複製操作之後離開你的應用程式,因此你不能假設剪貼簿中所包含的剪貼對象就是之前在你的應用程式中複製的那個對象。 2.  每個剪下對象中的多個ClipData.Item對象的用途是支援對多個被選擇的對象的複製和粘貼,而不是對同一個選擇對象應用的不同形式。通常,剪貼對象中的所有的ClipData.Item對象都要要有相同的格式,也就是說,它們應用都是簡單的文本、內容URI或Intent對象,而不是混合的。 3.  在你提供資料時,你能夠提供不同的MIME說明。把MIME類型添加到ClipDescription對象中,然後在你的內容提供器中實現該MIME類型。 4.  當你從剪貼簿中擷取資料時,你的應用程式要負責檢查MIME類型是否可用,如果可用,然後再決定使用那種類型,否則即使在剪貼簿上有剪貼對象,並且使用者請求粘貼操作,那麼你的應用程式也不會執行粘貼操作。如果MIME類型是相容,你才應該執行粘貼操作。你可以選擇使用coerceToText()方法,把剪貼簿上的資料強制轉換成文本。如果你的應用程式支援多種可用的MIME類型,那麼你可以允許使用者來選擇使用那種類型。 分享到: 上一篇:Android的文本和輸入---複製和粘貼(五)  

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.