如果應用程式是由商店或安裝程式安裝,該商店或安裝程式會被視為「記錄安裝程式」,也就是應用程式的最後一個安裝程式。在 Android 14 推出前,Android 允許其他商店或應用程式安裝程式成為記錄安裝程式,並在未通知使用者的情況下更新應用程式。
在 Android 14 中,應用程式的初始安裝程式可以宣告自己是「更新擁有者」,並擁有應用程式的更新權。如果其他安裝程式嘗試更新應用程式,系統會先徵求使用者同意,再進行更新。
選擇更新套件擁有權
如要聲明商店或安裝程式擁有應用程式套件,請在每個套件的 sysconfig XML 中加入 update-ownership 標記,如下所示:
<update-ownership package="com.example.application" installer="com.example.installer" />
在這個範例中,com.example.application 是要擁有的應用程式套件,而 com.example.installer 是套件擁有者。如果套件選擇更新擁有權,其他具備權限的商店或安裝程式就必須處理更新擁有者並取得使用者同意,才能更新應用程式。
選擇不將套件納入擁有權異動
您可以在 APK 中提供拒絕清單,讓商店或安裝程式選擇不將部分套件的更新擁有者變更為您。將套件納入這個清單後,任何商店或安裝程式都無法要求更新套件的擁有權。
如要禁止其他商店或安裝程式更新套件,請按照下列步驟操作:
在原始商店或安裝程式的
AndroidManifest.xml檔案中加入下列屬性:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>這個範例參照名為
legacyOwnershipDenylist的 XML 拒絕清單。以原始 XML 資源格式建立拒絕清單,格式如下:
<deny-ownership>com.example.app1</deny-ownership> <deny-ownership>com.example.app2</deny-ownership>
如果商店或安裝程式要求取得封鎖清單中套件的擁有權,系統不會授予擁有權,且套件仍會安裝,但不會由任何安裝程式擁有。此外,無論安裝程式為何,黑名單上的應用程式都無法由任何人擁有。
透過更新提供清單的安裝程式 APK,即可變更這份清單中的套件組合。如果套件已設定擁有權,但隨後加入拒絕清單,安裝程式更新時就會清除擁有權。因此,拒絕清單中的應用程式套件後續更新時,不需要使用者互動。
處理更新擁有者和取得使用者同意聲明
在 Android 14 中,即使商店或應用程式安裝程式擁有 android.permission.INSTALL_PACKAGES 權限,如果想更新由其他商店或安裝程式擁有的應用程式,仍須處理 STATUS_PENDING_USER_ACTION 狀態。
InstallAPKSessionApi.java 範例應用程式也會示範如何處理 STATUS_PENDING_USER_ACTION。
建立預先載入應用程式的擁有權
預先載入的應用程式通常不屬於特定安裝程式。 系統會改用系統設定為預先載入的應用程式指派新擁有者,如「選擇加入更新擁有權的套件」一文所示。