c416f02d52
Remove memory leak from referencing MessageView context from the Intent that is created to go back to MessageList. MessageView is no longer hardcoded to go back to MessageList, it instead uses an Intent given at creation to get back to the originating Activity. Try our best to restore the MessageList in its previous state when "Manage BACK button" option is enabled: Since MessageList lives in its own task, we look for the previous active task and check whether its top activity matches it. If it does, we just finish MessageView and Android will automatically restore the previous task. If it doesn't, we launch the originating Intent (and MessageList state will be lost). If option is off, we get the regular Android behavior: got back to the previous screen, whenever it's the MessageList or another application if the user long-pressed HOME. The consequence of this is the need for a new permission in order to check the previous active task: android.permission.GET_TASKS
383 lines
16 KiB
XML
383 lines
16 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<manifest
|
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
|
android:versionCode="14001"
|
|
android:versionName="3.900" package="com.fsck.k9"
|
|
>
|
|
<uses-sdk
|
|
android:minSdkVersion="3"
|
|
android:targetSdkVersion="4"
|
|
/>
|
|
<supports-screens
|
|
android:largeScreens="true"
|
|
android:normalScreens="true"
|
|
android:smallScreens="true"
|
|
android:anyDensity="true"
|
|
/>
|
|
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
|
|
<uses-permission android:name="android.permission.READ_CONTACTS"/>
|
|
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS"/>
|
|
|
|
<!-- Needed to mark a contact as contacted -->
|
|
<uses-permission android:name="android.permission.WRITE_CONTACTS"/>
|
|
|
|
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
|
|
<uses-permission android:name="android.permission.INTERNET"/>
|
|
<uses-permission android:name="android.permission.VIBRATE"/>
|
|
<uses-permission android:name="android.permission.WAKE_LOCK"/>
|
|
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
|
|
|
<!-- In order to properly manage the BACK key, we do some check on the running tasks -->
|
|
<uses-permission android:name="android.permission.GET_TASKS" />
|
|
|
|
<uses-permission android:name="org.thialfihar.android.apg.permission.READ_KEY_DETAILS" />
|
|
|
|
<permission android:name="com.fsck.k9.permission.READ_ATTACHMENT"
|
|
android:permissionGroup="android.permission-group.MESSAGES"
|
|
android:protectionLevel="dangerous"
|
|
android:label="@string/read_attachment_label"
|
|
android:description="@string/read_attachment_desc"/>
|
|
<uses-permission android:name="com.fsck.k9.permission.READ_ATTACHMENT"/>
|
|
<permission android:name="com.fsck.k9.permission.REMOTE_CONTROL"
|
|
android:permissionGroup="android.permission-group.MESSAGES"
|
|
android:protectionLevel="dangerous"
|
|
android:label="@string/remote_control_label"
|
|
android:description="@string/remote_control_desc"/>
|
|
<uses-permission android:name="com.fsck.k9.permission.REMOTE_CONTROL"/>
|
|
<permission android:name="com.fsck.k9.permission.READ_MESSAGES"
|
|
android:permissionGroup="android.permission-group.MESSAGES"
|
|
android:protectionLevel="normal"
|
|
android:label="@string/read_messages_label"
|
|
android:description="@string/read_messages_desc"/>
|
|
<uses-permission android:name="com.fsck.k9.permission.READ_MESSAGES"/>
|
|
<permission android:name="com.fsck.k9.permission.DELETE_MESSAGES"
|
|
android:permissionGroup="android.permission-group.MESSAGES"
|
|
android:protectionLevel="normal"
|
|
android:label="@string/delete_messages_label"
|
|
android:description="@string/read_messages_desc"/>
|
|
<uses-permission android:name="com.fsck.k9.permission.DELETE_MESSAGES"/>
|
|
<application
|
|
android:icon="@drawable/icon"
|
|
android:label="@string/app_name"
|
|
android:name="K9"
|
|
android:allowTaskReparenting="false"
|
|
>
|
|
<meta-data android:name="android.app.default_searchable"
|
|
android:value=".activity.Search" />
|
|
|
|
<activity
|
|
android:name="com.fsck.k9.activity.Accounts"
|
|
android:launchMode="singleInstance"
|
|
android:configChanges="locale"
|
|
android:label="@string/app_name">
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.MAIN" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.LAUNCHER" />
|
|
</intent-filter>
|
|
</activity>
|
|
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.Prefs"
|
|
android:label="@string/prefs_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.FontSizeSettings"
|
|
android:label="@string/font_size_settings_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupBasics"
|
|
android:label="@string/account_setup_basics_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupAccountType"
|
|
android:label="@string/account_setup_account_type_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupIncoming"
|
|
android:label="@string/account_setup_incoming_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupComposition"
|
|
android:label="@string/account_settings_composition_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupOutgoing"
|
|
android:label="@string/account_setup_outgoing_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupOptions"
|
|
android:label="@string/account_setup_options_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupNames"
|
|
android:label="@string/account_setup_names_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.ChooseFolder"
|
|
android:theme="@style/Theme.K9Dialog"
|
|
android:label="@string/choose_folder_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.ChooseIdentity"
|
|
android:theme="@style/Theme.K9Dialog"
|
|
android:label="@string/choose_identity_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.ChooseAccount"
|
|
android:theme="@style/Theme.K9Dialog"
|
|
android:label="@string/choose_account_title"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.ManageIdentities"
|
|
android:label="@string/manage_identities_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.EditIdentity"
|
|
android:label="@string/edit_identity_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<!-- XXX Note: this activity is hacked to ignore config changes,
|
|
since it doesn't currently handle them correctly in code. -->
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSetupCheckSettings"
|
|
android:label="@string/account_setup_check_settings_title"
|
|
android:configChanges="keyboardHidden|orientation|locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.AccountSettings"
|
|
android:label="@string/account_settings_title_fmt"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
|
|
<activity
|
|
android:name="com.fsck.k9.activity.setup.FolderSettings"
|
|
android:theme="@android:style/Theme.Dialog"
|
|
android:label="@string/folder_settings_title"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.FolderList"
|
|
android:launchMode="singleTask"
|
|
android:configChanges="locale"
|
|
>
|
|
<intent-filter>
|
|
<!-- This action is only to allow an entry point for launcher shortcuts -->
|
|
<action android:name="android.intent.action.MAIN" />
|
|
</intent-filter>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.MessageList"
|
|
android:launchMode="singleInstance"
|
|
android:configChanges="locale"
|
|
>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.MessageView"
|
|
android:theme="@android:style/Theme.Light"
|
|
android:configChanges="locale"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<data
|
|
android:scheme="email"
|
|
android:host="messages"
|
|
/>
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.MessageCompose"
|
|
android:label="@string/app_name"
|
|
android:enabled="false"
|
|
android:configChanges="locale"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SENDTO" />
|
|
<data android:scheme="mailto" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND" />
|
|
<data android:mimeType="*/*" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEND_MULTIPLE" />
|
|
<data android:mimeType="*/*" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.VIEW" />
|
|
<data android:scheme="mailto" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
<category android:name="android.intent.category.BROWSABLE" />
|
|
</intent-filter>
|
|
</activity>
|
|
<!-- Search Activity - searchable -->
|
|
<activity android:name="com.fsck.k9.activity.Search"
|
|
android:label="@string/search_action"
|
|
android:configChanges="locale"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.SEARCH" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
<meta-data android:name="android.app.searchable"
|
|
android:resource="@xml/searchable" />
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.LauncherShortcuts"
|
|
android:label="@string/shortcuts_title"
|
|
android:configChanges="locale"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.CREATE_SHORTCUT" />
|
|
<category android:name="android.intent.category.DEFAULT" />
|
|
</intent-filter>
|
|
</activity>
|
|
<activity
|
|
android:name="com.fsck.k9.activity.AccessibleEmailContentActivity"
|
|
>
|
|
</activity>
|
|
|
|
<receiver android:name="com.fsck.k9.service.BootReceiver"
|
|
android:enabled="true"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.BOOT_COMPLETED" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.DEVICE_STORAGE_LOW" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.intent.action.DEVICE_STORAGE_OK" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="android.net.conn.BACKGROUND_DATA_SETTING_CHANGED" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="com.android.sync.SYNC_CONN_STATUS_CHANGED" />
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="com.fsck.k9.service.BroadcastReceiver.scheduleIntent"/>
|
|
</intent-filter>
|
|
</receiver>
|
|
<receiver android:name="com.fsck.k9.service.RemoteControlReceiver"
|
|
android:enabled="true"
|
|
android:permission="com.fsck.k9.permission.REMOTE_CONTROL"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="com.fsck.k9.K9RemoteControl.set"/>
|
|
|
|
</intent-filter>
|
|
<intent-filter>
|
|
<action android:name="com.fsck.k9.K9RemoteControl.requestAccounts"/>
|
|
|
|
</intent-filter>
|
|
</receiver>
|
|
<receiver android:name="com.fsck.k9.service.CoreReceiver"
|
|
android:enabled="true"
|
|
>
|
|
<intent-filter>
|
|
<action android:name="com.fsck.k9.service.CoreReceiver.wakeLockRelease"/>
|
|
</intent-filter>
|
|
</receiver>
|
|
<receiver android:name="com.fsck.k9.service.StorageReceiver"
|
|
android:enabled="true"
|
|
>
|
|
<intent-filter>
|
|
<!--
|
|
android.intent.action.MEDIA_MOUNTED
|
|
|
|
* Broadcast Action: External media is present and mounted at its mount point.
|
|
* The path to the mount point for the removed media is contained in the Intent.mData field.
|
|
* The Intent contains an extra with name "read-only" and Boolean value to indicate if the
|
|
* media was mounted read only.
|
|
|
|
-->
|
|
<action android:name="android.intent.action.MEDIA_MOUNTED"/>
|
|
<!--
|
|
|
|
MEDIA_EJECT and MEDIA_UNMOUNTED are not defined here: they have to be dynamically registered
|
|
otherwise it would make K-9 start at the wrong time
|
|
|
|
-->
|
|
<data android:scheme="file"/>
|
|
</intent-filter>
|
|
</receiver>
|
|
<service
|
|
android:name="com.fsck.k9.service.MailService"
|
|
android:enabled="true"
|
|
>
|
|
</service>
|
|
<service
|
|
android:name="com.fsck.k9.service.PushService"
|
|
android:enabled="true"
|
|
>
|
|
</service>
|
|
<service
|
|
android:name="com.fsck.k9.service.PollService"
|
|
android:enabled="true"
|
|
>
|
|
</service>
|
|
<service
|
|
android:name="com.fsck.k9.service.RemoteControlService"
|
|
android:enabled="true"
|
|
android:permission="com.fsck.k9.permission.REMOTE_CONTROL"
|
|
>
|
|
</service>
|
|
<service
|
|
android:name="com.fsck.k9.service.SleepService"
|
|
android:enabled="true"
|
|
>
|
|
</service>
|
|
<provider
|
|
android:name="com.fsck.k9.provider.AttachmentProvider"
|
|
android:authorities="com.fsck.k9.attachmentprovider"
|
|
android:multiprocess="true"
|
|
android:grantUriPermissions="true"
|
|
android:readPermission="com.fsck.k9.permission.READ_ATTACHMENT"
|
|
/>
|
|
<provider
|
|
android:name="com.fsck.k9.provider.MessageProvider"
|
|
android:authorities="com.fsck.k9.messageprovider"
|
|
android:multiprocess="true"
|
|
android:grantUriPermissions="true"
|
|
android:readPermission="com.fsck.k9.permission.READ_MESSAGES"
|
|
android:writePermission="com.fsck.k9.permission.DELETE_MESSAGES"
|
|
/>
|
|
</application>
|
|
</manifest>
|