Skip to content

Instantly share code, notes, and snippets.

@pfn
Created November 24, 2014 23:35
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pfn/059d934a9d5ec4c4c6cb to your computer and use it in GitHub Desktop.
Save pfn/059d934a9d5ec4c4c6cb to your computer and use it in GitHub Desktop.
email & exchange hack for android 5.0
diff --git a/Android.mk b/Android.mk
index a7dbba5..209e8b8 100644
--- a/Android.mk
+++ b/Android.mk
@@ -44,6 +44,7 @@ LOCAL_ASSET_DIR := $(LOCAL_PATH)/$(unified_email_dir)/assets
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages com.android.ex.chips:com.android.mail:com.android.email:com.android.emailcommon:com.android.ex.photo:android.support.v7.appcompat:android.support.v7.gridlayout:com.android.bitmap:com.android.datetimepicker
+LOCAL_AAPT_FLAGS += --rename-manifest-package com.android.emailhack
LOCAL_STATIC_JAVA_LIBRARIES := android-common com.android.emailcommon guava libchips libphotoviewer
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
@@ -61,6 +62,8 @@ ifeq (eng,$(TARGET_BUILD_VARIANT))
LOCAL_PROGUARD_FLAG_FILES += proguard-test.flags
endif
+LOCAL_DEX_PREOPT := false
+
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
old mode 100644
new mode 100755
index 46d1e4b..508adc6
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -23,7 +23,7 @@
on the same date. This should start at zero. -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.android.email"
- android:versionCode="7008110" >
+ android:versionCode="500064" >
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
@@ -56,31 +56,32 @@
<!-- Grant permission to other apps to view attachments -->
<!-- STOPSHIP: protectionLevel should not be dangerous -->
<permission
- android:name="com.android.email.permission.READ_ATTACHMENT"
+ android:name="com.android.emailhack.permission.READ_ATTACHMENT"
android:permissionGroup="android.permission-group.MESSAGES"
android:protectionLevel="dangerous"
android:label="@string/permission_read_attachment_label"
android:description="@string/permission_read_attachment_desc"/>
<uses-permission
- android:name="com.android.email.permission.READ_ATTACHMENT"/>
+ android:name="com.android.emailhack.permission.READ_ATTACHMENT"/>
<uses-permission
android:name="android.permission.USE_CREDENTIALS"/>
<!-- Grant permission to system apps to access provider (see provider below) -->
<permission
- android:name="com.android.email.permission.ACCESS_PROVIDER"
+ android:name="com.android.emailhack.permission.ACCESS_PROVIDER"
android:protectionLevel="signature"
android:label="@string/permission_access_provider_label"
android:description="@string/permission_access_provider_desc"/>
<uses-permission
- android:name="com.android.email.permission.ACCESS_PROVIDER"/>
+ android:name="com.android.emailhack.permission.ACCESS_PROVIDER"/>
<application
android:name=".EmailApplication"
+ android:debuggable="true"
android:icon="@mipmap/ic_launcher_mail"
android:label="@string/app_name"
- android:requiredAccountType="com.android.exchange,com.android.email"
+ android:requiredAccountType="com.android.exchangehack,com.android.emailhack"
android:theme="@style/UnifiedEmailTheme"
android:hardwareAccelerated="true"
android:allowBackup="false"
@@ -323,7 +324,7 @@
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
- <data android:host="com.android.email.ACCOUNT_SETTINGS" />
+ <data android:host="com.android.emailhack.ACCOUNT_SETTINGS" />
<data android:scheme="auth"/>
</intent-filter>
</activity>
@@ -383,7 +384,7 @@
<!-- additional activities -->
<provider
- android:authorities="com.android.email.conversation.provider"
+ android:authorities="com.android.emailhack.conversation.provider"
android:label="@string/conversation_content_provider"
android:exported="true"
android:name="com.android.mail.browse.EmailConversationProvider" >
@@ -391,7 +392,7 @@
</provider>
<provider
- android:authorities="com.android.email.accountcache"
+ android:authorities="com.android.emailhack.accountcache"
android:label="@string/account_cache_provider"
android:exported="true"
android:name="com.android.mail.providers.EmailAccountCacheProvider" >
@@ -410,7 +411,7 @@
called SuggestionsProvider. The authority name is specified in the MailAppProvider
which is specific to the two apps separately. -->
<provider android:name="com.android.mail.providers.SuggestionsProvider"
- android:authorities="com.android.email.suggestionsprovider"
+ android:authorities="com.android.emailhack.suggestionsprovider"
android:exported="true" />
<service android:name="com.android.mail.compose.EmptyService"/>
@@ -562,29 +563,29 @@
<service
android:name=".service.PolicyService"
android:enabled="true"
- android:permission="com.android.email.permission.ACCESS_PROVIDER"
+ android:permission="com.android.emailhack.permission.ACCESS_PROVIDER"
>
<intent-filter>
<action
- android:name="com.android.email.POLICY_INTENT" />
+ android:name="com.android.emailhack.POLICY_INTENT" />
</intent-filter>
</service>
<service
android:name=".service.AccountService"
android:enabled="true"
- android:permission="com.android.email.permission.ACCESS_PROVIDER"
+ android:permission="com.android.emailhack.permission.ACCESS_PROVIDER"
>
<intent-filter>
<action
- android:name="com.android.email.ACCOUNT_INTENT" />
+ android:name="com.android.emailhack.ACCOUNT_INTENT" />
</intent-filter>
</service>
<service
android:name=".service.ImapService"
android:enabled="true"
- android:permission="com.android.email.permission.ACCESS_PROVIDER"
+ android:permission="com.android.emailhack.permission.ACCESS_PROVIDER"
>
<intent-filter>
<action
@@ -595,7 +596,7 @@
<service
android:name=".service.Pop3Service"
android:enabled="true"
- android:permission="com.android.email.permission.ACCESS_PROVIDER"
+ android:permission="com.android.emailhack.permission.ACCESS_PROVIDER"
>
<intent-filter>
<action
@@ -669,19 +670,19 @@
<provider
android:name=".provider.AttachmentProvider"
- android:authorities="com.android.email.attachmentprovider"
+ android:authorities="com.android.emailhack.attachmentprovider"
android:grantUriPermissions="true"
android:exported="true"
- android:readPermission="com.android.email.permission.READ_ATTACHMENT"
+ android:readPermission="com.android.emailhack.permission.READ_ATTACHMENT"
/>
<!-- This provider MUST be protected by strict permissions, as granting access to
it exposes user passwords and other confidential information. -->
<provider
android:name=".provider.EmailProvider"
- android:authorities="com.android.email.provider;com.android.email.notifier"
+ android:authorities="com.android.emailhack.provider;com.android.emailhack.notifier"
android:exported="true"
- android:permission="com.android.email.permission.ACCESS_PROVIDER"
+ android:permission="com.android.emailhack.permission.ACCESS_PROVIDER"
android:label="@string/app_name"
/>
diff --git a/emailcommon/res/values/strings.xml b/emailcommon/res/values/strings.xml
index a13f4c7..11674c6 100644
--- a/emailcommon/res/values/strings.xml
+++ b/emailcommon/res/values/strings.xml
@@ -40,5 +40,5 @@
<!-- Do Not Translate. This is the authority for the email package name -->
- <string name="email_package_name" translatable="false">com.android.email</string>
+ <string name="email_package_name" translatable="false">com.android.emailhack</string>
</resources>
diff --git a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
index 4d3fffc..9681923 100755
--- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
+++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
@@ -1330,7 +1330,7 @@ public abstract class EmailContent {
public static final class Attachment extends EmailContent implements Parcelable {
public static final String TABLE_NAME = "Attachment";
public static final String ATTACHMENT_PROVIDER_LEGACY_URI_PREFIX =
- "content://com.android.email.attachmentprovider";
+ "content://com.android.emailhack.attachmentprovider";
public static final String CACHED_FILE_QUERY_PARAM = "filePath";
diff --git a/res/values/accountprovider.xml b/res/values/accountprovider.xml
index 18108da..ca30035 100644
--- a/res/values/accountprovider.xml
+++ b/res/values/accountprovider.xml
@@ -19,7 +19,7 @@
<!-- List of content provider uris for -->
<string-array name="account_providers" translatable="false">
<!-- email account list -->
- <item>content://com.android.email.provider/uiaccts</item>
+ <item>content://com.android.emailhack.provider/uiaccts</item>
</string-array>
-</resources>
\ No newline at end of file
+</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 0e05b1f..82c0a00 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -19,7 +19,7 @@
and read from resources -->
<!-- Name of the search suggestions authority that looks up recent suggestions. This
needs to be modified in AndroidManifest.xml and res/xml/searchable.xml as well. -->
- <string name="suggestions_authority" translatable="false">com.android.email.suggestionsprovider</string>
+ <string name="suggestions_authority" translatable="false">com.android.emailhack.suggestionsprovider</string>
<!-- Permissions label for reading attachments -->
<string name="permission_read_attachment_label">Read email attachments</string>
@@ -693,7 +693,7 @@
<string name="provider_note_t_online">Before setting up this email account, visit the T-Online website and create a password for POP3 email access.</string>
<!-- Name of Microsoft Exchange account type; used by AccountManager -->
- <string name="exchange_name">Corporate</string>
+ <string name="exchange_name">Corporate (No Policy)</string>
<!-- Name of Microsoft Exchange account type; used by AccountManager -->
<string name="exchange_name_alternate">Microsoft Exchange ActiveSync</string>
@@ -786,20 +786,20 @@
<!-- Feedback uri to be used when feedback is enabled -->
<string name="email_feedback_uri" translatable="false"></string>
- <string name="account_manager_type_exchange" translatable="false">com.android.exchange</string>
- <string name="account_manager_type_pop3" translatable="false">com.android.email</string>
- <string name="account_manager_type_imap" translatable="false">com.android.email</string>
- <string name="account_manager_type_legacy_imap" translatable="false">com.android.email</string>
+ <string name="account_manager_type_exchange" translatable="false">com.android.exchangehack</string>
+ <string name="account_manager_type_pop3" translatable="false">com.android.emailhack</string>
+ <string name="account_manager_type_imap" translatable="false">com.android.emailhack</string>
+ <string name="account_manager_type_legacy_imap" translatable="false">com.android.emailhack</string>
<string name="intent_exchange_action" translatable="false">com.android.email.EXCHANGE_INTENT</string>
<string name="intent_exchange_cert_action" translatable="false">com.android.email.EXCHANGE_REQUEST_CERT</string>
- <string name="intent_exchange_package" translatable="false">com.android.exchange</string>
+ <string name="intent_exchange_package" translatable="false">com.android.exchangehack</string>
<string name="intent_account_manager_entry" translatable="false">com.android.email.activity.setup.ACCOUNT_MANAGER_ENTRY</string>
<string name="intent_force_create_email_account" translatable="false">com.android.email.FORCE_CREATE_ACCOUNT</string>
<string name="intent_create_email_account" translatable="false">com.android.email.CREATE_NEW_ACCOUNT</string>
- <string name="authority_email_provider" translatable="false">com.android.email.provider</string>
- <string name="authority_conversation_provider" translatable="false">com.android.email.conversation.provider</string>
- <string name="authority_account_cache_provider" translatable="false">com.android.email.accountcache</string>
- <string name="authority_suggestions_provider" translatable="false">com.android.email.suggestionsprovider</string>
+ <string name="authority_email_provider" translatable="false">com.android.emailhack.provider</string>
+ <string name="authority_conversation_provider" translatable="false">com.android.emailhack.conversation.provider</string>
+ <string name="authority_account_cache_provider" translatable="false">com.android.emailhack.accountcache</string>
+ <string name="authority_suggestions_provider" translatable="false">com.android.emailhack.suggestionsprovider</string>
<string name="protocol_legacy_imap" translatable="false">imap</string>
<string name="protocol_imap" translatable="false">imap</string>
<string name="protocol_pop3" translatable="false">pop3</string>
@@ -807,10 +807,10 @@
<string name="application_mime_type" translatable="false">application/email-ls</string>
<!-- Content Provider Authority for Eml Attachments -->
- <string name="eml_attachment_provider" translatable="false">com.android.email.provider.eml.attachment</string>
+ <string name="eml_attachment_provider" translatable="false">com.android.emailhack.provider.eml.attachment</string>
<!-- Provider name for widgets -->
- <string name="widget_provider" translatable="false">com.android.email.provider.WidgetProvider</string>
+ <string name="widget_provider" translatable="false">com.android.emailhack.provider.WidgetProvider</string>
<string name="print_job_name" translatable="false">Email - <xliff:g id="subject">%1$s</xliff:g></string>
diff --git a/res/xml/authenticator_legacy_eas.xml b/res/xml/authenticator_legacy_eas.xml
index f138f65..4c0a1e6 100644
--- a/res/xml/authenticator_legacy_eas.xml
+++ b/res/xml/authenticator_legacy_eas.xml
@@ -21,7 +21,7 @@
<!-- for the Account Manager. -->
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
- android:accountType="com.android.exchange"
+ android:accountType="com.android.exchangehack"
android:icon="@mipmap/ic_launcher_mail"
android:smallIcon="@drawable/ic_notification_mail_24dp"
android:label="@string/exchange_name"
diff --git a/res/xml/authenticator_legacy_email.xml b/res/xml/authenticator_legacy_email.xml
index db15300..5fa17a1 100644
--- a/res/xml/authenticator_legacy_email.xml
+++ b/res/xml/authenticator_legacy_email.xml
@@ -21,7 +21,7 @@
<!-- for the Account Manager. -->
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
- android:accountType="com.android.email"
+ android:accountType="com.android.emailhack"
android:icon="@mipmap/ic_launcher_mail"
android:smallIcon="@drawable/ic_notification_mail_24dp"
android:label="@string/exchange_name"
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
index be8da67..011ca9d 100644
--- a/res/xml/searchable.xml
+++ b/res/xml/searchable.xml
@@ -19,7 +19,7 @@
android:label="@string/search_title"
android:hint="@string/search_hint"
android:icon="@drawable/ic_menu_search"
- android:searchSuggestAuthority="com.android.email.suggestionsprovider"
+ android:searchSuggestAuthority="com.android.emailhack.suggestionsprovider"
android:searchSuggestSelection="query LIKE ?"
android:searchSuggestIntentAction="android.intent.action.SEARCH"
android:imeOptions="actionSearch" />
diff --git a/src/com/android/email/SecurityPolicy.java b/src/com/android/email/SecurityPolicy.java
index 3adf8b8..f7e7848 100644
--- a/src/com/android/email/SecurityPolicy.java
+++ b/src/com/android/email/SecurityPolicy.java
@@ -246,28 +246,7 @@ public class SecurityPolicy {
* @return true if the requested policies are active, false if not.
*/
public boolean isActive(Policy policy) {
- int reasons = getInactiveReasons(policy);
- if (MailActivityEmail.DEBUG && (reasons != 0)) {
- StringBuilder sb = new StringBuilder("isActive for " + policy + ": ");
- sb.append("FALSE -> ");
- if ((reasons & INACTIVE_NEED_ACTIVATION) != 0) {
- sb.append("no_admin ");
- }
- if ((reasons & INACTIVE_NEED_CONFIGURATION) != 0) {
- sb.append("config ");
- }
- if ((reasons & INACTIVE_NEED_PASSWORD) != 0) {
- sb.append("password ");
- }
- if ((reasons & INACTIVE_NEED_ENCRYPTION) != 0) {
- sb.append("encryption ");
- }
- if ((reasons & INACTIVE_PROTOCOL_POLICIES) != 0) {
- sb.append("protocol ");
- }
- LogUtils.d(TAG, sb.toString());
- }
- return reasons == 0;
+ return true;
}
/**
@@ -453,7 +432,6 @@ public class SecurityPolicy {
setAccountHoldFlag(context, account, newState);
if (newState) {
// Make sure there's a notification up
- NotificationController.getInstance(context).showSecurityNeededNotification(account);
}
}
}
@@ -501,7 +479,6 @@ public class SecurityPolicy {
// Put up an appropriate notification
if (policy.mProtocolPoliciesUnsupported == null) {
- NotificationController.getInstance(mContext).showSecurityNeededNotification(account);
} else {
NotificationController.getInstance(mContext).showSecurityUnsupportedNotification(
account);
@@ -619,8 +596,6 @@ public class SecurityPolicy {
"Notify policies for " + account.mDisplayName + " not supported.");
setHold = true;
if (notify) {
- NotificationController.getInstance(mContext).showSecurityUnsupportedNotification(
- account);
}
// Erase data
Uri uri = EmailProvider.uiUri("uiaccountdata", accountId);
@@ -631,8 +606,6 @@ public class SecurityPolicy {
+ " changed.");
if (notify) {
// Notify that policies changed
- NotificationController.getInstance(mContext).showSecurityChangedNotification(
- account);
}
} else {
LogUtils.d(Logging.LOG_TAG, "Policy is active and unchanged; do not notify.");
@@ -643,8 +616,6 @@ public class SecurityPolicy {
" are not being enforced.");
if (notify) {
// Put up a notification
- NotificationController.getInstance(mContext).showSecurityNeededNotification(
- account);
}
}
// Set/clear the account hold.
diff --git a/src/com/android/email/service/EmailBroadcastProcessorService.java b/src/com/android/email/service/EmailBroadcastProcessorService.java
index 3b15904..9b84ef1 100644
--- a/src/com/android/email/service/EmailBroadcastProcessorService.java
+++ b/src/com/android/email/service/EmailBroadcastProcessorService.java
@@ -261,7 +261,7 @@ public class EmailBroadcastProcessorService extends IntentService {
if (!protocolMap.isEmpty()) {
protocolMap.put("imap_type", getString(R.string.account_manager_type_legacy_imap));
protocolMap.put("pop3_type", getString(R.string.account_manager_type_pop3));
- updateAccountManagerAccountsOfType("com.android.email", protocolMap);
+ updateAccountManagerAccountsOfType("com.android.emailhack", protocolMap);
}
protocolMap.clear();
@@ -269,7 +269,7 @@ public class EmailBroadcastProcessorService extends IntentService {
removeNoopUpgrades(protocolMap);
if (!protocolMap.isEmpty()) {
protocolMap.put("eas_type", getString(R.string.account_manager_type_exchange));
- updateAccountManagerAccountsOfType("com.android.exchange", protocolMap);
+ updateAccountManagerAccountsOfType("com.android.exchangehack", protocolMap);
}
// Disable the old authenticators.
diff --git a/src/com/android/email/service/EmailServiceUtils.java b/src/com/android/email/service/EmailServiceUtils.java
index a2cda8d..bacf625 100644
--- a/src/com/android/email/service/EmailServiceUtils.java
+++ b/src/com/android/email/service/EmailServiceUtils.java
@@ -375,7 +375,7 @@ public class EmailServiceUtils {
if (!email) {
// Try our old provider name
email = ContentResolver.getSyncAutomatically(amAccount,
- "com.android.email.provider");
+ "com.android.emailhack.provider");
}
final boolean contacts = ContentResolver.getSyncAutomatically(amAccount,
ContactsContract.AUTHORITY);
diff --git a/Android.mk b/Android.mk
index 662c52f..e75a1f3 100644
--- a/Android.mk
+++ b/Android.mk
@@ -28,6 +28,7 @@ LOCAL_RESOURCE_DIR := $(addprefix $(LOCAL_PATH)/, $(res_dir))
LOCAL_AAPT_FLAGS := --auto-add-overlay
LOCAL_AAPT_FLAGS += --extra-packages com.android.emailcommon
+LOCAL_AAPT_FLAGS += --rename-manifest-package com.android.exchangehack
LOCAL_SRC_FILES := $(call all-java-files-under, src)
LOCAL_SRC_FILES += $(call all-java-files-under, build/src)
@@ -40,6 +41,9 @@ LOCAL_PACKAGE_NAME := Exchange2
LOCAL_OVERRIDES_PACKAGES := Exchange
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
+
+LOCAL_DEX_PREOPT := false
+
LOCAL_SDK_VERSION := 19
LOCAL_EMMA_COVERAGE_FILTER += +com.android.exchange.*
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index c81ac36..3374218 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -58,9 +58,9 @@
android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission
- android:name="com.android.email.permission.READ_ATTACHMENT"/>
+ android:name="com.android.emailhack.permission.READ_ATTACHMENT"/>
<uses-permission
- android:name="com.android.email.permission.ACCESS_PROVIDER"/>
+ android:name="com.android.emailhack.permission.ACCESS_PROVIDER"/>
<uses-sdk android:targetSdkVersion="19" android:minSdkVersion="14" />
@@ -68,9 +68,10 @@
<application
android:icon="@mipmap/icon"
+ android:debuggable="true"
android:label="@string/app_name"
android:name="Exchange"
- android:requiredAccountType="com.android.exchange"
+ android:requiredAccountType="com.android.exchangehack"
android:theme="@android:style/Theme.Holo.Light"
>
@@ -122,7 +123,7 @@
<provider
android:name="com.android.exchange.provider.ExchangeDirectoryProvider"
- android:authorities="com.android.exchange.directory.provider"
+ android:authorities="com.android.exchangehack.directory.provider"
android:readPermission="android.permission.READ_CONTACTS"
android:multiprocess="false"
android:exported="true"
diff --git a/build/src/com/android/exchange/Configuration.java b/build/src/com/android/exchange/Configuration.java
index ad93cb2..5e85855 100644
--- a/build/src/com/android/exchange/Configuration.java
+++ b/build/src/com/android/exchange/Configuration.java
@@ -17,9 +17,9 @@
package com.android.exchange;
public class Configuration {
- public static final String EXCHANGE_ACCOUNT_MANAGER_TYPE = "com.android.exchange";
+ public static final String EXCHANGE_ACCOUNT_MANAGER_TYPE = "com.android.exchangehack";
public static final String EXCHANGE_SERVICE_INTENT_ACTION =
"com.android.email.EXCHANGE_INTENT";
- public static final String EXCHANGE_GAL_AUTHORITY = "com.android.exchange.directory.provider";
+ public static final String EXCHANGE_GAL_AUTHORITY = "com.android.exchangehack.directory.provider";
public static final String EXCHANGE_PROTOCOL = "eas";
}
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 25d5ec5..e78014c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -22,7 +22,7 @@
<!-- Do Not Translate. Unused string. -->
<!-- Name of Microsoft Exchange account type; used by AccountManager -->
- <string name="exchange_name">Corporate</string>
+ <string name="exchange_name">Corporate (No Policy)</string>
<!-- Name of Microsoft Exchange account type; used by AccountManager -->
<string name="exchange_name_alternate">Microsoft Exchange ActiveSync</string>
@@ -196,8 +196,8 @@
<!-- A sync window length setting (i.e. load messages this far back) [CHAR LIMIT=25] -->
<string name="account_setup_options_mail_window_all">All</string>
- <string name="account_manager_type_exchange" translatable="false">com.android.exchange</string>
- <string name="authority_email_provider" translatable="false">com.android.email.provider</string>
+ <string name="account_manager_type_exchange" translatable="false">com.android.exchangehack</string>
+ <string name="authority_email_provider" translatable="false">com.android.emailhack.provider</string>
<!-- Title for notification warning about an authentication error [CHAR LIMIT=40] -->
<string name="auth_error_notification_title">Authentication error</string>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment