diff options
Diffstat (limited to 'OpenPGP-Keychain/src/main/AndroidManifest.xml')
-rw-r--r-- | OpenPGP-Keychain/src/main/AndroidManifest.xml | 408 |
1 files changed, 408 insertions, 0 deletions
diff --git a/OpenPGP-Keychain/src/main/AndroidManifest.xml b/OpenPGP-Keychain/src/main/AndroidManifest.xml new file mode 100644 index 000000000..1863d2b62 --- /dev/null +++ b/OpenPGP-Keychain/src/main/AndroidManifest.xml @@ -0,0 +1,408 @@ +<?xml version="1.0" encoding="utf-8"?> +<manifest xmlns:android="http://schemas.android.com/apk/res/android" + package="org.sufficientlysecure.keychain" + android:installLocation="auto" + android:versionCode="22000" + android:versionName="2.2" > + + <!-- + General remarks + =============== + - Last APG 1 version was 10900 (1.0.9 beta 00) + - Keychain starting with versionCode 20000! + + Association of file types to Keychain + ===================================== + 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. + - Do _not_ set mimeType for gpg! + Cyanogenmod's file manager will only show Keychain for gpg files if no mimeType is set! + For OI Filemanager it makes no difference, gpg files can't be associated + --> + + <uses-sdk + android:minSdkVersion="8" + android:targetSdkVersion="19" /> + + <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" /> + + <!-- android:allowBackup="false": Don't allow backup over adb backup or other apps! --> + <application + android:name=".KeychainApplication" + android:allowBackup="false" + android:hardwareAccelerated="true" + android:icon="@drawable/icon" + android:label="@string/app_name" + android:theme="@style/Theme.Sherlock.Light" > + <activity + android:name=".ui.KeyListPublicActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/app_name" + android:launchMode="singleTop" > + <intent-filter> + <action android:name="android.intent.action.MAIN" /> + + <category android:name="android.intent.category.LAUNCHER" /> + </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.KeyListSecretActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_manage_secret_keys" + android:launchMode="singleTop" > + + <!-- <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_edit_key" + android:windowSoftInputMode="stateHidden" /> + <activity + android:name=".ui.ViewKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_key_details" + android:parentActivityName=".ui.KeyListPublicActivity" > + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.KeyListPublicActivity" /> + </activity> + <activity + android:name=".ui.ViewKeyActivityJB" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_key_details" + android:parentActivityName=".ui.KeyListPublicActivity" > + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.KeyListPublicActivity" /> + </activity> + <activity + android:name=".ui.SelectPublicKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_select_recipients" + 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.SelectSecretKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_select_secret_key" + android:launchMode="singleTop" > + + <!-- <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" > + + <!-- Keychain's own Actions --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.ENCRYPT" /> + + <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" > + + <!-- Keychain's own Actions --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.DECRYPT" /> + + <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" /> + <!-- Workaround to match files in pathes with dots in them, like /cdcard/my.folder/test.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" /> + <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_key_server_query" /> + <activity + android:name=".ui.KeyServerUploadActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_send_key" /> + <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_key_server_preference" + android:uiOptions="splitActionBarWhenNarrow" + android:windowSoftInputMode="stateHidden" /> + <activity + android:name=".ui.SignKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_sign_key" /> + <activity + android:name=".ui.ImportKeysActivity" + android:label="@string/title_import_keys" + android:launchMode="singleTop" + android:windowSoftInputMode="stateHidden" > + + <!-- 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" /> + <!-- mime type as defined in http://tools.ietf.org/html/rfc3156, section 7 --> + <data android:mimeType="application/pgp-keys" /> + </intent-filter> + <!-- Keychain's own Actions --> + <intent-filter android:label="@string/intent_import_key" > + <action android:name="org.sufficientlysecure.keychain.action.IMPORT_KEY" /> + + <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_KEY" /> + <action android:name="org.sufficientlysecure.keychain.action.IMPORT_KEY_FROM_QR_CODE" /> + + <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: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.HelpActivity" + android:label="@string/title_help" /> + + <!-- Internal services/content providers (not exported) --> + <service + android:name=".service.PassphraseCacheService" + android:exported="false" + android:process=":passphrase_cache" /> + <service + android:name="org.sufficientlysecure.keychain.service.KeychainIntentService" + android:exported="false" /> + + <provider + android:name="org.sufficientlysecure.keychain.provider.KeychainProvider" + android:authorities="org.sufficientlysecure.keychain.provider" + android:exported="false" /> + + <!-- Internal classes of the remote APIs (not exported) --> + <activity + android:name="org.sufficientlysecure.keychain.service.remote.RemoteServiceActivity" + android:exported="false" + android:label="@string/app_name" + android:launchMode="singleTop" + android:process=":remote_api" + android:taskAffinity=":remote_api" /> + <activity + android:name="org.sufficientlysecure.keychain.service.remote.RegisteredAppsListActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:exported="false" + android:label="@string/title_api_registered_apps" /> + <activity + android:name="org.sufficientlysecure.keychain.service.remote.AppSettingsActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:exported="false" /> + + <!-- OpenPGP Remote API --> + <service + android:name="org.sufficientlysecure.keychain.service.remote.OpenPgpService" + android:enabled="true" + android:exported="true" + android:process=":remote_api" > + <intent-filter> + <action android:name="org.openintents.openpgp.IOpenPgpService" /> + </intent-filter> + + <meta-data + android:name="api_version" + android:value="1" /> + </service> + + <!-- Extended Remote API --> + <service + android:name="org.sufficientlysecure.keychain.service.remote.ExtendedApiService" + android:enabled="true" + android:exported="true" + android:process=":remote_api" > + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.service.remote.IExtendedApiService" /> + </intent-filter> + + <meta-data + android:name="api_version" + android:value="1" /> + </service> + + <!-- TODO: authority! Make this API with content provider uris --> + <!-- <provider --> + <!-- android:name="org.sufficientlysecure.keychain.provider.KeychainServiceBlobProvider" --> + <!-- android:authorities="org.sufficientlysecure.keychain.provider.KeychainServiceBlobProvider" --> + <!-- android:permission="org.sufficientlysecure.keychain.permission.ACCESS_API" /> --> + </application> + +</manifest>
\ No newline at end of file |