1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="uk.nandi.frq">
<uses-permission android:name="android.permission.INTERNET" />
<!--
Reading the pictures the picker offers. Both, because the permission that
covers them was split at API 33: before that a single storage read, after
it one per medium. Neither is granted by being asked for here — they are
runtime permissions, and this activity has no Java to raise the dialog
with, so they are granted from Settings (or `adb shell pm grant`) until
something asks. Without them the picker sees directory names and no
files, which is what it says.
-->
<uses-permission android:name="android.permission.READ_MEDIA_IMAGES" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
android:maxSdkVersion="32" />
<uses-feature android:glEsVersion="0x00030000" android:required="true" />
<!--
Not the Fullscreen theme below: under it the window owns the whole
display, content_rect is the whole display too, and there is nothing for
vidya to inset by — the status bar clock sits on top of the app and the
compose bar sits under the keyboard.
-->
<!--
debuggable: `adb run-as` reads the app's own data directory under it,
which is how a session file or a cache is looked at on the device. It
costs nothing at runtime and this APK is signed with the debug key
anyway; drop it for anything that ships.
-->
<application
android:allowBackup="false"
android:debuggable="true"
android:label="frq"
android:theme="@android:style/Theme.Material.NoActionBar">
<!--
adjustResize: without it the activity's content_rect never shrinks for
the soft keyboard, so vidya has no IME inset to reserve and the compose
bar sits under the keys.
-->
<!--
singleTask: the sign-in deep link below has to bring the *running*
app forward, with its loopback handoff already in hand, rather than
start a second copy of it beside the first.
-->
<activity
android:name=".FrqActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:launchMode="singleTask"
android:windowSoftInputMode="adjustResize"
android:exported="true"
android:screenOrientation="portrait">
<!--
The activity's library is libvidya.so, not the Jolt one: whoever
holds android-activity's glue owns the event loop, and winit
cannot build one without the AndroidApp handle that glue receives.
It dlopens libjoltapp.so in turn. See ffi/src/android.rs.
-->
<meta-data
android:name="android.app.lib_name"
android:value="vidya" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!--
Coming back from the browser. The handoff itself travels over
loopback and is already captured by the time this arrives; the
link carries nothing, and exists only to put the app back in
front of the browser that covered it.
-->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="frq" android:host="auth" />
</intent-filter>
</activity>
</application>
</manifest>
|