You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android14中MediaProjection单应用录制能否录制自身?求助

Android 14 MediaProjection单个应用录制自身不显示的解决方案

问题描述

在Android 14中使用MediaProjection的「单个应用」选项录制发起录制的应用自身时,在createScreenCaptureIntent流程的第二步选择录制应用列表中看不到自身应用,日志出现报错:

ChooserActivity E Failed to get target intent filter: intent data and type are null

已知XRecorder应用可正常实现自身录制,当前manifest.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.CAPTURE_VIDEO_OUTPUT" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PROJECTION" />
<uses-permission android:name="Manifest.permission.POST_NOTIFICATIONS"/>

<application
    android:allowBackup="true"
    android:dataExtractionRules="@xml/data_extraction_rules"
    android:fullBackupContent="@xml/backup_rules"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/Theme.ScreenRecorderExample"
    tools:targetApi="34">

    <activity android:name=".activity.MainActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <service
        android:name=".service.MediaProjectionService"
        android:foregroundServiceType="mediaProjection"
        android:exported="false"
        android:enabled="true">
    </service>
</application>

</manifest>

问题原因

Android 14针对单个应用录制的场景,要求目标应用的可启动Activity必须声明android.intent.action.SCREEN_CAPTURE_TARGET的Intent Filter,系统的应用选择器会通过这个Filter识别哪些应用支持被单个录制。你的应用主Activity缺少这个Filter,导致系统无法将其纳入可选列表,同时触发日志中的报错。

解决方案

在主Activity的配置中添加SCREEN_CAPTURE_TARGET对应的Intent Filter,修改后的Activity代码如下:

<activity android:name=".activity.MainActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN"/>
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <!-- 新增单个应用录制的目标识别Filter -->
    <intent-filter>
        <action android:name="android.intent.action.SCREEN_CAPTURE_TARGET" />
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
</activity>

补充说明

  • 必须保证Activity的android:exported属性为true,否则系统无法读取该Intent Filter;
  • XRecorder等可实现自身录制的应用,均已在其可启动Activity中声明了上述Filter;
  • 修改后重新编译安装应用,即可在单个应用录制的选择列表中看到自身应用。

内容的提问来源于stack exchange,提问作者Luka Zdjelar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 13:33:33