我正在開發需要訪問外部存儲的自定義複合視圖。我如何在不涉及外部參與方的情況下執行權限處理,即活動或片段?如何處理Activity和Fragment之外的權限請求?
我知道我可以使用視圖的上下文請求權限,但是如何在視圖內處理onRequestPermissionsResult()
?它甚至有可能嗎?
如果這是不可能的,那麼處理這種事情的最優雅的解決方案是什麼?
我正在開發需要訪問外部存儲的自定義複合視圖。我如何在不涉及外部參與方的情況下執行權限處理,即活動或片段?如何處理Activity和Fragment之外的權限請求?
我知道我可以使用視圖的上下文請求權限,但是如何在視圖內處理onRequestPermissionsResult()
?它甚至有可能嗎?
如果這是不可能的,那麼處理這種事情的最優雅的解決方案是什麼?
我正在開發一個定製的複合視圖需要訪問外部存儲
恕我直言,這是一個架構的bug。 A View
用於向用戶顯示內容,有時用於收集低級輸入事件並將它們轉換爲高級構造(例如點擊,滑動)。 A View
不應該與文件,數據庫等有任何連接。請參閱MVC,MVP,MVVM和類似的GUI體系結構模式。
WebView
不遵守這個規定會導致問題(例如,在主應用程序線程上執行磁盤I/O)。
如何在不涉及外部參與方的情況下執行權限處理,即活動或片段?
你不行。活動或片段有責任請求權限,可能在您的視圖需要此數據之前。
什麼是最優雅的解決方案來處理這樣的事情?
提取此View
成別的東西,由活動或片段,其中與該數據相關聯的訪問的線程,權限和其它工作可以管理的被管理的數據訪問部。
它只能在活動和片段中使用。
你可以做的是在你的View中複製public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults)
,並在Context或者Activity所在的Activity或Fragment對應的那個方法中調用該方法。