2010-06-30 43 views
1

關於每個應用程序專用的內部存儲器的問題(特別是使用Context.MODE_PRIVATE存儲文件時)。對內部存儲器上的文件的應用程序訪問權限

該存儲實際分配給應用程序的方式是什麼?只是通過軟件包名稱或以某種方式綁定到應用程序的標誌鍵?假設我已經安裝了應用程序1,然後使用相同的名稱和軟件包名稱(僅用不同的密鑰簽名)並安裝它(應用程序2替換應用程序1),然後編寫另一個應用程序2,那麼應用程序2是否可以訪問/ data/data/[app] /文件?

或者我會甚至不能用app2替換app1,因爲第一個地方有不同的標誌鍵?

回答

1

我不認爲你可以有2個應用程序相同的包。我知道如果我的設備上有開發版本,我嘗試安裝該版本,但出現錯誤,我必須卸載先前的版本。

這也與pm相符合,它會卸載並按軟件包名稱列出應用程序。

所以我的答案是它根據包名分配它,但不能有2個具有相同包名的應用程序。

+0

好的,如果你已經安裝了開發版本,PM如何區分另一個安裝嘗試,無論它是更新的開發版本還是發佈版本? 由於名稱和包名稱相同,只能通過您在應用程序中籤名的密鑰進行,對嗎? 原因如果您要使用新的開發版本更新現有開發版本,則無需手動卸載apk。這個,PM正在爲你做。 – 2010-06-30 12:22:24

+0

是的,它確實看到它的簽名是不同的,但這是關鍵,你不能在設備上安裝2個具有相同軟件包名稱的應用程序。因爲如果它的簽名相同,它會覆蓋它,因爲它不同,所以必須手動刪除它。 PM不會自動刪除它,當你更新時,它也不會自動卸載,它只是覆蓋apk。 – 2010-06-30 12:43:22

1

只是通過軟件包名稱,或者不知何故 綁定到應用程序的標誌鍵?

都沒有。

每個應用程序安裝後都會分配一個Linux用戶標識。它的所有文件都由該用戶擁有。其進程以該用戶身份運行。 MODE_PRIVATE文件被設置爲拒絕所有其他用戶。

還是將我甚至不能更換 APP1與APP 2,由於不同牌子擺在首位 鑰匙?

正確。

相關問題