diff options
Diffstat (limited to 'OpenPGP-Keychain/AndroidManifest.xml')
-rw-r--r-- | OpenPGP-Keychain/AndroidManifest.xml | 447 |
1 files changed, 447 insertions, 0 deletions
diff --git a/OpenPGP-Keychain/AndroidManifest.xml b/OpenPGP-Keychain/AndroidManifest.xml new file mode 100644 index 000000000..68598df23 --- /dev/null +++ b/OpenPGP-Keychain/AndroidManifest.xml @@ -0,0 +1,447 @@ +<?xml version="1.0" encoding="utf-8"?> +<!-- + Copyright (C) 2012 Dominik Schürmann <dominik@dominikschuermann.de> + Copyright (C) 2010 Thialfihar <thi@thialfihar.org> + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.sufficientlysecure.keychain" + android:installLocation="auto" + android:versionCode="20000" + android:versionName="2.0" > + + <!-- + General remarks + =============== + - Last APG 1 version was 10900 (1.0.9 beta 00) + - APG 2 starting with versionCode 20000! + + + Association of file types to APG + ================================= + General remarks about file ending conventions: + - *.gpg for binary files + - *.asc for ascii armored files + + The actual content can be anything. + The file ending only shows if it is binary or ascii encoded. + + Remarks about the ugly android:pathPattern: + We are matching all files with a specific file ending. + This is done in an ugly way because of Android limitations. + Read http://stackoverflow.com/questions/1733195/android-intent-filter-for-a-particular-file-extension + and http://stackoverflow.com/questions/3400072/pathpattern-to-match-file-extension-does-not-work-if-a-period-exists-elsewhere-i/8599921 + for more information. + --> + + <uses-sdk + android:minSdkVersion="8" + android:targetSdkVersion="17" /> + + <uses-feature + android:name="android.hardware.wifi" + android:required="false" /> + <uses-feature + android:name="android.hardware.telephony" + android:required="false" /> + <uses-feature + android:name="android.hardware.microphone" + android:required="false" /> + <uses-feature + android:name="android.hardware.touchscreen" + android:required="false" /> + + <uses-permission android:name="android.permission.INTERNET" /> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.NFC" /> + <uses-permission android:name="com.fsck.k9.permission.READ_ATTACHMENT" /> + + <permission-group + android:name="org.sufficientlysecure.keychain.permission-group.keychain" + android:description="@string/permission_group_description" + android:icon="@drawable/icon" + android:label="@string/permission_group_label" /> + + <permission + android:name="org.sufficientlysecure.keychain.permission.ACCESS_KEYS" + android:description="@string/permission_access_keys_description" + android:label="@string/permission_access_keys_label" + android:permissionGroup="org.sufficientlysecure.keychain.permission-group.keychain" + android:protectionLevel="dangerous" /> + <permission + android:name="org.sufficientlysecure.keychain.permission.ACCESS_API" + android:description="@string/permission_access_api_description" + android:label="@string/permission_access_api_label" + android:permissionGroup="org.sufficientlysecure.keychain.permission-group.keychain" + android:protectionLevel="dangerous" /> + + <application + android:name=".KeychainApplication" + android:hardwareAccelerated="true" + android:icon="@drawable/icon" + android:label="@string/app_name" + android:theme="@style/Theme.Sherlock.Light" > + <activity + android:name=".ui.MainActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/app_name" > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </intent-filter> + </activity> + <activity + android:name=".ui.KeyListPublicActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_managePublicKeys" + android:launchMode="singleTop" + android:uiOptions="splitActionBarWhenNarrow" > + <intent-filter> + <action android:name="android.intent.action.SEARCH" /> + </intent-filter> + + <meta-data + android:name="android.app.searchable" + android:resource="@xml/searchable_public_keys" /> + </activity> + <activity + android:name=".ui.KeyListSecretActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_manageSecretKeys" + android:launchMode="singleTop" + android:uiOptions="splitActionBarWhenNarrow" > + <intent-filter> + <action android:name="android.intent.action.SEARCH" /> + </intent-filter> + + <meta-data + android:name="android.app.searchable" + android:resource="@xml/searchable_secret_keys" /> + </activity> + <activity + android:name=".ui.EditKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_editKey" + android:uiOptions="splitActionBarWhenNarrow" + android:windowSoftInputMode="stateHidden" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.CREATE_KEY" /> + <action android:name="org.sufficientlysecure.keychain.action.EDIT_KEY" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + <activity + android:name=".ui.SelectPublicKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_selectRecipients" + android:launchMode="singleTop" + android:uiOptions="splitActionBarWhenNarrow" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.SELECT_PUBLIC_KEYS" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.SEARCH" /> + </intent-filter> + + <meta-data + android:name="android.app.searchable" + android:resource="@xml/searchable_public_keys" /> + </activity> + <activity + android:name=".ui.SelectSecretKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_selectSignature" + android:launchMode="singleTop" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.SELECT_SECRET_KEY" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <intent-filter> + <action android:name="android.intent.action.SEARCH" /> + </intent-filter> + + <meta-data + android:name="android.app.searchable" + android:resource="@xml/searchable_secret_keys" /> + </activity> + <activity + android:name=".ui.EncryptActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_encrypt" + android:uiOptions="splitActionBarWhenNarrow" + android:windowSoftInputMode="stateHidden" > + + <!-- APG's own Actions --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.ENCRYPT" /> + <action android:name="org.sufficientlysecure.keychain.action.ENCRYPT_FILE" /> + <action android:name="org.sufficientlysecure.keychain.action.ENCRYPT_AND_RETURN" /> + <action android:name="org.sufficientlysecure.keychain.action.GENERATE_SIGNATURE" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="*/*" /> + </intent-filter> + <!-- Android's Send Action --> + <intent-filter android:label="@string/intent_send_encrypt" > + <action android:name="android.intent.action.SEND" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="*/*" /> + </intent-filter> + </activity> + <activity + android:name=".ui.DecryptActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_decrypt" + android:uiOptions="splitActionBarWhenNarrow" + android:windowSoftInputMode="stateHidden" > + + <!-- APG's own Actions --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.DECRYPT" /> + <action android:name="org.sufficientlysecure.keychain.action.DECRYPT_FILE" /> + <action android:name="org.sufficientlysecure.keychain.action.DECRYPT_AND_RETURN" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="*/*" /> + </intent-filter> + <!-- Android's Send Action --> + <intent-filter android:label="@string/intent_send_decrypt" > + <action android:name="android.intent.action.SEND" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="*/*" /> + </intent-filter> + <!-- Linking "Decrypt" to file types --> + <intent-filter android:label="@string/intent_decrypt_file" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data android:host="*" /> + <data android:scheme="file" /> + <data android:scheme="content" /> + <data android:mimeType="*/*" /> + <data android:pathPattern=".*\\.gpg" /> + <data android:pathPattern=".*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + </intent-filter> + <intent-filter android:label="@string/intent_decrypt_file" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data android:host="*" /> + <data android:scheme="file" /> + <data android:scheme="content" /> + <data android:mimeType="*/*" /> + <data android:pathPattern=".*\\.asc" /> + <data android:pathPattern=".*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + </intent-filter> + </activity> + <activity + android:name=".ui.KeyServerQueryActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_keyServerQuery" /> + <activity + android:name=".ui.KeyServerUploadActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_sendKey" /> + <activity + android:name=".ui.PreferencesActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_preferences" /> + <activity + android:name=".ui.PreferencesKeyServerActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_keyServerPreference" + android:uiOptions="splitActionBarWhenNarrow" + android:windowSoftInputMode="stateHidden" /> + <activity + android:name=".ui.SignKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_signKey" /> + <activity + android:name=".ui.ImportKeysActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_importKeys" + android:uiOptions="splitActionBarWhenNarrow" > + + <!-- APG's own Actions --> + <intent-filter android:label="@string/intent_import_key" > + <action android:name="org.sufficientlysecure.keychain.action.IMPORT" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="*/*" /> + </intent-filter> + <!-- IMPORT again without mimeType to also allow data only without filename --> + <intent-filter android:label="@string/intent_import_key" > + <action android:name="org.sufficientlysecure.keychain.action.IMPORT" /> + <action android:name="org.sufficientlysecure.keychain.action.IMPORT_FROM_QR_CODE" /> + <action android:name="org.sufficientlysecure.keychain.action.IMPORT_FROM_NFC" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <!-- Linking "Import key" to file types --> + <intent-filter android:label="@string/intent_import_key" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data android:host="*" /> + <data android:scheme="file" /> + <data android:scheme="content" /> + <data android:mimeType="*/*" /> + <data android:pathPattern=".*\\.gpg" /> + <data android:pathPattern=".*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.gpg" /> + </intent-filter> + <intent-filter android:label="@string/intent_import_key" > + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.DEFAULT" /> + <category android:name="android.intent.category.BROWSABLE" /> + + <data android:host="*" /> + <data android:scheme="file" /> + <data android:scheme="content" /> + <data android:mimeType="*/*" /> + <data android:pathPattern=".*\\.asc" /> + <data android:pathPattern=".*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + <data android:pathPattern=".*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\..*\\.asc" /> + </intent-filter> + </activity> + <activity + android:name=".ui.ShareNfcBeamActivity" + android:label="@string/title_shareByNfc" + android:launchMode="singleTop" + android:uiOptions="splitActionBarWhenNarrow" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.SHARE_KEYRING_WITH_NFC" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + + <!-- Handle NFC tags detected from outside our application --> + <intent-filter> + <action android:name="android.nfc.action.NDEF_DISCOVERED" /> + + <category android:name="android.intent.category.DEFAULT" /> + + <data android:mimeType="application/org.sufficientlysecure.keychain" /> + </intent-filter> + </activity> + <activity android:name=".ui.ShareActivity" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.SHARE_KEYRING" /> + <action android:name="org.sufficientlysecure.keychain.action.SHARE_KEYRING_WITH_QR_CODE" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + <activity + android:name=".ui.HelpActivity" + android:label="@string/title_help" /> + + <service android:name=".service.PassphraseCacheService" /> + <service android:name="org.sufficientlysecure.keychain.service.KeychainIntentService" /> + <service + android:name="org.sufficientlysecure.keychain.service.KeychainApiService" + android:enabled="true" + android:exported="true" + android:permission="org.sufficientlysecure.keychain.permission.ACCESS_API" + android:process=":remoteapi" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.service.IApgApiService" /> + </intent-filter> + + <meta-data + android:name="api_version" + android:value="3" /> + </service> + <service + android:name="org.sufficientlysecure.keychain.service.KeychainKeyService" + android:enabled="true" + android:exported="true" + android:permission="org.sufficientlysecure.keychain.permission.ACCESS_KEYS" + android:process=":remotekeys" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.service.IApgKeyService" /> + </intent-filter> + + <meta-data + android:name="api_version" + android:value="3" /> + </service> + + <provider + android:name="org.sufficientlysecure.keychain.provider.KeychainProviderInternal" + android:authorities="org.sufficientlysecure.keychain.internal" + android:exported="false" /> + <provider + android:name="org.sufficientlysecure.keychain.provider.KeychainProviderExternal" + android:authorities="org.sufficientlysecure.keychain" + android:exported="true" + android:readPermission="org.sufficientlysecure.keychain.permission.ACCESS_API" /> + + <!-- TODO: authority! --> + <provider + android:name="org.sufficientlysecure.keychain.provider.KeychainServiceBlobProvider" + android:authorities="org.sufficientlysecure.keychain.provider.apgserviceblobprovider" + android:permission="org.sufficientlysecure.keychain.permission.ACCESS_API" /> + </application> + +</manifest>
\ No newline at end of file |