背景
我有一個日記應用程序,允許用戶將照片附加到來自相機或存儲的條目。該應用程序以內容的形式在數據庫中存儲對圖像文件的引用:// Uri字符串。這似乎可靠地工作。是否可以請求讀取特定內容的Uri?
現在我想創建一個更基本的應用程序的免費版本,但我需要包括一個機制,以便將數據導入更高級的應用程序,如果用戶選擇升級。這很容易用導出的ContentProvider完成,但是嘗試從內容中讀取Uris結果的SecurityException,因爲它是一個不同的應用程序。
問題
是否可以請求對已知Uri的持久讀訪問?我知道如何使用由ACTION_OPEN_DOCUMENT
返回的Uri上的takePersistableUriPermission
意圖,但我沒有看到用特定的Uri做到這一點的方法。
可能的解決方案
- 使用一個單一的應用程序與應用程序內購買解鎖的全部功能。我想避免的原因是它依賴於Google Play,並且免費版本的文件大小將會不必要的大。
- 對於這兩個應用程序使用相同的
sharedUserId
,因此他們的權限是共享的。在這種情況下這是不可能的,因爲現有用戶將無法升級。 - 將
content://
Uris轉換爲file://
Uris,並在接收應用程序中創建一個新的內容Uri。當然,這對於所有內容Uris來說都是不可能的,但它總比沒有好。
「是否可以請求對已知Uri的持久讀訪問?」 - 爲什麼你需要它堅持下去?進口通常是一次性的事情。 – CommonsWare
應用程序需要能夠在每次查看條目時閱讀內容,而不僅僅是在導入期間。 –