0

我想創建一個DocumentsProvider來管理指定的文件夾。我有另一個應用程序需要使用這個DocumentsProvider瀏覽/管理文件夾中的文件。如何在不使用意圖的情況下直接訪問我的應用程序中的DocumentsProvider?

我看到很多使用intent和startActivity的示例代碼,然後使用DocumentsUI來獲取URI。是否有可能通過我的應用程序直接訪問DocumentsProvider而不使用意圖?

我試着使用固定URI作爲我的DocumentsProvider,並嘗試使用DocumentsContract來訪問它,但它會遇到「SecurityException:沒有爲UID和Uri找到可持久的權限授予」。我也先使用grantUriPermission(),但它沒有幫助。

是否有任何方式使用固定(預定義)URI而不是來自返回意圖的URI來訪問DocumentsProvider?

+0

'看到很多調用DocumentsUI'的示例代碼。不知道你的意思是什麼。你能給個例子嗎? – greenapps

+0

'DocumentsProvider'的意義在於通過存儲訪問框架(例如'ACTION_OPEN_DOCUMENT')爲其他應用程序訪問這些文檔。如果這不是你想要的,不要實現'DocumentsProvider'。如果你想'ACTION_OPEN_DOCUMENT'支持,*也*希望直接使用'DocumentsProvider',你可以嘗試使用'DocumentsContract',但我不知道你的客戶端應用程序將如何獲得文檔的許可。 – CommonsWare

+0

是的,我試過了,但正如你所說的那樣獲得許可問題。 –

回答

0

就像CommonsWare在評論中所說的,你可能正在嘗試使用一種用於其他目的的東西,但實現你所說的並不是不可能的。

看起來你自己擁有這兩個應用程序,所以你可以通過分配sharedUserId讓他們共享相同的UID,並且你應該能夠與DocumentsProvider交談。

或者,您可以在擁有DocumentsProvider的應用程序中定義一個特殊活動,在該應用程序中將URI權限授予其他應用程序。那麼你應該可以訪問它。雖然不確定這是否是您想要的,因爲您仍然需要發起啓動非UI活動的意圖。

相關問題