Files
jiecheng-business/app/src/main/AndroidManifest.xml
freeboss b7b5518834 feat: dev-5.1 分支基线(v1.3.35 发版后代码 + 5.1 声道改造文档)
- 以 main(ccc65af) 为基线提交当前工作区代码
- 新增 5.1 声道改造文档两份
- .gitignore 补充 .vscode/、.screenshots/
2026-11-02 19:25:12 +08:00

228 lines
11 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.pukka.jiecheng"
tools:ignore="MissingLeanbackLauncher">
<uses-feature
android:name="android.hardware.telephony"
android:required="false" />
<uses-feature
android:name="android.software.leanback"
android:required="false" />
<uses-feature
android:name="android.hardware.touchscreen"
android:required="false" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" tools:ignore="ScopedStorage" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.INTERNET" /> <!-- MSA -->
<uses-permission android:name="com.asus.msa.SupplementaryDID.ACCESS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission-sdk-23 android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission-sdk-23 android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission-sdk-23 android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.REPLACE_EXISTING_PACKAGE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- ===== 语音协议(文档 §6.2):自定义 signature-level permission ===== -->
<!-- debug flavor 通过 voiceProtectionLevel=normal 临时放开(联调期 adb shell 可投递);
release 走 signature 严格白名单。 -->
<permission
android:name="com.pukka.jiecheng.permission.VOICE_COMMAND"
android:protectionLevel="${voiceProtectionLevel}" />
<uses-permission android:name="com.pukka.jiecheng.permission.VOICE_COMMAND" />
<!-- ===== 语音冷启动保活(文档 2026-08-28-语音冷启动链路设计方案) ===== -->
<!-- BOOT_COMPLETED 启 FGS 必须先声明权限;FOREGROUND_SERVICE 是 Android 9+ 启前台服务的前置 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<!-- 语音冷启动绕过 Background Activity Start 限制::voice 进程挂 1px 悬浮窗,
AMS 视为有 visible window,后续 startActivity 走豁免路径。
标准权限,部分 OEM ROM 自动授予;无需运行时申请。 -->
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<application
android:name=".MyApplication"
android:allowBackup="false"
android:hardwareAccelerated="true"
android:icon="@mipmap/ic_app"
android:label="@string/app_name"
android:largeHeap="true"
android:networkSecurityConfig="@xml/network_permission_config"
android:defaultToDeviceProtectedStorage="true"
android:requestLegacyExternalStorage="true"
android:roundIcon="@mipmap/ic_app"
android:supportsRtl="true"
android:taskAffinity=""
android:theme="@style/whiteTheme"
android:usesCleartextTraffic="true"
tools:node="merge"
tools:replace="android:name,android:allowBackup,android:theme,android:icon,android:networkSecurityConfig,android:label,android:roundIcon"
tools:targetApi="n">
<activity
android:name=".index.HotelMyActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name=".aboutmy.AboutMyActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name=".device.DeviceActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name=".setting.SettingActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name=".order.OrderActivity"
android:exported="false"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<activity
android:name=".list.ListActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name=".login.LoginActivity"
android:exported="false"
android:screenOrientation="landscape"
android:windowSoftInputMode="stateHidden|adjustResize" />
<!-- 家用版微信扫码登录 Activity(第一阶段占位),仅应用内启动 -->
<activity
android:name=".login.WxMpLoginActivity"
android:exported="false"
android:screenOrientation="landscape" />
<activity
android:name=".MainActivity"
android:exported="true"
android:screenOrientation="landscape"
android:theme="${splash_theme}">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<activity
android:name=".TestActivity"
android:exported="true"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<activity
android:name=".video.VideoDetailActivity"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<activity
android:name=".history.HistoryActivity"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<activity
android:name=".index.IndexActivity"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<activity
android:name=".search.SearchActivity"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<activity
android:name=".web.SimpleWebActivity"
android:screenOrientation="landscape"
android:theme="@style/blackTheme" />
<activity
android:name=".filter.FilterActivity"
android:screenOrientation="landscape"
android:theme="@style/whiteTheme" />
<meta-data
android:name="APP_CHANNEL_NAME"
android:value="${APP_CHANNEL_ID}" />
<!-- <meta-data
android:name="APP_CHANNEL_TYPE"
android:value="${APP_CHANNEL_TYPE}" /> -->
<provider
android:name="androidx.core.content.FileProvider"
android:authorities="${applicationId}.provider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
<!-- 语音命令接收器(文档 §5.2) -->
<receiver
android:name=".voice.receiver.VoiceCommandReceiver"
android:exported="true"
android:permission="com.pukka.jiecheng.permission.VOICE_COMMAND">
<intent-filter>
<action android:name="com.pukka.jiecheng.action.VOICE_COMMAND" />
</intent-filter>
</receiver>
<!-- 语音冷启动链路:开机拉起 :voice 进程 FGS(文档 2026-08-28-语音冷启动链路设计方案) -->
<receiver
android:name=".voice.receiver.BootCompletedReceiver"
android:enabled="true"
android:exported="true"
android:directBootAware="true"
android:process=":voice"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<!-- 自广播兜底接收器:处理 KEEPALIVE_BOOT 自定义 action。
解决 BOOT_COMPLETED 因 STOPPED / OEM 拦截失败时 :voice 进程无法自启的问题。
同包 explicit broadcast(Intent.setPackage)不受 STOPPED 状态限制。
exported=false 不暴露给外部,仅接收应用自身 AlarmManager 派发的 PendingIntent。 -->
<receiver
android:name=".voice.receiver.KeepAlivePingReceiver"
android:enabled="true"
android:exported="false"
android:process=":voice">
<intent-filter>
<action android:name="com.pukka.jiecheng.action.KEEPALIVE_BOOT" />
</intent-filter>
</receiver>
<!-- 语音冷启动保活服务:保持 :voice 进程隔离。
设计意图:主进程被 LMK 杀掉后 receiver 仍能存活,持续监听 OEM 创维广播。
cold-launch 受 Android 12+ Background Activity Start 限制的问题,由
VoiceOverlayHelper 在 :voice 进程挂 1px TYPE_APPLICATION_OVERLAY 悬浮窗
提供 visible window 豁免(AMS 视为前台可见窗口),配合
SkyworthVoiceAdapter.coldLaunchMainActivity 优先路径
showOverlay → ctx.startActivity(cold) → hideOverlay 绕过。
FullScreenIntent 通知作为 OEM ROM 拦截悬浮窗场景下的次选兜底保留。
当前设备 Android 11 不需要 USE_FULL_SCREEN_INTENT 权限;如后续适配
Android 14 设备需在 manifest 声明该权限。 -->
<service
android:name=".voice.service.VoiceKeepAliveService"
android:exported="false"
android:foregroundServiceType="specialUse"
android:process=":voice" />
</application>
</manifest>