簡體   English   中英

Android:從另一個具有相同簽名的應用程序訪問內部存儲

[英]Android: access internal storage from another app with same signature

上下文:我有兩個應用程序,都使用相同的簽名進行簽名。 第一個應用程序的數據存儲在內部存儲中,我想遷移到第二個應用程序。

問題:如何從第二個應用程序訪問第一個應用程序中的數據? The Android documentation makes reference to "signature permissions" ( https://developer.android.com/guide/topics/permissions/overview#signature and https://developer.android.com/training/articles/security-tips#StoringData ) 並暗示可以在具有相同簽名的應用程序之間共享數據,但我找不到有關如何執行此操作的明確指南。

似乎可以通過創建內容提供者來實現? 或者是否可以直接訪問這些文件,因為我從文檔中了解到它們將使用相同的用戶/相同的進程運行?

理想情況下,這個過程可以在用戶干預最少的情況下發生,並且都可以從第二個應用程序發生(例如,第二個應用程序可以識別第一個應用程序已安裝,提示用戶遷移,然后從第一個應用程序讀取數據並將其移至第二個)。 如果可以移動文件(而不是復制)會更好,因為我們可能有很多數據,而用戶可能沒有足夠的磁盤空間來復制數據。

似乎可以通過創建內容提供者來實現?

是的。 您可以創建簽名級權限並使用它來保護對 Android 中任何標准 IPC 選項的訪問,包括ContentProviderService

或者是否可以直接訪問這些文件,因為我從文檔中了解到它們將使用相同的用戶/相同的進程運行?

不,由相同簽名密鑰簽名的兩個應用程序不會以同一用戶身份運行,更不用說在同一進程中運行了。 android:sharedUserId讓應用程序以同一用戶身份運行。 這從來都不是一個好主意,已被棄用,並且很可能很快就會被 go 淘汰。

如果可以移動文件(而不是復制)會更好,因為我們可能有很多數據,而用戶可能沒有足夠的磁盤空間來復制數據。

這表明從用戶的角度來看,擁有兩個應用程序是一個錯誤,而不是一個功能。 您可以執行的最接近“移動”操作的是“復制后刪除”,因此計划您的副本盡可能細化,以便您可以像 go 一樣刪除。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM