儲存控制元件是一種特殊的安全控制元件,它允許使用者透過點選按鈕臨時獲取儲存許可權,而無需透過許可權彈框進行授權確認。
整合儲存控制元件後,當使用者點選該控制元件時,應用會獲得10秒內訪問媒體庫特權介面的授權。這適用於任何需要將檔案儲存到媒體庫的應用場景,例如儲存圖片或影片等。
與需要觸發系統應用並由使用者選擇具體儲存路徑的Picker不同,儲存控制元件可以直接儲存到指定的媒體庫路徑,使得操作更為便捷。
儲存控制元件效果如圖所示。
約束與限制
- 當使用者首次點選應用中的儲存控制元件,系統將彈窗請求使用者授權。如果使用者點選“取消”,彈窗消失,應用無授權,使用者再次點選儲存控制元件時,將會重新彈窗;如果使用者點選“允許”,彈窗消失,應用將被授予臨時儲存許可權,此後點選該應用的儲存控制元件將不會彈窗。
- 應用在onClick()觸發回撥到呼叫媒體庫特權介面的時間間隔不能大於10秒。
- 使用者點選一次控制元件,僅獲取一次授權呼叫。
- 為了保障使用者的隱私不被惡意應用獲取,應用需確保安全控制元件是可見的且使用者能夠識別的。開發者需要合理的配置控制元件的尺寸、顏色等屬性,避免視覺混淆的情況,如果發生因控制元件的樣式不合法導致授權失敗的情況,請檢查裝置錯誤日誌。
開發步驟
以儲存對話中圖片為例,應用僅需要在前臺期間,短暫使用儲存圖片的特性,不需要長時間使用。此時,可以直接使用安全控制元件中的儲存控制元件,免去許可權申請和許可權請求等環節,獲得臨時授權,儲存對應圖片。
- 匯入檔案和媒體庫依賴。
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { fileIo } from '@kit.CoreFileKit';
- 設定圖片資源,並新增儲存控制元件。
儲存控制元件是一種類似於按鈕的安全控制元件,由圖示、文字和背景組成。其中,圖示和文字至少需要有一個,背景是必選的。圖示和文字不能自定義,只能從已有的選項中選擇。在宣告安全控制元件的介面時,有傳參和不傳參兩種方式。不傳參將預設建立一個包含圖示、文字和背景的按鈕,傳參則根據引數建立,不包含未配置的元素。