diff --git a/res/values/strings.xml b/res/values/strings.xml
index e0e47932339..3da882d36ea 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -13149,6 +13149,11 @@ Data usage charges may apply.
Application will be stopped to apply page size compat setting.
+
+ Kernel update failed. Check and install any pending updates.
+
+ Kernel update failed. Error occurred while applying OTA.
+
DSU Loader
diff --git a/src/com/android/settings/development/Enable16kPagesPreferenceController.java b/src/com/android/settings/development/Enable16kPagesPreferenceController.java
index d8ad55f4146..1c1b713562a 100644
--- a/src/com/android/settings/development/Enable16kPagesPreferenceController.java
+++ b/src/com/android/settings/development/Enable16kPagesPreferenceController.java
@@ -186,7 +186,13 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
public void onFailure(@NonNull Throwable t) {
hideProgressDialog();
Log.e(TAG, "Failed to call applyPayload of UpdateEngineStable!", t);
- displayToast(mContext.getString(R.string.toast_16k_update_failed_text));
+ // installUpdate will always throw localized messages.
+ String message = t.getMessage();
+ if (message != null) {
+ displayToast(message);
+ } else {
+ displayToast(mContext.getString(R.string.toast_16k_update_failed_text));
+ }
}
},
ContextCompat.getMainExecutor(mContext));
@@ -208,10 +214,8 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
int status = data.getInt(SystemUpdateManager.KEY_STATUS);
if (status != SystemUpdateManager.STATUS_UNKNOWN
&& status != SystemUpdateManager.STATUS_IDLE) {
- throw new RuntimeException(
- "System has pending update! Please restart the device to complete applying"
- + " pending update. If you are seeing this after using 16KB developer"
- + " options, please check configuration and OTA packages!");
+ Log.e(TAG, "SystemUpdateManager is not available. Status :" + status);
+ throw new RuntimeException(mContext.getString(R.string.error_pending_updates));
}
// Publish system update info
@@ -223,7 +227,11 @@ public class Enable16kPagesPreferenceController extends DeveloperOptionsPreferen
Log.i(TAG, "Update file path is " + updateFile.getAbsolutePath());
applyUpdateFile(updateFile);
} catch (IOException e) {
- throw new RuntimeException(e);
+ Log.e(TAG, "Error occurred while applying OTA ", e);
+ throw new RuntimeException(mContext.getString(R.string.error_ota_failed));
+ } catch (Exception e) {
+ Log.e(TAG, "Unknown error occurred while applying OTA ", e);
+ throw new RuntimeException(mContext.getString(R.string.toast_16k_update_failed_text));
}
}