diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 7d0223c..e16cb17 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -454,7 +454,7 @@
     <string name="download_file_exist_msg">文件已经存在，请重新输入文件名！</string>
     <string name="download_file_exist">文件已经存在</string>
     <string name ="time_min">分钟</string>
-    <string name="download_path_phone_stroage_label">/内置存储器</string>
+    <string name="download_path_phone_storage_label">/内置存储器</string>
     <string name="download_path_sd_card_label">/SD卡</string>
     <string name="download_path_unavailable_dlg_title">﻿浏览器的下载路径不可达</string>
     <string name="download_path_unavailable_dlg_msg">请重新设置浏览器的下载路径</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index dab4f51..e4c2fd3 100755
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1069,7 +1069,7 @@
     <string name="download_file_exist_msg">This File is Already Exist,Please Input a New File\'s Name!</string>
     <string name="download_file_exist">File Exist</string>
     <string name ="time_min">min</string>
-    <string name="download_path_phone_stroage_label">/Phone Stroage</string>
+    <string name="download_path_phone_storage_label">/Phone Storage</string>
     <string name="download_path_sd_card_label">/SD card</string>
     <string name="download_path_unavailable_dlg_title">Download Directory is Unavailable</string>
     <string name="download_path_unavailable_dlg_msg">Please modify the Download Directory of Browser</string>
diff --git a/src/com/android/browser/DownloadHandler.java b/src/com/android/browser/DownloadHandler.java
index 15167a0..1ce33da 100644
--- a/src/com/android/browser/DownloadHandler.java
+++ b/src/com/android/browser/DownloadHandler.java
@@ -566,7 +566,7 @@
             downloadPath = downloadPath.replace(sdCardDir, sdCardLabel);
         } else if ((phoneStorageDir != null) && downloadPath.startsWith(phoneStorageDir)) {
             String phoneStorageLabel = activity.getResources().getString(
-                    R.string.download_path_phone_stroage_label);
+                    R.string.download_path_phone_storage_label);
             downloadPath = downloadPath.replace(phoneStorageDir, phoneStorageLabel);
         }
         return downloadPath;
diff --git a/src/com/android/browser/DownloadSettings.java b/src/com/android/browser/DownloadSettings.java
index aecb543..698fa88 100644
--- a/src/com/android/browser/DownloadSettings.java
+++ b/src/com/android/browser/DownloadSettings.java
@@ -36,6 +36,7 @@
 import java.lang.Thread;
 import android.net.Uri;
 import android.os.Bundle;
+import android.os.Environment;
 import android.text.format.*;
 import android.util.Log;
 import android.view.View;
@@ -115,7 +116,8 @@
                 BrowserUtils.FILENAME_MAX_LENGTH);
 
         downloadFilenameET.setText(filenameBase);
-        downloadPath = BrowserSettings.getInstance().getDownloadPath();
+        downloadPath = chooseFolderFromMimeType(BrowserSettings.getInstance().getDownloadPath(),
+                mimetype);
         downloadPathForUser = DownloadHandler.getDownloadPathForUser(DownloadSettings.this,
                 downloadPath);
         setDownloadPathForUserText(downloadPathForUser);
@@ -238,6 +240,22 @@
         }
     }
 
+    // Add for carrier feature - download to related folders by mimetype.
+    private static String chooseFolderFromMimeType(String path, String mimeType) {
+        String destinationFolder = null;
+        if (!path.contains(Environment.DIRECTORY_DOWNLOADS) || null == mimeType)
+            return path;
+        if (mimeType.startsWith("audio"))
+            destinationFolder = Environment.DIRECTORY_MUSIC;
+        else if (mimeType.startsWith("video"))
+            destinationFolder = Environment.DIRECTORY_MOVIES;
+        else if (mimeType.startsWith("image"))
+            destinationFolder = Environment.DIRECTORY_PICTURES;
+        if (null != destinationFolder)
+            path = path.replace(Environment.DIRECTORY_DOWNLOADS, destinationFolder);
+        return path;
+    }
+
     /**
      * show download path for user
      *
