thunderbird-android/AndroidManifest.xml
Fiouz c416f02d52 Improve BACK button handling for MessageView
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
2011-06-08 22:53:23 +02:00

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>