diff options
Diffstat (limited to 'OpenKeychain/src/main/AndroidManifest.xml')
-rw-r--r-- | OpenKeychain/src/main/AndroidManifest.xml | 450 |
1 files changed, 450 insertions, 0 deletions
diff --git a/OpenKeychain/src/main/AndroidManifest.xml b/OpenKeychain/src/main/AndroidManifest.xml new file mode 100644 index 000000000..de17f9b20 --- /dev/null +++ b/OpenKeychain/src/main/AndroidManifest.xml @@ -0,0 +1,450 @@ +<?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="25000" + android:versionName="2.5"> + + <!-- + 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="9" + 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" /> + <uses-permission android:name="android.permission.GET_ACCOUNTS" /> + + <!-- 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:theme="@style/KeychainTheme" + android:label="@string/app_name"> + <activity + android:name=".ui.KeyListActivity" + 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> + </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.KeyListActivity"> + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.KeyListActivity" /> + </activity> + <activity + android:name=".ui.ViewKeyActivityJB" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_key_details" + android:parentActivityName=".ui.KeyListActivity"> + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.KeyListActivity" /> + </activity> + <activity + android:name=".ui.ViewCertActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="View Certificate Details" + android:parentActivityName=".ui.ViewKeyActivity"> + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.ViewKeyActivity" /> + </activity> + <activity + android:name=".ui.SelectPublicKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_select_recipients" + android:launchMode="singleTop" /> + <activity + android:name=".ui.SelectSecretKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_select_secret_key" + android:launchMode="singleTop" /> + <activity + android:name=".ui.EncryptActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_encrypt" + android:windowSoftInputMode="stateHidden"> + + <!-- Keychain's own Actions --> + <!-- ENCRYPT with text as extra --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.ENCRYPT" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <!-- ENCRYPT with data Uri --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.ENCRYPT" /> + + <category android:name="android.intent.category.DEFAULT" /> + <!-- TODO: accept other schemes! --> + <data android:scheme="file" /> + </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:windowSoftInputMode="stateHidden"> + + <!--<!– VIEW with mimeType: TODO (from email app) –>--> + <!--<intent-filter android:label="@string/intent_import_key">--> + <!--<action android:name="android.intent.action.VIEW" />--> + + <!--<category android:name="android.intent.category.BROWSABLE" />--> + <!--<category android:name="android.intent.category.DEFAULT" />--> + + <!--<!– mime type as defined in http://tools.ietf.org/html/rfc3156 –>--> + <!--<data android:mimeType="application/pgp-signature" />--> + <!--</intent-filter>--> + <!--<!– VIEW with mimeType: TODO (from email app) –>--> + <!--<intent-filter android:label="@string/intent_import_key">--> + <!--<action android:name="android.intent.action.VIEW" />--> + + <!--<category android:name="android.intent.category.BROWSABLE" />--> + <!--<category android:name="android.intent.category.DEFAULT" />--> + + <!--<!– mime type as defined in http://tools.ietf.org/html/rfc3156 –>--> + <!--<data android:mimeType="application/pgp-encrypted" />--> + <!--</intent-filter>--> + <!-- Keychain's own Actions --> + <!-- DECRYPT with text as extra --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.DECRYPT" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <!-- DECRYPT with data Uri --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.DECRYPT" /> + + <category android:name="android.intent.category.DEFAULT" /> + <!-- TODO: accept other schemes! --> + <data android:scheme="file" /> + </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.UploadKeyActivity" + 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"> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.ui.PREFS_GEN" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.ui.PREFS_ADV" /> + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + </activity> + <activity + android:name=".ui.PreferencesKeyServerActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_key_server_preference" + android:windowSoftInputMode="stateHidden" /> + <activity + android:name=".ui.CertifyKeyActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_certify_key" /> + <activity + android:name=".ui.ImportKeysActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:label="@string/title_import_keys" + android:launchMode="singleTop" + android:windowSoftInputMode="stateHidden"> + + <!-- VIEW with fingerprint scheme: + Handle URIs with fingerprints when scanning directly from Barcode Scanner --> + <intent-filter android:label="@string/intent_import_key"> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.BROWSABLE" /> + <category android:name="android.intent.category.DEFAULT" /> + + <!-- Android's scheme matcher is case-sensitive, so include most likely variations --> + <data android:scheme="openpgp4fpr" /> + <data android:scheme="OPENPGP4FPR" /> + <data android:scheme="OpenPGP4FPR" /> + <data android:scheme="OpenPGP4Fpr" /> + <data android:scheme="OpenPGP4fpr" /> + </intent-filter> + <!-- VIEW with mimeType: Allows to import keys (attached to emails) from email apps --> + <intent-filter android:label="@string/intent_import_key"> + <action android:name="android.intent.action.VIEW" /> + + <category android:name="android.intent.category.BROWSABLE" /> + <category android:name="android.intent.category.DEFAULT" /> + + <!-- mime type as defined in http://tools.ietf.org/html/rfc3156 --> + <data android:mimeType="application/pgp-keys" /> + </intent-filter> + <!-- NFC: 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 --> + <data android:mimeType="application/pgp-keys" /> + </intent-filter> + <!-- VIEW with file endings: *.gpg (e.g. to import from OI File Manager) --> + <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> + <!-- VIEW with file endings: *.asc --> + <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> + <!-- Keychain's own Actions --> + <!-- IMPORT_KEY with files TODO: does this work? --> + <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_KEY with mimeType 'application/pgp-keys' --> + <intent-filter> + <action android:name="org.sufficientlysecure.keychain.action.IMPORT_KEY" /> + + <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> + <!-- IMPORT_KEY without mimeType to allow import with extras Bundle --> + <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" /> + <action android:name="org.sufficientlysecure.keychain.action.IMPORT_KEY_FROM_KEYSERVER" /> + + <category android:name="android.intent.category.DEFAULT" /> + </intent-filter> + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".ui.KeyListActivity" /> + </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=".service.KeychainIntentService" + android:exported="false" /> + + <provider + android:name=".provider.KeychainProvider" + android:authorities="org.sufficientlysecure.keychain.provider" + android:exported="false" /> + + <!-- Internal classes of the remote APIs (not exported) --> + <activity + android:name=".remote.ui.RemoteServiceActivity" + android:exported="false" + android:label="@string/app_name" + android:launchMode="singleTop" + android:process=":remote_api" /> + <activity + android:name=".remote.ui.AppsListActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:exported="false" + android:label="@string/title_api_registered_apps" /> + <activity + android:name=".remote.ui.AppSettingsActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:exported="false"> + + <meta-data + android:name="android.support.PARENT_ACTIVITY" + android:value=".remote.ui.AppsListActivity" /> + </activity> + <activity + android:name=".remote.ui.AccountSettingsActivity" + android:configChanges="orientation|screenSize|keyboardHidden|keyboard" + android:exported="false" /> + + <!-- OpenPGP Remote API --> + <service + android:name=".remote.OpenPgpService" + android:enabled="true" + android:exported="true" + android:process=":remote_api"> + <intent-filter> + <action android:name="org.openintents.openpgp.IOpenPgpService" /> + </intent-filter> + </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>--> + <!--</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> |