Loading files
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Without this the app cannot open a socket at all: Android gates the
syscall on group membership, so bind() fails with EPERM long before any
address is consulted. Debug and profile builds get it from the manifests
Flutter generates for devtools, which is why only release broke — the
sign-in loopback server died on 127.0.0.1 and it read as localhost being
blocked. Needed here for the relay socket and that loopback alike. -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- Lets libwebrtc notice a wifi↔cellular change and restart ICE rather than
wait out the disconnect grace. Not a runtime permission. -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- Taking a picture to send to an agent. Picking an EXISTING picture needs
no permission at all: image_picker goes through ACTION_GET_CONTENT / the
photo picker, which hands back one item the user chose rather than
opening the library — hence no READ_MEDIA_IMAGES here. -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- The camera is how one feature sends a picture, not something the app
cannot run without: a tablet or emulator with no camera must still
install and show every other screen. -->
<uses-feature android:name="android.hardware.camera" android:required="false" />
<!-- Voice input, the terminal's default way to type. The recording is
transcribed by the Harness backend (`/api/voice/stt`), so the
microphone is the only permission it needs. -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-feature android:name="android.hardware.microphone" android:required="false" />
<application
android:label="Harness"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>
56ae2e47fThis file is pinned to the selected release. Download the original to open it in your design tool.