กำหนดค่าและจัดการการเป็นเจ้าของการอัปเดตสำหรับแอป

เมื่อ Store หรือโปรแกรมติดตั้งติดตั้งแอป ระบบจะถือว่า Store หรือโปรแกรมติดตั้งนั้นเป็น "โปรแกรมติดตั้งที่บันทึกไว้" ซึ่งหมายถึงโปรแกรมติดตั้งล่าสุดของแอป ก่อน Android 14 นั้น Android อนุญาตให้ Store หรือโปรแกรมติดตั้งแอปอื่นเป็นโปรแกรมติดตั้งที่บันทึกไว้และอัปเดตแอปได้โดยไม่ต้องแจ้งให้ผู้ใช้ทราบ

ใน Android 14 โปรแกรมติดตั้งแอปเริ่มต้นสามารถประกาศตนเองเป็น "เจ้าของการอัปเดต" และเป็นเจ้าของการอัปเดตแอปได้ หากโปรแกรมติดตั้งอื่นพยายามอัปเดตแอป ผู้ใช้จะมีโอกาสอนุมัติการอัปเดตใหม่ก่อนที่จะดำเนินการต่อ

เลือกใช้แพ็กเกจเพื่ออัปเดตการเป็นเจ้าของ

หากต้องการประกาศว่าร้านค้าหรือโปรแกรมติดตั้งเป็นเจ้าของแพ็กเกจแอป ให้ใส่แท็ก update-ownership ใน sysconfig XML สำหรับแต่ละแพ็กเกจดังนี้

<update-ownership package="com.example.application" installer="com.example.installer" />

ในตัวอย่างนี้ com.example.application คือแพ็กเกจแอปที่จะเป็นเจ้าของ และ com.example.installer คือเจ้าของแพ็กเกจ เมื่อเลือกให้แพ็กเกจอัปเดตความเป็นเจ้าของแล้ว Store หรือโปรแกรมติดตั้งอื่นๆ ที่มีสิทธิ์จะต้องจัดการเจ้าของการอัปเดตและขอความยินยอมจากผู้ใช้เพื่ออัปเดตแอป

เลือกไม่ให้แพ็กเกจมีการเปลี่ยนแปลงการเป็นเจ้าของ

คุณสามารถให้ Store หรือโปรแกรมติดตั้งเลือกไม่ใช้ชุดย่อยของแพ็กเกจ การเปลี่ยนแปลงเจ้าของการอัปเดตได้โดยระบุรายการที่ไม่อนุญาตใน APK การรวมแพ็กเกจ ไว้ในรายการนี้จะทำให้ไม่มีร้านค้าหรือโปรแกรมติดตั้งใดขอความเป็นเจ้าของการอัปเดตแพ็กเกจได้

หากต้องการเลือกไม่ให้ร้านค้าหรือโปรแกรมติดตั้งอื่นอัปเดตแพ็กเกจ ให้ทำดังนี้

  1. ใส่พร็อพเพอร์ตี้ต่อไปนี้ในไฟล์ AndroidManifest.xml ของร้านค้าหรือโปรแกรมติดตั้งเดิม

    <application …>
      <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST"
                android:resource="@xml/legacyOwnershipDenylist" />
    </application>
    

    ตัวอย่างนี้อ้างอิงรายการที่ปฏิเสธ XML ที่ชื่อ legacyOwnershipDenylist

  2. สร้างรายการที่ไม่อนุญาตเป็นทรัพยากร XML ดิบโดยใช้รูปแบบต่อไปนี้

    <deny-ownership>com.example.app1</deny-ownership>
    <deny-ownership>com.example.app2</deny-ownership>
    

หากร้านค้าหรือผู้ติดตั้งขอสิทธิ์การเป็นเจ้าของแพ็กเกจในรายการที่ไม่อนุญาต ระบบจะไม่ให้สิทธิ์การเป็นเจ้าของและจะยังคงติดตั้งแพ็กเกจ แต่จะไม่มีผู้ติดตั้ง รายใดเป็นเจ้าของ นอกจากนี้ ไม่ว่าจะเป็นโปรแกรมติดตั้งใดก็ตาม แอปในรายการที่ไม่อนุญาตจะไม่มีใครเป็นเจ้าของได้

ชุดแพ็กเกจในรายการนี้อาจเปลี่ยนแปลงได้ผ่านการอัปเดต APK ของโปรแกรมติดตั้งที่แสดงรายการ ระบบจะล้างการเป็นเจ้าของที่ตั้งค่าไว้สำหรับแพ็กเกจที่ เพิ่มลงในรายการปฏิเสธในภายหลังเมื่อมีการอัปเดตโปรแกรมติดตั้ง ดังนั้น การอัปเดตแพ็กเกจแอปในรายการที่ไม่อนุญาตในภายหลังจึงไม่ ต้องมีการโต้ตอบจากผู้ใช้

จัดการเจ้าของข้อมูลอัปเดตและขอรับความยินยอมจากผู้ใช้

ใน Android 14 แม้ว่า Store หรือโปรแกรมติดตั้งแอปจะมีสิทธิ์ android.permission.INSTALL_PACKAGES แต่ก็ยังต้องจัดการสถานะ STATUS_PENDING_USER_ACTION หากต้องการอัปเดตแอปที่มีการอัปเดตซึ่งเป็นของ Store หรือโปรแกรมติดตั้งอื่น

แอปตัวอย่าง InstallAPKSessionApi.java ยังแสดงวิธีจัดการ STATUS_PENDING_USER_ACTION ด้วย

กำหนดความเป็นเจ้าของสำหรับแอปที่โหลดล่วงหน้า

โดยปกติแล้ว แอปที่โหลดไว้ล่วงหน้าไม่ได้เป็นของโปรแกรมติดตั้งใดโปรแกรมหนึ่ง แต่ระบบจะกำหนดเจ้าของใหม่ให้กับแอปที่โหลดไว้ล่วงหน้าโดยใช้การกำหนดค่าระบบตามที่แสดงในเลือกใช้แพ็กเกจเพื่ออัปเดตความเป็นเจ้าของ