|
|
<?xml version="1.0" encoding="utf-8"?>
|
|
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
|
|
xmlns:tools="http://schemas.android.com/tools"
|
|
|
android:installLocation="internalOnly">
|
|
|
|
|
|
<uses-feature
|
|
|
android:name="android.hardware.telephony"
|
|
|
android:required="false" />
|
|
|
|
|
|
<uses-permission
|
|
|
android:name="android.permission.QUERY_ALL_PACKAGES"
|
|
|
tools:ignore="QueryAllPackagesPermission" />
|
|
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
|
|
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
|
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
|
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
|
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
|
<!-- 授予应用程序访问系统开机事件的权限 -->
|
|
|
<uses-permission
|
|
|
android:name="android.permission.READ_PRIVILEGED_PHONE_STATE"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
|
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
|
|
|
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
|
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.MANAGE_EXTERNAL_STORAGE"
|
|
|
tools:ignore="ScopedStorage" />
|
|
|
<uses-permission android:name="android.permission.RECEIVE_SMS" />
|
|
|
<uses-permission android:name="android.permission.RECEIVE_MMS" />
|
|
|
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
|
|
|
<uses-permission android:name="android.permission.READ_SMS" />
|
|
|
<uses-permission android:name="android.permission.SEND_SMS" />
|
|
|
<uses-permission android:name="android.permission.CALL_PHONE" />
|
|
|
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
|
|
|
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />
|
|
|
<uses-permission android:name="android.permission.READ_CALL_LOG" />
|
|
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
|
|
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
|
|
|
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
|
|
|
<!--Android 9(API 级别 28)或更高版本并使用前台服务,则其必须请求 FOREGROUND_SERVICE 权限-->
|
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.BATTERY_STATS"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
|
|
<uses-permission android:name="android.permission.CANCEL_NOTIFICATIONS " />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<uses-permission android:name="android.permission.ACTION_NOTIFICATION_LISTENER_SETTINGS" />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.INSTALL_PACKAGES"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.WRITE_SETTINGS"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<!--进程杀死-->
|
|
|
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.READ_LOGS"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<uses-permission
|
|
|
android:name="android.permission.REBOOT"
|
|
|
tools:ignore="ProtectedPermissions" />
|
|
|
<uses-permission android:name="android.permission.BLUETOOTH" />
|
|
|
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
|
|
|
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
|
|
|
<uses-permission android:name="android.permission.BLUETOOTH_SCAN" />
|
|
|
<uses-permission android:name="android.permission.BLUETOOTH_ADVERTISE" />
|
|
|
|
|
|
<application
|
|
|
android:name=".App"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:defaultToDeviceProtectedStorage="true"
|
|
|
android:directBootAware="true"
|
|
|
android:enableOnBackInvokedCallback="false"
|
|
|
android:fullBackupContent="@xml/backup_descriptor"
|
|
|
android:hardwareAccelerated="true"
|
|
|
android:icon="@mipmap/ic_launcher"
|
|
|
android:label="@string/app_name"
|
|
|
android:largeHeap="true"
|
|
|
android:networkSecurityConfig="@xml/network_security_config"
|
|
|
android:requestLegacyExternalStorage="true"
|
|
|
android:roundIcon="@mipmap/ic_launcher"
|
|
|
android:supportsRtl="true"
|
|
|
android:theme="@style/AppTheme"
|
|
|
android:usesCleartextTraffic="true"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DataExtractionRules,LockedOrientationActivity,UnusedAttribute">
|
|
|
|
|
|
<meta-data
|
|
|
android:name="ScopedStorage"
|
|
|
android:value="true" />
|
|
|
|
|
|
<activity
|
|
|
android:name=".activity.SplashActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:excludeFromRecents="true"
|
|
|
android:exported="true"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:taskAffinity=":splash"
|
|
|
android:theme="@style/AppTheme.Launch.App"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DiscouragedApi,TranslucentOrientation">
|
|
|
|
|
|
<intent-filter>
|
|
|
<action android:name="android.intent.action.MAIN" />
|
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
|
</intent-filter>
|
|
|
</activity>
|
|
|
<activity
|
|
|
android:name=".activity.MainActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:exported="true"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
<activity
|
|
|
android:name=".activity.ClientActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:exported="true"
|
|
|
android:launchMode="singleInstance"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
<activity
|
|
|
android:name=".activity.TaskActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:exported="true"
|
|
|
android:launchMode="singleInstance"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
<!--通用浏览器-->
|
|
|
<activity
|
|
|
android:name=".core.webview.AgentWebActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:exported="true"
|
|
|
android:hardwareAccelerated="true"
|
|
|
android:label="@string/app_browser_name"
|
|
|
android:theme="@style/AppTheme">
|
|
|
<!-- Scheme -->
|
|
|
<intent-filter>
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
<action android:name="com.xuexiang.xui.applink" />
|
|
|
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
|
|
<data android:scheme="http" />
|
|
|
<data android:scheme="https" />
|
|
|
<data android:scheme="about" />
|
|
|
<data android:scheme="javascript" />
|
|
|
<!-- 设置自己的deeplink -->
|
|
|
<!-- <data-->
|
|
|
<!-- android:host="xxx.com"-->
|
|
|
<!-- android:scheme="xui"/>-->
|
|
|
</intent-filter>
|
|
|
<!-- AppLink -->
|
|
|
<intent-filter
|
|
|
android:autoVerify="true"
|
|
|
tools:targetApi="m">
|
|
|
<action android:name="android.intent.action.VIEW" />
|
|
|
|
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
|
|
|
|
<data android:scheme="http" />
|
|
|
<data android:scheme="https" />
|
|
|
<data android:scheme="inline" />
|
|
|
<data android:mimeType="text/html" />
|
|
|
<data android:mimeType="text/plain" />
|
|
|
<data android:mimeType="application/xhtml+xml" />
|
|
|
<data android:mimeType="application/vnd.wap.xhtml+xml" />
|
|
|
<!-- 设置自己的applink -->
|
|
|
<!-- <data-->
|
|
|
<!-- android:host="xxx.com"-->
|
|
|
<!-- android:scheme="http"/>-->
|
|
|
<!-- <data-->
|
|
|
<!-- android:host="xxx.com"-->
|
|
|
<!-- android:scheme="https"/>-->
|
|
|
</intent-filter>
|
|
|
</activity>
|
|
|
|
|
|
<!--fragment的页面容器-->
|
|
|
<activity
|
|
|
android:name=".core.BaseActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:exported="true"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
<!-- 版本更新提示-->
|
|
|
<activity
|
|
|
android:name=".utils.update.UpdateTipDialog"
|
|
|
android:exported="true"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:theme="@style/DialogTheme"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
<!-- Webview拦截提示弹窗-->
|
|
|
<activity
|
|
|
android:name=".core.webview.WebViewInterceptDialog"
|
|
|
android:exported="true"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:theme="@style/DialogTheme"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
<!-- applink的中转页面 -->
|
|
|
<activity
|
|
|
android:name=".core.XPageTransferActivity"
|
|
|
android:configChanges="screenSize|keyboardHidden|orientation|keyboard"
|
|
|
android:exported="true"
|
|
|
android:screenOrientation="portrait"
|
|
|
android:windowSoftInputMode="adjustPan|stateHidden"
|
|
|
tools:ignore="DiscouragedApi" />
|
|
|
|
|
|
<!--屏幕自适应设计图-->
|
|
|
<meta-data
|
|
|
android:name="design_width_in_dp"
|
|
|
android:exported="true"
|
|
|
android:value="360" />
|
|
|
<meta-data
|
|
|
android:name="design_height_in_dp"
|
|
|
android:exported="true"
|
|
|
android:value="640" />
|
|
|
|
|
|
<service
|
|
|
android:name=".service.BluetoothScanService"
|
|
|
android:enabled="true"
|
|
|
android:exported="false" />
|
|
|
<service
|
|
|
android:name=".service.ForegroundService"
|
|
|
android:enabled="true" />
|
|
|
<service
|
|
|
android:name=".service.HttpServerService"
|
|
|
android:enabled="true" />
|
|
|
<service
|
|
|
android:name=".service.LocationService"
|
|
|
android:enabled="true"
|
|
|
android:foregroundServiceType="location" />
|
|
|
<service
|
|
|
android:name=".service.NotificationService"
|
|
|
android:enabled="true"
|
|
|
android:exported="false"
|
|
|
android:label="@string/app_name"
|
|
|
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
|
|
|
<intent-filter>
|
|
|
<action android:name="android.service.notification.NotificationListenerService" />
|
|
|
</intent-filter>
|
|
|
</service>
|
|
|
|
|
|
<receiver
|
|
|
android:name=".receiver.BatteryReceiver"
|
|
|
android:exported="true">
|
|
|
<intent-filter>
|
|
|
<action android:name="android.intent.action.BATTERY_CHANGED" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.BluetoothReceiver"
|
|
|
android:exported="true">
|
|
|
<intent-filter>
|
|
|
<!-- 蓝牙设备发现 -->
|
|
|
<action android:name="android.bluetooth.device.action.FOUND" />
|
|
|
<!-- 蓝牙扫描完成 -->
|
|
|
<action android:name="android.bluetooth.adapter.action.DISCOVERY_FINISHED" />
|
|
|
<!-- 蓝牙状态改变 -->
|
|
|
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
|
|
|
<!-- 蓝牙扫描模式改变 -->
|
|
|
<action android:name="android.bluetooth.adapter.action.SCAN_MODE_CHANGED" />
|
|
|
<!-- 本地蓝牙名称改变 -->
|
|
|
<action android:name="android.bluetooth.adapter.action.LOCAL_NAME_CHANGED" />
|
|
|
<!-- 蓝牙连接状态改变 -->
|
|
|
<action android:name="android.bluetooth.adapter.action.CONNECTION_STATE_CHANGED" />
|
|
|
<!-- 蓝牙设备配对状态改变 -->
|
|
|
<action android:name="android.bluetooth.device.action.BOND_STATE_CHANGED" />
|
|
|
<!-- 蓝牙设备连接 -->
|
|
|
<action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
|
|
|
<!-- 蓝牙设备断开连接 -->
|
|
|
<action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.BootCompletedReceiver"
|
|
|
android:defaultToDeviceProtectedStorage="true"
|
|
|
android:directBootAware="true"
|
|
|
android:exported="true"
|
|
|
tools:ignore="IntentFilterExportedReceiver">
|
|
|
<intent-filter android:priority="2147483647">
|
|
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
|
<action android:name="android.intent.action.USER_PRESENT" />
|
|
|
<action android:name="android.intent.action.PACKAGE_RESTARTED" />
|
|
|
<action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.CallReceiver"
|
|
|
android:exported="true"
|
|
|
tools:ignore="IntentFilterExportedReceiver">
|
|
|
<intent-filter>
|
|
|
<action android:name="android.intent.action.PHONE_STATE" />
|
|
|
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.LockScreenReceiver"
|
|
|
android:exported="true">
|
|
|
<intent-filter>
|
|
|
<action android:name="android.intent.action.SCREEN_OFF" />
|
|
|
<action android:name="android.intent.action.SCREEN_ON" />
|
|
|
<action android:name="android.intent.action.ACTION_USER_PRESENT" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.NetworkChangeReceiver"
|
|
|
android:enabled="true"
|
|
|
android:exported="true"
|
|
|
android:permission="android.permission.READ_PHONE_STATE">
|
|
|
<intent-filter>
|
|
|
<action
|
|
|
android:name="android.net.conn.CONNECTIVITY_CHANGE"
|
|
|
tools:ignore="BatteryLife" />
|
|
|
<action
|
|
|
android:name="android.net.wifi.WIFI_STATE_CHANGED"
|
|
|
tools:ignore="BatteryLife" />
|
|
|
<action
|
|
|
android:name="android.net.wifi.STATE_CHANGE"
|
|
|
tools:ignore="BatteryLife" />
|
|
|
<!--<action
|
|
|
android:name="android.intent.action.DATA_CONNECTION_STATE_CHANGED"
|
|
|
tools:ignore="BatteryLife" />-->
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.SimStateReceiver"
|
|
|
android:enabled="true"
|
|
|
android:exported="true">
|
|
|
<intent-filter>
|
|
|
<action android:name="android.intent.action.SIM_STATE_CHANGED" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
<receiver
|
|
|
android:name=".receiver.SmsReceiver"
|
|
|
android:exported="true"
|
|
|
android:permission="android.permission.BROADCAST_SMS"
|
|
|
tools:ignore="IntentFilterExportedReceiver">
|
|
|
<intent-filter android:priority="2147483647">
|
|
|
<!--兼容OV系手机短信广播-->
|
|
|
<action android:name="android.provider.OppoSpeechAssist.SMS_RECEIVED" />
|
|
|
<action android:name="android.provider.Telephony.SMS_DELIVER" />
|
|
|
<!--短信广播-->
|
|
|
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
|
|
|
</intent-filter>
|
|
|
<intent-filter android:priority="2147483647">
|
|
|
<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
|
|
|
<action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
|
|
|
|
|
|
<data android:mimeType="application/vnd.wap.mms-message" />
|
|
|
</intent-filter>
|
|
|
</receiver>
|
|
|
|
|
|
<provider
|
|
|
android:name="androidx.startup.InitializationProvider"
|
|
|
android:authorities="${applicationId}.androidx-startup"
|
|
|
android:exported="false"
|
|
|
tools:node="merge">
|
|
|
<!-- If you are using androidx.startup to initialize other components -->
|
|
|
<meta-data
|
|
|
android:name="androidx.work.WorkManagerInitializer"
|
|
|
android:value="androidx.startup"
|
|
|
tools:node="remove" />
|
|
|
</provider>
|
|
|
|
|
|
</application>
|
|
|
|
|
|
</manifest> |