Improve shortcut backup & restore.
From http://go/p-shortcut-restore : Currently on pre-P builds, there are 6 cases where shortcuts won't be restored. Launcher issue: A: Launcher is downgraded B: Launcher has allowBackup="false" C: Launcher's signature changed. A-C would result in not restoring any shortcuts from any apps. App issue: D: App is downgraded E: App has allowBackup="false" F: App's signature changed. D-F would result in not restoring any shortcuts from individual apps. In P, we'll restore all pinned shortcuts anyway except in case B and C. The new behavior would be: A: We'll restore all pinned shortcuts anyway even if the launcher is downgraded. B: If the launcher doesn't support backup&restore, we still don't restore shortcuts. C: If the launcher has a different signature, we still don't restore shortcuts. D, E, F: All pinned shortcuts will be restored, but are disabled. In case of D, E, F, shortcuts would be: 1. ShortcutInfo.isEnabled() will return false. They are not launchable. 2. If it's case D (downgrade), shortcuts will be re-enabled once a publisher app is updated to the original version or higher. 3. getDisabledMessage() will return a special, canned message explaining why they're disabled. 4. A new API getDisabledReason() will return one of the following values: - DISABLED_REASON_NOT_DISABLED (for non-disabled shortcuts) - DISABLED_REASON_BY_APP (for shortcuts disabled by apps) - DISABLED_REASON_APP_CHANGED (for shortcuts disabled when a manifest shortcut is gone.) - DISABLED_REASON_VERSION_LOWER (case D) - DISABLED_REASON_BACKUP_NOT_SUPPORTED (case E) - DISABLED_REASON_SIGNATURE_MISMATCH (case F) - (DISABLE_REASON_OTHER_RESTORE_ISSUE for future use) Launcher can opt to use this API to show a custom error message, rather than using the canned system message from getDisabledMessage(). 5. This spec change is completely transparent to publisher apps. In case D,E,F, the disabled shortcuts will only be visible to the launcher, and from the publisher app's point of view, they still don't exist. APIs such as getPinnedShortcuts() will not return them, and updateShortcuts() will not affect them. The enableShortcut() will not enable them either. Bug 62451035 Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest1 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest2 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest3 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest4 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest5 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest6 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest7 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest8 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest9 -w com.android.frameworks.servicestests Test: adb shell am instrument -w -e class com.android.server.pm.ShortcutManagerTest10 -w com.android.frameworks.servicestests Test: cts-tradefed run cts-dev --skip-device-info --skip-preconditions --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker -a armeabi-v7a -l INFO -m CtsShortcutManagerTestCases Test: cts-tradefed run cts-dev --skip-device-info --skip-preconditions --skip-system-status-check com.android.compatibility.common.tradefed.targetprep.NetworkConnectivityChecker -a armeabi-v7a -l INFO -m CtsShortcutHostTestCases Change-Id: Ib4d73aa44a0395f5e37c8ad0c9cd041a9038fb66
Loading
Please register or sign in to comment