diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index ec099f7..7b52405 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -36,7 +36,7 @@
     <string name="download_unknown_title" msgid="7015124071247271585">"&lt;Bez naslova&gt;"</string>
     <string name="notification_download_complete" msgid="5443563299253103667">"Preuzimanje završeno."</string>
     <string name="notification_download_failed" msgid="8612136111952014978">"Preuzimanje neuspješno."</string>
-    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Veličina preuzimanja zahtjeva WiFi."</string>
+    <string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Veličina preuzimanja zahtijeva WiFi."</string>
     <string name="notification_paused_in_background" msgid="4328508073283591772">"Pauzirano u pozadini."</string>
     <string name="wifi_required_title" msgid="1995971416871498179">"Preuzimanje je preveliko za mrežu operatera"</string>
     <string name="wifi_required_body" msgid="3067694630143784449">"Morate koristiti WiFi kako biste dovršili ovo preuzimanje od <xliff:g id="SIZE">%s </xliff:g>. \n\nDodirnite <xliff:g id="QUEUE_TEXT">%s </xliff:g> kako biste pokrenuli ovo preuzimanje kada se narednog puta povežete na WiFi mrežu."</string>
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index e177da1..db7db65 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -105,11 +105,6 @@
     private static final int ALL_DOWNLOADS_ID = 4;
     /** URI matcher constant for the URI of a download's request headers */
     private static final int REQUEST_HEADERS_URI = 5;
-    /** URI matcher constant for the public URI returned by
-     * {@link DownloadManager#getUriForDownloadedFile(long)} if the given downloaded file
-     * is publicly accessible.
-     */
-    private static final int PUBLIC_DOWNLOAD_ID = 6;
     static {
         sURIMatcher.addURI("downloads", "my_downloads", MY_DOWNLOADS);
         sURIMatcher.addURI("downloads", "my_downloads/#", MY_DOWNLOADS_ID);
@@ -127,9 +122,6 @@
         sURIMatcher.addURI("downloads",
                 "download/#/" + Downloads.Impl.RequestHeaders.URI_SEGMENT,
                 REQUEST_HEADERS_URI);
-        sURIMatcher.addURI("downloads",
-                Downloads.Impl.PUBLICLY_ACCESSIBLE_DOWNLOADS_URI_SEGMENT + "/#",
-                PUBLIC_DOWNLOAD_ID);
     }
 
     /** Different base URIs that could be used to access an individual download */
@@ -526,8 +518,7 @@
                 return DOWNLOAD_LIST_TYPE;
             }
             case MY_DOWNLOADS_ID:
-            case ALL_DOWNLOADS_ID:
-            case PUBLIC_DOWNLOAD_ID: {
+            case ALL_DOWNLOADS_ID: {
                 // return the mimetype of this id from the database
                 final String id = getDownloadIdFromUri(uri);
                 final SQLiteDatabase db = mOpenHelper.getReadableDatabase();
@@ -1234,8 +1225,7 @@
             int uriMatch) {
         SqlSelection selection = new SqlSelection();
         selection.appendClause(where, whereArgs);
-        if (uriMatch == MY_DOWNLOADS_ID || uriMatch == ALL_DOWNLOADS_ID ||
-                uriMatch == PUBLIC_DOWNLOAD_ID) {
+        if (uriMatch == MY_DOWNLOADS_ID || uriMatch == ALL_DOWNLOADS_ID) {
             selection.appendClause(Downloads.Impl._ID + " = ?", getDownloadIdFromUri(uri));
         }
         if ((uriMatch == MY_DOWNLOADS || uriMatch == MY_DOWNLOADS_ID)
diff --git a/ui/res/values-ca/strings.xml b/ui/res/values-ca/strings.xml
index 3892888..b56b1a8 100644
--- a/ui/res/values-ca/strings.xml
+++ b/ui/res/values-ca/strings.xml
@@ -44,7 +44,7 @@
     <string name="cancel_running_download" msgid="5232704030969221112">"Cancel·la"</string>
     <string name="retry_download" msgid="7617100787922717912">"Torna-ho a provar"</string>
     <string name="start_now_download" msgid="1564642872809509681">"Comença ara"</string>
-    <string name="deselect_all" msgid="6348198946254776764">"Anul·la la selecció de tot"</string>
+    <string name="deselect_all" msgid="6348198946254776764">"Desselecciona-ho tot"</string>
     <string name="select_all" msgid="634074918366265804">"Selecciona-ho tot"</string>
     <string name="selected_count" msgid="2101564570019753277">"S\'han seleccionat <xliff:g id="NUMBER">%1$d</xliff:g> de <xliff:g id="TOTAL">%2$d</xliff:g>"</string>
     <string name="download_share_dialog" msgid="3355867339806448955">"Compart. mitjançant"</string>
diff --git a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java
index 41d7187..5406074 100644
--- a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java
+++ b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java
@@ -221,7 +221,7 @@
                     builder.setMessage(R.string.dialog_file_already_exists);
                     break;
                 case DownloadManager.ERROR_INSUFFICIENT_SPACE:
-                    builder.setMessage(R.string.dialog_insufficient_space_on_external);
+                    builder.setMessage(R.string.dialog_insufficient_space_on_cache);
                     break;
                 case DownloadManager.ERROR_DEVICE_NOT_FOUND:
                     builder.setMessage(R.string.dialog_media_not_found);
