Skip to content

Instantly share code, notes, and snippets.

@pfn
Last active December 31, 2015 18:22
Show Gist options
  • Save pfn/8025880 to your computer and use it in GitHub Desktop.
Save pfn/8025880 to your computer and use it in GitHub Desktop.
remove device admin policies from exchange emails (patch written against tag:android-4.4.2_r1) (disable built-in Email/Exchange Services packages prior to installation) Install Email.apk first followed by Exchange2.apk after building 1. Setup AOSP build environment (envsetup.sh; lunch; etc.) 2. make -j16 Email Exchange2 3. adb install out/target…
diff --git a/Android.mk b/Android.mk
index 8bbbd98..59a6398 100644
--- a/Android.mk
+++ b/Android.mk
@@ -41,6 +41,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.gridlayout
+LOCAL_AAPT_FLAGS += --rename-manifest-package com.android.emailhack
LOCAL_STATIC_JAVA_LIBRARIES := android-common com.android.emailcommon com.android.emailsync guava android-common-chips libphotoviewer
LOCAL_STATIC_JAVA_LIBRARIES += android-support-v4
@@ -51,6 +52,8 @@ LOCAL_PACKAGE_NAME := Email
LOCAL_PROGUARD_FLAG_FILES := proguard.flags $(unified_email_dir)/proguard.flags
+LOCAL_DEX_PREOPT := false
+
LOCAL_SDK_VERSION := current
include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 7baa557..e9d5394 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -49,31 +49,31 @@
<!-- 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: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:supportsRtl="false" >
@@ -339,7 +339,7 @@
<!-- additional activities -->
<provider
- android:authorities="com.android.email2.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" >
@@ -347,7 +347,7 @@
</provider>
<provider
- android:authorities="com.android.email2.accountcache"
+ android:authorities="com.android.emailhack.accountcache"
android:label="@string/account_cache_provider"
android:exported="true"
android:name="com.android.mail.providers.EmailAccountCacheProvider" >
@@ -366,7 +366,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"/>
@@ -517,7 +517,7 @@
<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
@@ -528,7 +528,7 @@
<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
@@ -539,7 +539,7 @@
<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
@@ -550,7 +550,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
@@ -624,19 +624,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 0abaa79..4582f47 100755
--- a/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
+++ b/emailcommon/src/com/android/emailcommon/provider/EmailContent.java
@@ -1235,7 +1235,7 @@ public abstract class EmailContent {
implements AttachmentColumns, 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 334a9f3..f084748 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>
@@ -668,7 +668,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>
@@ -801,14 +801,14 @@
<!-- 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_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="authority_email_provider" translatable="false">com.android.email.provider</string>
+ <string name="authority_email_provider" translatable="false">com.android.emailhack.provider</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>
@@ -816,7 +816,7 @@
<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>
diff --git a/res/xml/authenticator_legacy_eas.xml b/res/xml/authenticator_legacy_eas.xml
index 041ad20..762a173 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/stat_notify_email"
android:label="@string/exchange_name"
diff --git a/res/xml/authenticator_legacy_email.xml b/res/xml/authenticator_legacy_email.xml
index 532cc05..86e9a80 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/stat_notify_email"
android:label="@string/exchange_name"
diff --git a/res/xml/searchable.xml b/res/xml/searchable.xml
index 434d299..2852b7f 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_holo_light"
- 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 fa63c84..d89641d 100644
--- a/src/com/android/email/SecurityPolicy.java
+++ b/src/com/android/email/SecurityPolicy.java
@@ -245,28 +245,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;
}
/**
@@ -622,8 +601,6 @@ public class SecurityPolicy {
LogUtils.d(Logging.LOG_TAG, "Notify policies for " + account.mDisplayName
+ " changed.");
// Notify that policies changed
- NotificationController.getInstance(mContext).showSecurityChangedNotification(
- account);
} else {
LogUtils.d(Logging.LOG_TAG, "Policy is active and unchanged; do not notify.");
}
diff --git a/src/com/android/email/service/EmailBroadcastProcessorService.java b/src/com/android/email/service/EmailBroadcastProcessorService.java
index ffad8a0..f10e083 100644
--- a/src/com/android/email/service/EmailBroadcastProcessorService.java
+++ b/src/com/android/email/service/EmailBroadcastProcessorService.java
@@ -263,7 +263,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();
@@ -271,7 +271,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 c9b083b..a102250 100644
--- a/src/com/android/email/service/EmailServiceUtils.java
+++ b/src/com/android/email/service/EmailServiceUtils.java
@@ -348,7 +348,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/src/com/android/mail/browse/EmailConversationProvider.java b/src/com/android/mail/browse/EmailConversationProvider.java
index ebff313..2731d1b 100644
--- a/src/com/android/mail/browse/EmailConversationProvider.java
+++ b/src/com/android/mail/browse/EmailConversationProvider.java
@@ -23,10 +23,10 @@ import java.lang.Override;
public class EmailConversationProvider extends ConversationProvider {
// The authority of our conversation provider (a forwarding provider)
// This string must match the declaration in AndroidManifest.xml
- private static final String sAuthority = "com.android.email2.conversation.provider";
+ private static final String sAuthority = "com.android.emailhack.conversation.provider";
@Override
protected String getAuthority() {
return sAuthority;
}
-}
\ No newline at end of file
+}
diff --git a/src/com/android/mail/providers/EmailAccountCacheProvider.java b/src/com/android/mail/providers/EmailAccountCacheProvider.java
index a311e36..8a70113 100644
--- a/src/com/android/mail/providers/EmailAccountCacheProvider.java
+++ b/src/com/android/mail/providers/EmailAccountCacheProvider.java
@@ -24,12 +24,12 @@ import com.android.email.activity.setup.AccountSettings;
public class EmailAccountCacheProvider extends MailAppProvider {
// Content provider for Email
- private static final String sAuthority = "com.android.email2.accountcache";
+ private static final String sAuthority = "com.android.emailhack.accountcache";
/**
* Authority for the suggestions provider. This is specified in AndroidManifest.xml and
* res/xml/searchable.xml.
*/
- private static final String sSuggestionsAuthority = "com.android.email.suggestionsprovider";
+ private static final String sSuggestionsAuthority = "com.android.emailhack.suggestionsprovider";
@Override
protected String getAuthority() {
diff --git a/Android.mk b/Android.mk
index cc5e4de..583b780 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 0f9392c..2a55ab0 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" />
@@ -70,7 +70,7 @@
android:icon="@mipmap/icon"
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"
>
@@ -119,7 +119,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 86e8d37..cfac56d 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