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