<activity-alias>

ไวยากรณ์:
<activity-alias android:enabled=["true" | "false"]
                android:exported=["true" | "false"]
                android:icon="drawable resource"
                android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
                android:label="string resource"
                android:name="string"
                android:permission="string"
                android:targetActivity="string" >
    ...
</activity-alias>
มีอยู่ใน:
<application>
สามารถมี:
<intent-filter>
<meta-data>
<property>
คำอธิบาย:
ชื่อแทนของกิจกรรม ซึ่งตั้งชื่อโดยแอตทริบิวต์ targetActivity เป้าหมายต้องอยู่ในแอปพลิเคชันเดียวกับชื่อแทนและประกาศก่อนชื่อแทนในไฟล์ Manifest

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

ตัวอย่างเช่น ตัวกรอง Intent ในชื่อแทนอาจระบุแฟล็ก "android.intent.action.MAIN" และ "android.intent.category.LAUNCHER"" ซึ่งทำให้ชื่อแทนแสดงในตัวเปิดแอปพลิเคชัน แม้ว่าตัวกรองในกิจกรรมเป้าหมายเองจะไม่ได้ตั้งค่าแฟล็กเหล่านี้ก็ตาม

ยกเว้น targetActivity แอตทริบิวต์ <activity-alias> เป็นชุดย่อยของแอตทริบิวต์ <activity> สำหรับแอตทริบิวต์ในชุดย่อย ค่าที่ตั้งไว้สำหรับเป้าหมายจะไม่มีผลกับชื่อแทน อย่างไรก็ตาม สำหรับแอตทริบิวต์ที่ไม่อยู่ในชุดย่อย ค่าที่ตั้งไว้สำหรับกิจกรรมเป้าหมายจะมีผลกับชื่อแทนด้วย

แอตทริบิวต์:
android:enabled
ระบุว่าระบบจะสร้างอินสแตนซ์ของกิจกรรมเป้าหมายผ่านชื่อแทนนี้ได้หรือไม่ โดยระบุเป็น "true" หากสร้างได้ และ "false" หากสร้างไม่ได้ ค่าเริ่มต้นคือ "true"

องค์ประกอบ <application> มีแอตทริบิวต์ enabled ของตัวเองซึ่งใช้กับคอมโพเนนต์ทั้งหมดของ แอปพลิเคชัน รวมถึงชื่อแทนของกิจกรรม แอตทริบิวต์ <application> และ <activity-alias> ต้องเป็น "true" ทั้งคู่ ระบบจึงจะสร้างอินสแตนซ์ ของกิจกรรมเป้าหมายผ่านชื่อแทนได้ หากแอตทริบิวต์ใดแอตทริบิวต์หนึ่งเป็น "false" ชื่อแทนจะไม่ทำงาน

android:exported
ระบุว่าคอมโพเนนต์ของแอปพลิเคชันอื่นๆ สามารถเปิดใช้กิจกรรมเป้าหมายผ่านชื่อแทนนี้ได้หรือไม่ โดยระบุเป็น "true" หากเปิดใช้ได้ และ "false" หากเปิดใช้ไม่ได้ หากระบุเป็น "false" คอมโพเนนต์ของแอปพลิเคชันเดียวกันกับชื่อแทนหรือแอปพลิเคชันที่มีรหัสผู้ใช้เดียวกันเท่านั้นที่จะเปิดใช้กิจกรรมเป้าหมายผ่านชื่อแทนได้

ค่าเริ่มต้นจะขึ้นอยู่กับว่าชื่อแทนมีตัวกรอง Intent หรือไม่ หากไม่มีตัวกรองใดๆ หมายความว่าคุณจะเรียกใช้กิจกรรมผ่านชื่อแทนได้โดยการระบุชื่อแทนที่ถูกต้องเท่านั้น ซึ่งหมายความว่าชื่อแทนมีไว้ใช้ภายในแอปพลิเคชันเท่านั้น เนื่องจากผู้อื่นไม่ทราบชื่อ ดังนั้นค่าเริ่มต้นจึงเป็น "false" ในทางกลับกัน หากมีตัวกรองอย่างน้อย 1 รายการ หมายความว่าชื่อแทนมีไว้ใช้ภายนอก ดังนั้นค่าเริ่มต้นจึงเป็น "true"

android:icon
ไอคอนสำหรับกิจกรรมเป้าหมายเมื่อแสดงต่อผู้ใช้ผ่านชื่อแทน ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ icon ขององค์ประกอบ <activity>
android:intentMatchingFlags

ใช้แอตทริบิวต์นี้เพื่อปรับแต่งวิธีที่ระบบจับคู่ Intent ขาเข้าไปยังคอมโพเนนต์ของแอป โดยค่าเริ่มต้น ระบบจะไม่มีการใช้กฎการจับคู่พิเศษ

ค่าที่ตั้งไว้ในแท็ก <activity-alias> จะลบล้างค่าที่ตั้งไว้ใน <activity> เป้าหมายหรือค่าที่รับช่วงมาจาก <application> สำหรับชื่อแทนนั้นๆ หากไม่ได้กำหนดไว้อย่างชัดเจน ในชื่อแทน ชื่อแทนจะรับช่วงลักษณะการทำงานมาจากกิจกรรมเป้าหมายหรือ แอปพลิเคชัน

ค่าต้องเป็นแฟล็กอย่างน้อย 1 รายการต่อไปนี้ ซึ่งคั่นด้วย '|'

แฟล็ก คำอธิบาย
none ปิดใช้กฎการจับคู่พิเศษทั้งหมดสำหรับ Intent ขาเข้า เมื่อ ระบุแฟล็กหลายรายการ ระบบจะแก้ไขค่าที่ขัดแย้งกันโดยให้ความสำคัญกับแฟล็ก none
enforceIntentFilter

บังคับใช้การจับคู่ที่เข้มงวดขึ้นสำหรับ Intent ขาเข้า

  • Intent ที่ชัดเจนต้องตรงกับตัวกรอง Intent ของคอมโพเนนต์เป้าหมาย
  • Intent ที่ไม่มีการดำเนินการจะไม่ตรงกับตัวกรอง Intent ใดๆ
allowNullAction

ผ่อนปรนกฎการจับคู่เพื่อให้ Intent ที่ไม่มีการดำเนินการตรงกันได้ แฟล็กนี้ใช้ร่วมกับ enforceIntentFilter เพื่อให้ได้ลักษณะการทำงานต่อไปนี้

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

ดูข้อมูลเพิ่มเติมได้ที่ส่วน Safer Intents ในการเปลี่ยนแปลงลักษณะการทำงานของ Android 16 (API ระดับ 36)

android:label
ป้ายกำกับที่ผู้ใช้เข้าใจได้สำหรับชื่อแทนเมื่อแสดงต่อผู้ใช้ผ่านชื่อแทน ดูข้อมูลเพิ่มเติมได้ที่แอตทริบิวต์ label ขององค์ประกอบ <activity>
android:name
ชื่อที่ไม่ซ้ำกันสำหรับชื่อแทน ชื่อนี้มีลักษณะคล้ายกับชื่อคลาสที่มีคุณสมบัติครบถ้วน ชื่อแทนเป็นชื่อที่กำหนดขึ้นเอง ไม่เหมือนกับชื่อของกิจกรรมเป้าหมาย ชื่อแทนไม่ได้อ้างอิงถึงคลาสจริง
android:permission
ชื่อสิทธิ์ที่ไคลเอ็นต์ต้องมีเพื่อเปิดใช้กิจกรรมเป้าหมายหรือทำให้กิจกรรมเป้าหมายดำเนินการบางอย่างโดยใช้ชื่อแทน หากผู้เรียก startActivity() หรือ startActivityForResult() ไม่ได้รับสิทธิ์ที่ระบุ กิจกรรมเป้าหมายจะไม่เปิดใช้งาน

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์ได้ที่ ส่วนสิทธิ์ ในภาพรวมของไฟล์ Manifest ของแอป

android:targetActivity
ชื่อของกิจกรรมที่เปิดใช้งานผ่านชื่อแทนได้ ชื่อนี้ต้องตรงกับแอตทริบิวต์ name ขององค์ประกอบ <activity> ที่อยู่ก่อน ชื่อแทนในไฟล์ Manifest
เปิดตัวใน:
API ระดับ 1
ดูเพิ่มเติม:
<activity>