Fix migration from Email1 to Email2 when using combined inbox.
Bug: 8578254 Change-Id: I2afb7e145664c1e6d10c0cfbf654d835fec8c9f1
This commit is contained in:
parent
503cc0630d
commit
3a82ad5992
@ -866,7 +866,7 @@ public class EmailProvider extends ContentProvider {
|
|||||||
// A specific mailbox
|
// A specific mailbox
|
||||||
// insert into this URI causes a message to be added to the mailbox
|
// insert into this URI causes a message to be added to the mailbox
|
||||||
// ** NOTE For now, the accountKey must be set manually in the values!
|
// ** NOTE For now, the accountKey must be set manually in the values!
|
||||||
matcher.addURI(EmailContent.AUTHORITY, "mailbox/#", MAILBOX_ID);
|
matcher.addURI(EmailContent.AUTHORITY, "mailbox/*", MAILBOX_ID);
|
||||||
matcher.addURI(EmailContent.AUTHORITY, "mailboxNotification/#",
|
matcher.addURI(EmailContent.AUTHORITY, "mailboxNotification/#",
|
||||||
MAILBOX_NOTIFICATION);
|
MAILBOX_NOTIFICATION);
|
||||||
matcher.addURI(EmailContent.AUTHORITY, "mailboxMostRecentMessage/#",
|
matcher.addURI(EmailContent.AUTHORITY, "mailboxMostRecentMessage/#",
|
||||||
@ -1720,7 +1720,7 @@ public class EmailProvider extends ContentProvider {
|
|||||||
AttachmentDownloadService.attachmentChanged(context, id, flags);
|
AttachmentDownloadService.attachmentChanged(context, id, flags);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
private AttachmentService mAttachmentService = DEFAULT_ATTACHMENT_SERVICE;
|
private final AttachmentService mAttachmentService = DEFAULT_ATTACHMENT_SERVICE;
|
||||||
|
|
||||||
private Cursor notificationQuery(final Uri uri) {
|
private Cursor notificationQuery(final Uri uri) {
|
||||||
final SQLiteDatabase db = getDatabase(getContext());
|
final SQLiteDatabase db = getDatabase(getContext());
|
||||||
@ -2676,7 +2676,7 @@ public class EmailProvider extends ContentProvider {
|
|||||||
return "content://" + EmailContent.AUTHORITY + "/" + type + "/" + id;
|
return "content://" + EmailContent.AUTHORITY + "/" + type + "/" + id;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static final long COMBINED_ACCOUNT_ID = 0x10000000;
|
public static final long COMBINED_ACCOUNT_ID = 0x10000000;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate an id for a combined mailbox of a given type
|
* Generate an id for a combined mailbox of a given type
|
||||||
@ -2691,7 +2691,7 @@ public class EmailProvider extends ContentProvider {
|
|||||||
return Long.toString(getVirtualMailboxId(accountId, type));
|
return Long.toString(getVirtualMailboxId(accountId, type));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static long getVirtualMailboxId(long accountId, int type) {
|
public static long getVirtualMailboxId(long accountId, int type) {
|
||||||
return (accountId << 32) + type;
|
return (accountId << 32) + type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -98,6 +98,9 @@ public class WidgetProvider extends BaseWidgetProvider {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
accountId = migrateLegacyWidgetAccountId(accountId);
|
||||||
|
mailboxId = migrateLegacyWidgetMailboxId(mailboxId, accountId);
|
||||||
|
|
||||||
// Get Account and folder objects for the account id and mailbox id
|
// Get Account and folder objects for the account id and mailbox id
|
||||||
final com.android.mail.providers.Account uiAccount = getAccount(context, accountId);
|
final com.android.mail.providers.Account uiAccount = getAccount(context, accountId);
|
||||||
final Folder uiFolder = getFolder(context, mailboxId);
|
final Folder uiFolder = getFolder(context, mailboxId);
|
||||||
@ -116,6 +119,26 @@ public class WidgetProvider extends BaseWidgetProvider {
|
|||||||
editor.apply();
|
editor.apply();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long migrateLegacyWidgetAccountId(long accountId) {
|
||||||
|
if (accountId == Account.ACCOUNT_ID_COMBINED_VIEW) {
|
||||||
|
return EmailProvider.COMBINED_ACCOUNT_ID;
|
||||||
|
}
|
||||||
|
return accountId;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param accountId The migrated accountId
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private long migrateLegacyWidgetMailboxId(long mailboxId, long accountId) {
|
||||||
|
if (mailboxId == Mailbox.QUERY_ALL_INBOXES) {
|
||||||
|
return EmailProvider.getVirtualMailboxId(accountId, Mailbox.TYPE_INBOX);
|
||||||
|
} else if (mailboxId == Mailbox.QUERY_ALL_UNREAD) {
|
||||||
|
return EmailProvider.getVirtualMailboxId(accountId, Mailbox.TYPE_ALL_UNREAD);
|
||||||
|
}
|
||||||
|
return mailboxId;
|
||||||
|
}
|
||||||
|
|
||||||
private static com.android.mail.providers.Account getAccount(Context context, long accountId) {
|
private static com.android.mail.providers.Account getAccount(Context context, long accountId) {
|
||||||
final ContentResolver resolver = context.getContentResolver();
|
final ContentResolver resolver = context.getContentResolver();
|
||||||
final Cursor ac = resolver.query(EmailProvider.uiUri("uiaccount", accountId),
|
final Cursor ac = resolver.query(EmailProvider.uiUri("uiaccount", accountId),
|
||||||
|
Loading…
Reference in New Issue
Block a user