mirror of
https://github.com/ArcaneChat/android.git
synced 2026-07-03 14:05:24 +02:00
853000f8dc
* add 'Add to Home Screen' menus for webxdc apps * make adding shortcut basically work * avoid starting webxdc from foreign accounts * recreate back stack, if possible according to https://developer.android.com/training/notify-user/navigation : "When you start an activity from a notification, you must preserve the user's expected navigation experience. Tapping Back should take the user back through the app's normal work flow to the Home screen [...]" same seems to be true for shortcuts using the same class for constructing the back stack. the back stack is reconstructed for API 26 (Oreo, 2017) or newer, for oder API `requestPinShortcut()` only uses the top-level activity for the shortcut. working around that is probably possible, but would be quite some effort in an already complicated area and would result in bugs that are not so easy to see. also, on these old androids, users are probably used to the no-back-stack behaviour. * show a warning if app was deleted * add 'Add to Home Screen' also to gallery beside chat- and webxdc-activity, this is the third place where the webxdc is listed. as adding may result in dialogs from the launcher, we allow the option only for a single selected webxdc, as otherwise a series of dialogs would pop up. * show 'Done' toast short, this is what we are doing at all the other places when showing 'Done'
384 lines
18 KiB
XML
384 lines
18 KiB
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"
|
|
package="org.thoughtcrime.securesms">
|
|
|
|
<uses-feature android:name="android.hardware.camera" android:required="false" />
|
|
<uses-feature android:name="android.hardware.bluetooth" android:required="false" />
|
|
<uses-feature android:name="android.hardware.location" android:required="false"/>
|
|
<uses-feature android:name="android.hardware.location.network" android:required="false"/>
|
|
<uses-feature android:name="android.hardware.location.gps" android:required="false"/>
|
|
<uses-feature android:name="android.hardware.microphone" android:required="false"/>
|
|
<uses-feature android:name="android.hardware.wifi" android:required="false"/>
|
|
<uses-feature android:name="android.hardware.portrait" android:required="false"/>
|
|
<uses-feature android:name="android.hardware.touchscreen" android:required="false"/>
|
|
|
|
<!-- dangerous permissions - we need to as the user with a PermissionsRequest -->
|
|
<uses-permission android:name="android.permission.READ_CONTACTS" />
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
<uses-permission android:name="android.permission.CAMERA" />
|
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>
|
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
|
|
<!-- normal permissions - adding them here is enough -->
|
|
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
|
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
|
|
<uses-permission android:name="android.permission.VIBRATE" />
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
|
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
|
<uses-permission android:name="android.permission.INTERNET" />
|
|
<uses-permission android:name="android.permission.INSTALL_SHORTCUT" />
|
|
<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
|
|
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
|
|
<uses-permission android:name="android.permission.RAISED_THREAD_PRIORITY" />
|
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
|
|
|
|
<application android:name=".ApplicationContext"
|
|
android:icon="@mipmap/ic_launcher"
|
|
android:label="@string/app_name"
|
|
android:supportsRtl="true"
|
|
tools:replace="android:allowBackup"
|
|
android:allowBackup="false"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:largeHeap="true"
|
|
tools:ignore="GoogleAppIndexingWarning"
|
|
android:requestLegacyExternalStorage="true"
|
|
>
|
|
|
|
<!-- android car support, see https://developer.android.com/training/auto/start/,
|
|
as this potentially blocks releases on gplay due to extra-checks,
|
|
we disable this during the first gplay releases -->
|
|
<!--
|
|
<meta-data android:name="com.google.android.gms.car.application"
|
|
android:resource="@xml/automotive_app_desc" />
|
|
-->
|
|
|
|
<activity android:name=".ShareActivity"
|
|
android:theme="@android:style/Theme.Translucent.NoTitleBar"
|
|
android:excludeFromRecents="true"
|
|
android:launchMode="singleTask"
|
|
android:taskAffinity=""
|
|
android:windowSoftInputMode="stateHidden"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND" />
|
|
<category android:name="android.intent.category.DEFAULT"/>
|
|
<data android:mimeType="audio/*" />
|
|
<data android:mimeType="image/*" />
|
|
<data android:mimeType="text/plain" />
|
|
<data android:mimeType="video/*" />
|
|
<data android:mimeType="application/*"/>
|
|
<data android:mimeType="text/*"/>
|
|
<data android:mimeType="*/*"/>
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<data android:scheme="mailto"/>
|
|
<action android:name="android.intent.action.SENDTO"/>
|
|
<category android:name="android.intent.category.DEFAULT"/>
|
|
<category android:name="android.intent.category.BROWSABLE"/>
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<data android:mimeType="audio/*" />
|
|
<data android:mimeType="image/*" />
|
|
<data android:mimeType="text/plain" />
|
|
<data android:mimeType="video/*" />
|
|
<data android:mimeType="application/*"/>
|
|
<data android:mimeType="text/*"/>
|
|
<data android:mimeType="*/*"/>
|
|
</intent-filter>
|
|
<meta-data
|
|
android:name="android.service.chooser.chooser_target_service"
|
|
android:value="androidx.sharetarget.ChooserTargetServiceCompat" />
|
|
|
|
</activity>
|
|
|
|
<activity android:name=".ConversationListActivity"
|
|
android:label="@string/app_name"
|
|
android:launchMode="singleTask"
|
|
android:theme="@style/TextSecure.LightNoActionBar"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
|
|
android:exported="true" />
|
|
|
|
<activity-alias android:name=".RoutingActivity"
|
|
android:targetActivity=".ConversationListActivity"
|
|
android:exported="true">
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
<category android:name="android.intent.category.MULTIWINDOW_LAUNCHER" />
|
|
</intent-filter>
|
|
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW"/>
|
|
<category android:name="android.intent.category.DEFAULT"/>
|
|
<category android:name="android.intent.category.BROWSABLE"/>
|
|
<!-- Android's scheme matcher is case-sensitive, so include most likely variations -->
|
|
<data android:scheme="openpgp4fpr" />
|
|
<data android:scheme="OPENPGP4FPR"
|
|
tools:ignore="AppLinkUrlError" />
|
|
<data android:scheme="OpenPGP4FPR"
|
|
tools:ignore="AppLinkUrlError" />
|
|
<data android:scheme="OpenPGP4Fpr"
|
|
tools:ignore="AppLinkUrlError" />
|
|
<data android:scheme="OpenPGP4fpr"
|
|
tools:ignore="AppLinkUrlError" />
|
|
</intent-filter>
|
|
|
|
<meta-data android:name="com.sec.minimode.icon.portrait.normal"
|
|
android:resource="@mipmap/ic_launcher" />
|
|
<meta-data android:name="com.sec.minimode.icon.landscape.normal"
|
|
android:resource="@mipmap/ic_launcher" />
|
|
<meta-data
|
|
android:name="android.app.shortcuts"
|
|
android:resource="@xml/shortcuts" />
|
|
|
|
</activity-alias>
|
|
|
|
<activity android:name=".ConversationListArchiveActivity"
|
|
android:label="@string/chat_archived_chats_title"
|
|
android:launchMode="singleTask"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
|
|
android:parentActivityName=".ConversationListActivity">
|
|
<meta-data
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
android:value="org.thoughtcrime.securesms.ConversationListActivity" />
|
|
</activity>
|
|
|
|
<activity android:name=".ConversationListRelayingActivity"
|
|
android:label="@string/app_name"
|
|
android:launchMode="singleTask"
|
|
android:theme="@style/TextSecure.LightNoActionBar"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize" />
|
|
|
|
<activity android:name=".ConversationActivity"
|
|
android:windowSoftInputMode="stateUnchanged"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
|
|
android:parentActivityName=".ConversationListActivity">
|
|
<meta-data
|
|
android:name="android.support.PARENT_ACTIVITY"
|
|
android:value="org.thoughtcrime.securesms.ConversationListActivity" />
|
|
</activity>
|
|
|
|
<activity android:name=".GroupCreateActivity"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".NewConversationActivity"
|
|
android:theme="@style/TextSecure.LightNoActionBar"
|
|
android:windowSoftInputMode="stateHidden"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
|
|
|
<intent-filter>
|
|
<data android:scheme="mailto"/>
|
|
<action android:name="android.intent.action.VIEW"/>
|
|
<category android:name="android.intent.category.DEFAULT"/>
|
|
<category android:name="android.intent.category.BROWSABLE"/>
|
|
</intent-filter>
|
|
|
|
</activity>
|
|
|
|
<activity android:name=".ContactMultiSelectionActivity"
|
|
android:label="@string/contacts_title"
|
|
android:windowSoftInputMode="stateHidden"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".ApplicationPreferencesActivity"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".WelcomeActivity"
|
|
android:launchMode="singleTask"
|
|
android:theme="@style/TextSecure.LightNoActionBar"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".RegistrationActivity"
|
|
android:launchMode="singleTask"
|
|
android:windowSoftInputMode="stateUnchanged"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
|
|
<!-- this scheme is used as the redirect_url for getOauth2Url()
|
|
and should be whitelisted by the supported oauth2 services -->
|
|
<data android:scheme="chat.delta" android:path="/${applicationId}/auth" tools:ignore="AppLinkUrlError"/>
|
|
<data android:scheme="chat.delta" android:path="/auth" tools:ignore="AppLinkUrlError"/>
|
|
|
|
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<activity android:name=".LogViewActivity"
|
|
android:label="@string/pref_log_header"
|
|
android:windowSoftInputMode="stateHidden"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".MediaPreviewActivity"
|
|
android:label="@string/media_preview"
|
|
android:windowSoftInputMode="stateHidden"
|
|
android:launchMode="singleTask"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".ProfileActivity"
|
|
android:theme="@style/TextSecure.LightNoActionBar"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".DummyActivity"
|
|
android:theme="@android:style/Theme.NoDisplay"
|
|
android:enabled="true"
|
|
android:allowTaskReparenting="true"
|
|
android:noHistory="true"
|
|
android:excludeFromRecents="true"
|
|
android:alwaysRetainTaskState="false"
|
|
android:stateNotNeeded="true"
|
|
android:clearTaskOnLaunch="true"
|
|
android:finishOnTaskLaunch="true" />
|
|
|
|
<activity android:name=".BlockedAndShareContactsActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".scribbles.ScribbleActivity"
|
|
android:theme="@style/TextSecure.ScribbleTheme"
|
|
android:windowSoftInputMode="stateHidden"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".scribbles.StickerSelectActivity"
|
|
android:theme="@style/TextSecure.ScribbleTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name="com.soundcloud.android.crop.CropImageActivity" />
|
|
|
|
<activity android:name=".CreateProfileActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:windowSoftInputMode="stateHidden|adjustResize"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".qr.QrActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".qr.QrShowActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".qr.RegistrationQrActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".preferences.ChatBackgroundActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"/>
|
|
|
|
<activity android:name=".LocalHelpActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
|
</activity>
|
|
|
|
<activity android:name=".WebxdcActivity"
|
|
android:label=""
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize"
|
|
android:exported="true">
|
|
</activity>
|
|
|
|
<activity android:name=".FullMsgActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
|
</activity>
|
|
|
|
<activity android:name=".ConnectivityActivity"
|
|
android:theme="@style/TextSecure.LightTheme"
|
|
android:configChanges="touchscreen|keyboard|keyboardHidden|orientation|screenLayout|screenSize">
|
|
</activity>
|
|
|
|
<activity android:name=".map.MapActivity" />
|
|
|
|
<service android:name=".connect.KeepAliveService" android:enabled="true" />
|
|
|
|
<service android:name=".geolocation.LocationBackgroundService" />
|
|
|
|
<service android:name=".service.GenericForegroundService" />
|
|
|
|
<service
|
|
android:name=".service.IPCAddAccountsService"
|
|
android:enabled="true"
|
|
android:exported="true"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="chat.delta.addaccount" />
|
|
</intent-filter>
|
|
</service>
|
|
|
|
<receiver android:name=".notifications.MarkReadReceiver"
|
|
android:enabled="true"
|
|
android:exported="false">
|
|
<intent-filter>
|
|
<action android:name="org.thoughtcrime.securesms.notifications.MARK_NOTICED"/>
|
|
<action android:name="org.thoughtcrime.securesms.notifications.CANCEL"/>
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<receiver android:name=".notifications.RemoteReplyReceiver"
|
|
android:enabled="true"
|
|
android:exported="false">
|
|
<intent-filter>
|
|
<action android:name="org.thoughtcrime.securesms.notifications.WEAR_REPLY"/>
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<provider android:name="androidx.core.content.FileProvider"
|
|
android:authorities="${applicationId}.fileprovider"
|
|
android:exported="false"
|
|
android:grantUriPermissions="true">
|
|
|
|
<meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_provider_paths" />
|
|
|
|
</provider>
|
|
|
|
<provider
|
|
android:name=".connect.AttachmentsContentProvider"
|
|
android:authorities="${applicationId}.attachments"
|
|
android:grantUriPermissions="true"
|
|
android:exported="false">
|
|
</provider>
|
|
|
|
<receiver android:name=".service.BootReceiver">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.BOOT_COMPLETED"/>
|
|
<action android:name="org.thoughtcrime.securesms.RESTART"/>
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<receiver
|
|
android:name=".service.PanicResponderListener"
|
|
android:exported="true">
|
|
<intent-filter>
|
|
<action android:name="info.guardianproject.panic.action.TRIGGER" />
|
|
</intent-filter>
|
|
</receiver>
|
|
|
|
<uses-library android:name="com.sec.android.app.multiwindow" android:required="false"/>
|
|
<meta-data android:name="com.sec.android.support.multiwindow" android:value="true" />
|
|
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_W" android:value="632.0dip" />
|
|
<meta-data android:name="com.sec.android.multiwindow.DEFAULT_SIZE_H" android:value="598.0dip" />
|
|
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_W" android:value="632.0dip" />
|
|
<meta-data android:name="com.sec.android.multiwindow.MINIMUM_SIZE_H" android:value="598.0dip" />
|
|
</application>
|
|
|
|
<queries>
|
|
<intent>
|
|
<action android:name="android.media.action.IMAGE_CAPTURE" />
|
|
</intent>
|
|
</queries>
|
|
</manifest>
|