summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Android.bp52
-rw-r--r--Android.mk19
-rw-r--r--AndroidManifest.xml1
-rw-r--r--OWNERS1
-rw-r--r--res/values-af/strings.xml7
-rw-r--r--res/values-am/strings.xml7
-rw-r--r--res/values-ar/strings.xml7
-rw-r--r--res/values-as/strings.xml7
-rw-r--r--res/values-az/strings.xml7
-rw-r--r--res/values-b+sr+Latn/strings.xml7
-rw-r--r--res/values-be/strings.xml7
-rw-r--r--res/values-bg/strings.xml7
-rw-r--r--res/values-bn/strings.xml7
-rw-r--r--res/values-bs/strings.xml7
-rw-r--r--res/values-ca/strings.xml7
-rw-r--r--res/values-cs/strings.xml7
-rw-r--r--res/values-da/strings.xml7
-rw-r--r--res/values-de/strings.xml7
-rw-r--r--res/values-el/strings.xml7
-rw-r--r--res/values-en-rAU/strings.xml7
-rw-r--r--res/values-en-rCA/strings.xml7
-rw-r--r--res/values-en-rGB/strings.xml7
-rw-r--r--res/values-en-rIN/strings.xml7
-rw-r--r--res/values-en-rXC/strings.xml7
-rw-r--r--res/values-es-rUS/strings.xml7
-rw-r--r--res/values-es/strings.xml7
-rw-r--r--res/values-et/strings.xml7
-rw-r--r--res/values-eu/strings.xml7
-rw-r--r--res/values-fa/strings.xml7
-rw-r--r--res/values-fi/strings.xml7
-rw-r--r--res/values-fr-rCA/strings.xml7
-rw-r--r--res/values-fr/strings.xml7
-rw-r--r--res/values-gl/strings.xml7
-rw-r--r--res/values-gu/strings.xml7
-rw-r--r--res/values-hi/strings.xml7
-rw-r--r--res/values-hr/strings.xml7
-rw-r--r--res/values-hu/strings.xml7
-rw-r--r--res/values-hy/strings.xml7
-rw-r--r--res/values-in/strings.xml7
-rw-r--r--res/values-is/strings.xml7
-rw-r--r--res/values-it/strings.xml7
-rw-r--r--res/values-iw/strings.xml7
-rw-r--r--res/values-ja/strings.xml7
-rw-r--r--res/values-ka/strings.xml7
-rw-r--r--res/values-kk/strings.xml7
-rw-r--r--res/values-km/strings.xml7
-rw-r--r--res/values-kn/strings.xml7
-rw-r--r--res/values-ko/strings.xml7
-rw-r--r--res/values-ky/strings.xml7
-rw-r--r--res/values-lo/strings.xml7
-rw-r--r--res/values-lt/strings.xml7
-rw-r--r--res/values-lv/strings.xml7
-rw-r--r--res/values-mk/strings.xml7
-rw-r--r--res/values-ml/strings.xml7
-rw-r--r--res/values-mn/strings.xml7
-rw-r--r--res/values-mr/strings.xml11
-rw-r--r--res/values-ms/strings.xml7
-rw-r--r--res/values-my/strings.xml7
-rw-r--r--res/values-nb/strings.xml7
-rw-r--r--res/values-ne/strings.xml7
-rw-r--r--res/values-nl/strings.xml7
-rw-r--r--res/values-or/strings.xml7
-rw-r--r--res/values-pa/strings.xml7
-rw-r--r--res/values-pl/strings.xml7
-rw-r--r--res/values-pt-rPT/strings.xml7
-rw-r--r--res/values-pt/strings.xml7
-rw-r--r--res/values-ro/strings.xml7
-rw-r--r--res/values-ru/strings.xml7
-rw-r--r--res/values-si/strings.xml7
-rw-r--r--res/values-sk/strings.xml7
-rw-r--r--res/values-sl/strings.xml7
-rw-r--r--res/values-sq/strings.xml7
-rw-r--r--res/values-sr/strings.xml7
-rw-r--r--res/values-sv/strings.xml7
-rw-r--r--res/values-sw/strings.xml7
-rw-r--r--res/values-ta/strings.xml7
-rw-r--r--res/values-te/strings.xml7
-rw-r--r--res/values-th/strings.xml7
-rw-r--r--res/values-tl/strings.xml7
-rw-r--r--res/values-tr/strings.xml7
-rw-r--r--res/values-uk/strings.xml7
-rw-r--r--res/values-ur/strings.xml7
-rw-r--r--res/values-uz/strings.xml7
-rw-r--r--res/values-vi/strings.xml11
-rw-r--r--res/values-zh-rCN/strings.xml7
-rw-r--r--res/values-zh-rHK/strings.xml7
-rw-r--r--res/values-zh-rTW/strings.xml7
-rw-r--r--res/values-zu/strings.xml7
-rw-r--r--res/values/strings.xml17
-rw-r--r--src/com/android/providers/downloads/DownloadInfo.java7
-rw-r--r--src/com/android/providers/downloads/DownloadJobService.java1
-rw-r--r--src/com/android/providers/downloads/DownloadProvider.java854
-rw-r--r--src/com/android/providers/downloads/DownloadReceiver.java49
-rw-r--r--src/com/android/providers/downloads/DownloadScanner.java12
-rw-r--r--src/com/android/providers/downloads/DownloadStorageProvider.java608
-rw-r--r--src/com/android/providers/downloads/DownloadThread.java7
-rw-r--r--src/com/android/providers/downloads/Helpers.java347
-rw-r--r--src/com/android/providers/downloads/MediaStoreDownloadsHelper.java54
-rw-r--r--src/com/android/providers/downloads/OpenHelper.java57
-rw-r--r--src/com/android/providers/downloads/RealSystemFacade.java6
-rw-r--r--src/com/android/providers/downloads/SystemFacade.java6
-rw-r--r--tests/Android.bp41
-rw-r--r--tests/Android.mk22
-rw-r--r--tests/AndroidTest.xml2
-rw-r--r--tests/permission/Android.bp34
-rw-r--r--tests/permission/Android.mk16
-rw-r--r--tests/permission/AndroidTest.xml28
-rw-r--r--tests/public_api_access/Android.bp33
-rw-r--r--tests/public_api_access/Android.mk16
-rw-r--r--tests/public_api_access/AndroidTest.xml28
-rw-r--r--tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java43
-rw-r--r--tests/src/com/android/providers/downloads/AbstractPublicApiTest.java8
-rw-r--r--tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java2
-rw-r--r--tests/src/com/android/providers/downloads/FakeInputStream.java5
-rw-r--r--tests/src/com/android/providers/downloads/FakeSystemFacade.java10
-rw-r--r--tests/src/com/android/providers/downloads/HelpersTest.java32
-rw-r--r--tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java18
-rw-r--r--ui/Android.bp35
-rw-r--r--ui/Android.mk17
-rw-r--r--ui/res/values-vi/strings.xml2
-rw-r--r--ui/src/com/android/providers/downloads/ui/TrampolineActivity.java16
121 files changed, 2008 insertions, 1094 deletions
diff --git a/Android.bp b/Android.bp
new file mode 100644
index 00000000..78c80722
--- /dev/null
+++ b/Android.bp
@@ -0,0 +1,52 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_app {
+ name: "DownloadProvider",
+
+ manifest: "AndroidManifest.xml",
+
+ srcs: [
+ "src/**/*.java",
+ ],
+
+ resource_dirs: [
+ "res",
+ ],
+
+ platform_apis: true,
+
+ certificate: "media",
+
+ privileged: true,
+
+ static_libs: ["guava"],
+
+ jacoco: {
+ include_filter: ["com.android.providers.downloads.*"],
+ },
+}
+
+filegroup {
+ name: "download_provider-files",
+
+ srcs: [
+ "src/com/android/providers/downloads/Constants.java",
+ "src/com/android/providers/downloads/DownloadDrmHelper.java",
+ "src/com/android/providers/downloads/OpenHelper.java",
+ "src/com/android/providers/downloads/RawDocumentsHelper.java",
+ "src/com/android/providers/downloads/MediaStoreDownloadsHelper.java",
+ ],
+}
diff --git a/Android.mk b/Android.mk
deleted file mode 100644
index 8d3c7b4a..00000000
--- a/Android.mk
+++ /dev/null
@@ -1,19 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_PACKAGE_NAME := DownloadProvider
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_CERTIFICATE := media
-LOCAL_PRIVILEGED_MODULE := true
-LOCAL_STATIC_JAVA_LIBRARIES := guava
-
-LOCAL_JACK_COVERAGE_INCLUDE_FILTER := com.android.providers.downloads.*
-
-include $(BUILD_PACKAGE)
-
-# build UI + tests
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 067bc937..45e2888a 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -56,6 +56,7 @@
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
+ <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
<application android:process="android.process.media"
android:label="@string/app_label"
diff --git a/OWNERS b/OWNERS
index d194753d..81344370 100644
--- a/OWNERS
+++ b/OWNERS
@@ -1 +1,2 @@
jsharkey@android.com
+sudheersai@google.com
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index f3fcc053..13131739 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Laat die program toe om toegang te kry tot die aflaaibestuurder se gevorderde instellings. Kwaadwillige programme kan dit gebruik om aflaaie te ontwrig en toegang tot private inligting te kry."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Stuur aflaaikennisgewings."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Laat die program toe om kennisgewings te stuur oor voltooide aflaaie. Kwaadwillige programme kan dit gebruik om ander programme wat lêers aflaai, te verwar."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Sien alle aflaaie na USB-berging"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Sien alle aflaaie op SD-kaart"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Laat die program toe om alle aflaaie na die SD-kaart te sien, ongeag deur watter program hulle afgelaai is."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserveer ruimte in die aflaaikas"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Laat die program toe om lêers af te laai na die aflaaikas, wat nie outomaties uitgevee kan word as die aflaaibestuurder meer spasie benodig nie."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"laai lêers af sonder kennisgewing"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Aflaaiselgrootte vereis Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Laat wag op agtergrond."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Aflaaisel te groot vir bedryfsnetwerk"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Jy moet Wi-Fi gebruik om hierdie <xliff:g id="SIZE">%s </xliff:g>-aflaaisel te voltooi. \n\nRaak <xliff:g id="QUEUE_TEXT">%s </xliff:g> om hierdie aflaai te begin die volgende keer as jy gekoppel is aan \'n Wi-Fi-netwerk."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Jy moet Wi-Fi gebruik om hierdie <xliff:g id="SIZE">%1$s </xliff:g>-aflaaisel te voltooi. \n\nRaak <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> om hierdie aflaai te begin die volgende keer as jy gekoppel is aan \'n Wi-Fi-netwerk."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Plaas in waglys om later af te laai?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"As jy nou hierdie <xliff:g id="SIZE">%s </xliff:g>-aflaaisel gaan aflaai, kan dit jou batterylewe verkort en/of lei tot oormatige gebruik van jou selfoon se dataverbinding, wat kan lei tot kostes deur jou selfoondiensverskaffer, afhangende van jou dataplan.\n\n Raak <xliff:g id="QUEUE_TEXT">%s</xliff:g> om hierdie aflaaisel te begin die volgende keer wat jy gekoppel is aan \'n Wi-Fi-netwerk."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"As jy nou hierdie <xliff:g id="SIZE">%1$s </xliff:g>-aflaaisel gaan aflaai, kan dit jou batterylewe verkort en/of lei tot oormatige gebruik van jou selfoon se dataverbinding, wat kan lei tot kostes deur jou selfoondiensverskaffer, afhangende van jou dataplan.\n\n Raak <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> om hierdie aflaaisel te begin die volgende keer wat jy gekoppel is aan \'n Wi-Fi-netwerk."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Waglys"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Kanselleer"</string>
<string name="button_start_now" msgid="792123674007840864">"Begin nou"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 3715986c..24a8fe10 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"መተግበሪያው የአውርድ አስተዳዳሪን የላቁ ተግባራት እንዲደርስባቸው ይፈቅድለታል:: ተንኮል አዘል መተግበሪያዎች አውርዶችን ለማስተጓጎል እና የግል መረጃን ለመድረስ ሊጠቀሙበት ይችላሉ::"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"አውርድ ማሳወቂያዎች ላክ።"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"መተግበሪያው ስለተጠናቀቁ አውርዶች ማሳወቂያዎችን እንዲልክ ይፈቅድለታል:: ተንኮል አዘል መተግበሪያዎች ሌሎች ፋይሎችን የሚያወርዱ መተግበሪያዎችን ግራ ለማጋባት ይህን ሊጠቀሙበት ይችላሉ::"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"ሁሉንም አውርዶች ወደ USB ማከማቻእይ"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"ሁሉንም አውርዶች ለSD ካርድ አሳይ"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"የትኛው መተግበሪያ እንዳወረዳቸው ከግምት ሳይገባ መተግበሪያው ወደ SD ካርድ የተደረጉ ሁሉንም አውርዶች እንዲያይ ይፈቅድለታል::"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"በአውርድ መሸጎጫ ባዶ ቦታ አስቀምጥ"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"መተግበሪያው የአውርድ አስተዳዳሪ ተጨማሪ ባዶ ቦታ ሲፈልግ በራስ ሰር መሰረዝ የማይችሉትን ወደ አውርድ መሸጎጫ ፋይሎች ለማውረድ ይፈቅዳል።"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ያለማሳወቂያ ፋይሎች አውርድ"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"የአውርድ መጠን Wi-Fi ይጠይቃል"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"በዳራ ውስጥ ለአፍታ ቆሟል"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ለትእምርተ ከዋኝ አውታረ መረብ በጣም ብዙ አውርድ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ይህን <xliff:g id="SIZE">%s </xliff:g> አውርድ ለማጠናቀቅ Wi-Fi መጠቀም አለብህ:: ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ<xliff:g id="QUEUE_TEXT">%s </xliff:g>፡፡"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ይህን <xliff:g id="SIZE">%1$s </xliff:g> አውርድ ለማጠናቀቅ Wi-Fi መጠቀም አለብህ:: ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>፡፡"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ለኋላ አውርድ ወረፋ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ይህን <xliff:g id="SIZE">%s </xliff:g> አውርድ አሁን መጀመር የባትሪህን ዕድሜ ሊያሳጥረው ይችል ይሆናል እና/ወይም የአንተን ተንቀሳቃሽ ውሂብ ግንኙነት ከልክ ያለፈ አጠቃቀም ሊያስከስት ይችል ይሆናል፣ ይህም የአንተ ተንቀሳቃሽ ከዋኝ በአንተ ውሂብ ክፍያ ዕቅድ ስምምነት መሰረት ተጨማሪ ክፍያ እንድትከፍል ሊጠይቅህ ይዳርገው ይሆናል፡፡ ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ<xliff:g id="QUEUE_TEXT">%s</xliff:g>፡፡"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ይህን <xliff:g id="SIZE">%1$s </xliff:g> አውርድ አሁን መጀመር የባትሪህን ዕድሜ ሊያሳጥረው ይችል ይሆናል እና/ወይም የአንተን ተንቀሳቃሽ ውሂብ ግንኙነት ከልክ ያለፈ አጠቃቀም ሊያስከስት ይችል ይሆናል፣ ይህም የአንተ ተንቀሳቃሽ ከዋኝ በአንተ ውሂብ ክፍያ ዕቅድ ስምምነት መሰረት ተጨማሪ ክፍያ እንድትከፍል ሊጠይቅህ ይዳርገው ይሆናል፡፡ ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>፡፡"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ወረፋ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ይቅር"</string>
<string name="button_start_now" msgid="792123674007840864">"አሁን ጀምር"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 19867c40..b9734d5d 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"للسماح للتطبيق بالدخول إلى وظائف إدارة التنزيل المتقدمة. يمكن للتطبيقات الضارة استخدام هذا لتعطيل التنزيلات والدخول إلى المعلومات الخاصة."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"إرسال اشعارات بالتنزيل."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"للسماح للتطبيق بإرسال اشعارات عن التنزيلات المكتملة. يمكن للتطبيقات الضارة استخدام هذا لإرباك التطبيقات الأخرى التي تنزل الملفات."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"‏عرض جميع التنزيلات إلى وحدة تخزين USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"‏مشاهدة جميع التنزيلات على بطاقة SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"‏للسماح للتطبيق بمشاهدة جميع التنزيلات على بطاقة SD، بغض النظر عن التطبيق الذي نزلها."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"الاحتفاظ بمساحة في ذاكرة التخزين المؤقت للتنزيل"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"للسماح للتطبيق بتنزيل الملفات إلى ذاكرة التخزين المؤقت للتنزيل والتي لا يمكن حذفها تلقائيًا عندما تكون إدارة التنزيل في حاجة إلى مساحة أكبر."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"تنزيل الملفات بدون تنبيه"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"‏يتطلب حجم التنزيل شبكة Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"متوقف مؤقتًا في الخلفية."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"حجم التنزيل كبير جدًا بالنسبة إلى مشغّل الشبكة"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"‏يجب استخدام Wi-Fi لإكمال هذا التنزيل البالغ حجمه <xliff:g id="SIZE">%s </xliff:g> . \n\nالمس <xliff:g id="QUEUE_TEXT">%s </xliff:g> لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"‏يجب استخدام Wi-Fi لإكمال هذا التنزيل البالغ حجمه <xliff:g id="SIZE">%1$s </xliff:g> . \n\nالمس <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"هل تريد وضعه في قائمة الانتظار للتنزيل لاحقًا؟"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"‏قد يؤدي بدء هذا التنزيل البالغ حجمه <xliff:g id="SIZE">%s </xliff:g> الآن إلى إنقاص عمر البطارية و/أو ينتج عنه استخدام زائد لاتصال بيانات الجوال، وهو ما يمكنه أن يؤدي إلى تحصيل مشغّل شبكة الجوال بعض الرسوم بناء على خطة البيانات الخاصة بك.\n\n المس <xliff:g id="QUEUE_TEXT">%s</xliff:g> لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"‏قد يؤدي بدء هذا التنزيل البالغ حجمه <xliff:g id="SIZE">%1$s </xliff:g> الآن إلى إنقاص عمر البطارية و/أو ينتج عنه استخدام زائد لاتصال بيانات الجوال، وهو ما يمكنه أن يؤدي إلى تحصيل مشغّل شبكة الجوال بعض الرسوم بناء على خطة البيانات الخاصة بك.\n\n المس <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"قائمة انتظار"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"إلغاء"</string>
<string name="button_start_now" msgid="792123674007840864">"البدء الآن"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 3f42c2b2..6d4f001b 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"এপটোক ডাউনল’ড মেনেজাৰৰ উচ্চখাপৰ ফাংশ্বনত প্ৰৱেশ কৰিবলৈ অনুমতি দিয়ে। ক্ষতিকাৰক এপসমূহে এই সুবিধাটো ব্যৱহাৰ কৰি ডাউনল’ডত বিঘিনি জন্মোৱাৰ লগতে ব্যক্তিগত তথ্য চাব পাৰিব পাৰে।"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ডাউনল’ড জাননী প্ৰেৰণ কৰিব পাৰে।"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"সম্পূৰ্ণ হোৱা ডাউনল\'ডৰ বিষয়ে জাননী প্ৰেৰণ কৰিবলৈ এপটোক অনুমতি দিয়ে। ক্ষতিকাৰক এপসমূহে এই সুবিধাটো ফাইল ডাউনল\'ডকাৰী অইন এপক বিভ্ৰান্ত কৰিবলৈ ব্যৱহাৰ কৰিব পাৰে।"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"ইউএছবি সঞ্চয়াগাৰত কৰা সকলো ডাউনল’ড চাব পাৰে"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"এছডি কাৰ্ডত কৰা সকলো ডাউনল’ড চাব পাৰে"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"এপটোক এছডি কাৰ্ডত কৰা সকলো ডাউনল’ড চাবলৈ অনুমতি দিয়ে, সেইবোৰ যি এপেই ডাউনল’ড নকৰক লাগে।"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ডাউন\'লড কেশ্বত ঠাই সংৰক্ষিত কৰিব পাৰে"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"এপটোক ডাউনল’ড কেশ্বত ফাইল ডাউনল’ড কৰিবলৈ অনুমতি দিয়ে, যাক ডাউনল’ড মেনেজাৰক অধিক খালী ঠাই প্ৰয়োজন হ\'লে স্বয়ংক্ৰিয়ভাৱে মচি পেলাব নোৱাৰি।"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"জাননী নিদিয়াকৈ ফাইল ডাউনল’ড কৰিব পাৰে"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"এই আকাৰৰ ডাউনল\'ডৰ বাবে ৱাই-ফাইৰ প্ৰয়োজন।"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"নেপথ্যত পজ কৰক।"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"অপাৰেটৰ নেটৱৰ্কৰ বাবে ডাউনল\'ডটো অতি ডাঙৰ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"আপুনি এই <xliff:g id="SIZE">%s </xliff:g> আকাৰৰ ডাউনল’ড কৰিবলৈ ৱাই-ফাই ব্যৱহাৰ কৰিবই লাগিব।\n\nআপুনি পিছত ৱাই-ফাইৰ সৈতে সংযুক্ত হ\'লে এই ডাউনল’ডটো আৰম্ভ কৰিবলৈ <xliff:g id="QUEUE_TEXT">%s </xliff:g>ত স্পৰ্শ কৰক।"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"আপুনি এই <xliff:g id="SIZE">%1$s </xliff:g> আকাৰৰ ডাউনল’ড কৰিবলৈ ৱাই-ফাই ব্যৱহাৰ কৰিবই লাগিব।\n\nআপুনি পিছত ৱাই-ফাইৰ সৈতে সংযুক্ত হ\'লে এই ডাউনল’ডটো আৰম্ভ কৰিবলৈ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>ত স্পৰ্শ কৰক।"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"পিছত ডাউনল’ড কৰিবলৈ লানি পাতি ৰাখিবনে?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"এই <xliff:g id="SIZE">%s </xliff:g> আকাৰৰ ডাউনল’ডটো আৰম্ভ কৰিলে বেটাৰিৰ জীৱনকাল হ্ৰাস হ\'ব পাৰে আৰু/বা অত্যধিক ম’বাইল ডেটা ব্যৱহাৰ হ’ব পাৰে, যাৰ ফলত আপোনাৰ ডেটা আঁচনি অনুসৰি মাচুল ভৰিবলগীয়া হ’ব পাৰে।\n\nআপুনি পিছত ৱাই-ফাইৰ সৈতে সংযুক্ত হ’লে এই ডাউনল\'ডটো আৰম্ভ কৰিবলৈ <xliff:g id="QUEUE_TEXT">%s</xliff:g>ত স্পৰ্শ কৰক।"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"এই <xliff:g id="SIZE">%1$s </xliff:g> আকাৰৰ ডাউনল’ডটো আৰম্ভ কৰিলে বেটাৰিৰ জীৱনকাল হ্ৰাস হ\'ব পাৰে আৰু/বা অত্যধিক ম’বাইল ডেটা ব্যৱহাৰ হ’ব পাৰে, যাৰ ফলত আপোনাৰ ডেটা আঁচনি অনুসৰি মাচুল ভৰিবলগীয়া হ’ব পাৰে।\n\nআপুনি পিছত ৱাই-ফাইৰ সৈতে সংযুক্ত হ’লে এই ডাউনল\'ডটো আৰম্ভ কৰিবলৈ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>ত স্পৰ্শ কৰক।"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"লানি পাতি ৰাখক"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"বাতিল কৰক"</string>
<string name="button_start_now" msgid="792123674007840864">"এতিয়া আৰম্ভ কৰক"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 48087ac6..9d27ab43 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Tətbiqə endirmə idarəçisinin inkişaf etmiş funksiyalarına daxil olmaq üçün imkan verir. Zərərli tətbiqlər bunu endirmələri pozmaq və özəl məlumatlara daxil olmaq üçün istifadə edə bilər."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Endirmə məlumatı göndər."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Tətbiqə tamamlanmış endirmələr haqqında məlumat göndərməyə imkan verir. Zərərli tətbiqlər bunu faylları endirən tətbiqləri çaşdırmaq üçün istifadə edə bilər."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB yaddaşına bütün endirmələrə baxın"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD karta endirmələrə baxın"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Tətbiqə hansı tətbiqin endirdiyindən asılı olmayaraq yaddaş kartındakı endirilən faylları görmə imkanı verir."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Endirmə keşində ehtiyat yer mühafizə et"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Tətbiqə endirmə idarəçisinə daha çox yer lazım olanda başqa faylları endirmə vasitəsi ilə avtomatik olarak silinməyən keşlər endirməsinə imkan verir."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"xəbərdarlıq etmədən faylları endir"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Endirmə həcmi Wi-Fi tələb edir."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Arxa fonda dayandırıldı."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Endirmə operator şəbəkə üçün çox böyükdür"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Bu <xliff:g id="SIZE">%s </xliff:g> endirməni başa çatdırmaq üçün Wi-Fi istifadə etməlisiniz. \n \n Növbəti dəfə WiFi şəbəkəsinə qoşulanda bu endirməni başlatmaq üçün <xliff:g id="QUEUE_TEXT">%s </xliff:g> toxunun."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Bu <xliff:g id="SIZE">%1$s </xliff:g> endirməni başa çatdırmaq üçün Wi-Fi istifadə etməlisiniz. \n \n Növbəti dəfə WiFi şəbəkəsinə qoşulanda bu endirməni başlatmaq üçün <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> toxunun."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Daha sonra endirmək üçün növbəyə salmaq istəyirsiniz?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Bu <xliff:g id="SIZE">%s </xliff:g> böyüklükdəki faylı endirməyə başlamaq batareyanızı azalda bilər/və ya mobil data əlaqənizin böyük bir hissəsinin işlədilməsinə gətirib çixara bilər, bu da sizin data planınınızdan asılı olaraq mobil operatorunuz tərəfindən xərcə səbəb ola bilər. \n \n Növbəti dəfə WiFi şəbəkəsinə qoşulanda bu endirməyə başlamaq üçün <xliff:g id="QUEUE_TEXT">%s</xliff:g> toxunun."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Bu <xliff:g id="SIZE">%1$s </xliff:g> böyüklükdəki faylı endirməyə başlamaq batareyanızı azalda bilər/və ya mobil data əlaqənizin böyük bir hissəsinin işlədilməsinə gətirib çixara bilər, bu da sizin data planınınızdan asılı olaraq mobil operatorunuz tərəfindən xərcə səbəb ola bilər. \n \n Növbəti dəfə WiFi şəbəkəsinə qoşulanda bu endirməyə başlamaq üçün <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> toxunun."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Növbəyə sal"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Ləğv et"</string>
<string name="button_start_now" msgid="792123674007840864">"İndi başlat"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index ba460c7c..242fe461 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Omogućava aplikaciji da pristupa naprednim funkcijama menadžera preuzimanja. Zlonamerne aplikacije mogu pomoću toga da ometaju preuzimanja i pristupaju privatnim informacijama."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Šaljite obaveštenja o preuzimanjima."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Omogućava aplikaciji da šalje obaveštenja o dovršenim preuzimanjima. Zlonamerne aplikacije mogu pomoću toga da zbune ostale aplikacije koje preuzimaju datoteke."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Pogledajte sva preuzimanja u USB memoriju"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Sva preuzimanja na SD karticu"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Omogućava aplikaciji da vidi sve stavke preuzete na SD karticu, bez obzira na to koja aplikacija ih je preuzela."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezerviši prostor u kešu za preuzimanje"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Omogućava aplikaciji da preuzima datoteke u keš za preuzimanje koji ne može automatski da se izbriše kada je menadžeru preuzimanja potrebno još prostora."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"preuzmi datoteke bez obaveštenja"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Veličina stavke zahteva Wi-Fi."</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 da koristite Wi-Fi da biste dovršili ovo preuzimanje od <xliff:g id="SIZE">%s </xliff:g>. \n\nDodirnite <xliff:g id="QUEUE_TEXT">%s </xliff:g> da biste započeli ovo preuzimanje kada se sledeći put povežete sa Wi-Fi mrežom."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Morate da koristite Wi-Fi da biste dovršili ovo preuzimanje od <xliff:g id="SIZE">%1$s </xliff:g>. \n\nDodirnite <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> da biste započeli ovo preuzimanje kada se sledeći put povežete sa Wi-Fi mrežom."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Želite li da stavite u red za buduće preuzimanje?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ovim preuzimanjem od <xliff:g id="SIZE">%s </xliff:g> možete da skratite vek trajanja baterije i/ili preterano koristite mobilnu vezu za prenos podataka, što može da dovede do troškova kod mobilnog operatera shodno tarifnom paketu.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%s</xliff:g> da biste započeli ovo preuzimanje kada se ponovo povežete sa Wi-Fi mrežom."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ovim preuzimanjem od <xliff:g id="SIZE">%1$s </xliff:g> možete da skratite vek trajanja baterije i/ili preterano koristite mobilnu vezu za prenos podataka, što može da dovede do troškova kod mobilnog operatera shodno tarifnom paketu.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> da biste započeli ovo preuzimanje kada se ponovo povežete sa Wi-Fi mrežom."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Red"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Otkaži"</string>
<string name="button_start_now" msgid="792123674007840864">"Započni odmah"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 19286498..8b05c8ee 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Дазваляе прыкладанню атрымлiваць доступ да пашыраных функцый менеджэра спампавання. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб сарваць загрузку і закрыць доступ да прыватнай інфармацыі."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Адпраўляць апавяшчэнні аб спампоўцы."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Дазваляе прыкладанню адпраўляць апавяшчэннi аб завершаных спампаваннях. Шкоднасныя прыкладаннi могуць выкарыстоўваць гэта, каб негатыўна паўсплываць на іншыя прыкладаннi для спампавання файлаў."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Прагледзець усе спампоўкі на USB-назапашвальнiк"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Прагледзець усе спампоўкі на SD-карце"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Дазваляе прыкладанюе бачыць усе спампоўкі на SD-карце, незалежна ад таго, праз якое прыкладанне яны былi спампаваны."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Зарэзерваваць месца ў кэшы спампоўкі"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Дазваляе прыкладанню спампоўваць файлы ў кэш-памяць, якую нельга ачысцiць аўтаматычна, калі менеджэру спампавання спатрэбіцца больш месца на дыске."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"спампоўваць файлы без апавяшчэння"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Для спампавання патрабуецца сетка Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Прыпынена ў фон. рэжыме"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Спампоўка занадта вялікая для сеткі аператара"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Каб завяршыць спампаванне файла памерам <xliff:g id="SIZE">%s </xliff:g>, патрабуецца падлучэнне да сеткi Wi-Fi. \n\nДакранiцеся да надпiсу <xliff:g id="QUEUE_TEXT">%s </xliff:g>, каб пачаць спампаванне, калi будзе даступна сетка Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Каб завяршыць спампаванне файла памерам <xliff:g id="SIZE">%1$s </xliff:g>, патрабуецца падлучэнне да сеткi Wi-Fi. \n\nДакранiцеся да надпiсу <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, каб пачаць спампаванне, калi будзе даступна сетка Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Стаць у чаргу, каб спампаваць пазней?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Спампаванне файла памерам <xliff:g id="SIZE">%s </xliff:g> можа скараціць тэрмін службы акумулятара або прывесці да празмернага выкарыстання мабільнага падлучэння дадзеных, за што вашым мабiльным аператарам можа спаганяцца дадатковая плата.\n\nДакранiцеся да надпiсу <xliff:g id="QUEUE_TEXT">%s</xliff:g>, каб пачаць спампаванне, калi з\'явiцца падлучэнне да сеткi Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Спампаванне файла памерам <xliff:g id="SIZE">%1$s </xliff:g> можа скараціць тэрмін службы акумулятара або прывесці да празмернага выкарыстання мабільнага падлучэння дадзеных, за што вашым мабiльным аператарам можа спаганяцца дадатковая плата.\n\nДакранiцеся да надпiсу <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, каб пачаць спампаванне, калi з\'явiцца падлучэнне да сеткi Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Чарга"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Скасаваць"</string>
<string name="button_start_now" msgid="792123674007840864">"Пачаць прама цяпер"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 48deebc5..ecdb900a 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Разрешава на приложението достъп до разширените функции на мениджъра на изтеглянията. Злонамерените приложения могат да използват това за прекъсване на изтеглянията и за достъп до поверителна информация."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Изпращане на известия за изтегляне."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Разрешава на приложението да изпраща известия за завършени изтегляния. Злонамерените приложения могат да използват това, за да объркат други приложения, изтеглящи файлове."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Всички изтеглени в USB хранилище"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Вижте всичко изтеглено на SD картата"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Разрешава на приложението да вижда всичко изтеглено на SD картата, независимо кое приложение го е изтеглило."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Запазване на място в кеша за изтегляне"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Разрешава на приложението да изтегля файлове в кеша, които не могат да се изтрият автоматично, когато мениджърът на изтеглянията се нуждае от още място."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"изтегляне на файловете без известяване"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Изисква се Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"На пауза на заден план."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Изтеглянето е твърде голямо за операторската мрежа"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Трябва да използвате Wi-Fi, за да завършите това изтегляне от <xliff:g id="SIZE">%s </xliff:g>. \n\nДокоснете „<xliff:g id="QUEUE_TEXT">%s </xliff:g>“, за да започнете изтеглянето при следващото свързване с Wi-Fi мрежа."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Трябва да използвате Wi-Fi, за да завършите това изтегляне от <xliff:g id="SIZE">%1$s </xliff:g>. \n\nДокоснете „<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>“, за да започнете изтеглянето при следващото свързване с Wi-Fi мрежа."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Да се постави ли на опашка за изтегляне по-късно?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Изтеглянето на <xliff:g id="SIZE">%s </xliff:g> може да изхаби батерията и/или да причини прекомерно използване на мобилни данни и таксуване от оператора според плана ви.\n\n Докоснете „<xliff:g id="QUEUE_TEXT">%s</xliff:g>“ за изтегляне при следващо свързване с Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Изтеглянето на <xliff:g id="SIZE">%1$s </xliff:g> може да изхаби батерията и/или да причини прекомерно използване на мобилни данни и таксуване от оператора според плана ви.\n\n Докоснете „<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>“ за изтегляне при следващо свързване с Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Опашка"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Отказ"</string>
<string name="button_start_now" msgid="792123674007840864">"Стартиране сега"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index d931e79e..3981ef64 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"অ্যাপ্লিকেশানটিকে ডাউনলোড ম্যানেজারের উন্নত কার্যকারিতাগুলি অ্যাক্সেস করার অনুমতি দেয়। ক্ষতিকারক অ্যাপ্লিকেশানগুলি ডাউনলোড ব্যাহত এবং ব্যক্তিগত তথ্য অ্যাক্সেস করার জন্য এটি ব্যবহার করতে পারে।"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ডাউনলোডের বিজ্ঞপ্তিগুলি পাঠান।"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"অ্যাপ্লিকেশানটিকে সম্পূর্ণ হওয়া ডাউনলোডগুলির জন্য বিজ্ঞপ্তি পাঠানোর অনুমতি দেয়। অন্য যে অ্যাপ্লিকেশানগুলি ফাইল ডাউনলোড করে সেগুলিকে বিভ্রান্ত করতে ক্ষতিকারক অ্যাপ্লিকেশানগুলি এটি ব্যবহার করতে পারে।"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB সঞ্চয়স্থানের সব ডাউনলোড দেখুন"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD কার্ডের সব ডাউনলোড দেখুন"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"অ্যাপ্লিকেশানটিকে কোন অ্যাপ্লিকেশন কি ডাউনলোড করেছে তা নির্বেশেষে SD কার্ডে সমস্ত ডাউনলোড দেখতে অনুমতি দেয়।"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ডাউনলোড ক্যাশেতে জায়গা সংরক্ষিত রাখুন"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"অ্যাপ্লিকেশনটিকে ডাউনলোড ক্যাশে থেকে ফাইলগুলি ডাউনলোড করার অনুমতি দেয়, যখন ডাউনলোড ম্যানেজার আরও বেশি জায়গা চাইবে তখন ডাউনলোড ক্যাশে অটোমেটিক মোছা যাবে না।"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"বিজ্ঞপ্তি ছাড়াই ফাইল ডাউনলোড করুন"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ডাউনলোড বড় হওয়ায় ওয়াই-ফাই লাগবে।"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"পশ্চাদপটে বিরাম দেওয়া আছে।"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"অপারেটর নেটওয়ার্কের জন্য ডাউনলোড অত্যন্ত বড়"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"এই <xliff:g id="SIZE">%s </xliff:g> ডাউনলোড সম্পূর্ণ করতে আপনাকে অবশ্যই ওয়াই-ফাই ব্যবহার করতে হবে।\n\nআপনি পরবর্তীতে যখন ওয়াই-ফাই নেটওয়ার্কে সংযুক্ত হবেন তখন এই ডাউনলোড শুরু করতে <xliff:g id="QUEUE_TEXT">%s </xliff:g> স্পর্শ করুন।"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"এই <xliff:g id="SIZE">%1$s </xliff:g> ডাউনলোড সম্পূর্ণ করতে আপনাকে অবশ্যই ওয়াই-ফাই ব্যবহার করতে হবে।\n\nআপনি পরবর্তীতে যখন ওয়াই-ফাই নেটওয়ার্কে সংযুক্ত হবেন তখন এই ডাউনলোড শুরু করতে <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> স্পর্শ করুন।"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"পরে ডাউনলোডের জন্য সারিবদ্ধ করবেন?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"এই <xliff:g id="SIZE">%s </xliff:g> ডাউনলোড শুরু করলে আপনার বেশি ব্যাটারি খরচ হতে পারে এবং/অথবা আপনার মোবাইল ডেটা মাত্রাতিরিক্ত ব্যবহার হতে পারে, যার ফলে আপনার মোবাইল অপারেটর আপনার ডেটা প্ল্যানের উপর নির্ভর করে চার্জ করতে পারে।\n\n পরে কখনও Wi-Fi নেটওয়ার্কে সংযুক্ত হলে তখন এই ডাউনলোড শুরু করতে <xliff:g id="QUEUE_TEXT">%s</xliff:g> টাচ করুন।"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"এই <xliff:g id="SIZE">%1$s </xliff:g> ডাউনলোড শুরু করলে আপনার বেশি ব্যাটারি খরচ হতে পারে এবং/অথবা আপনার মোবাইল ডেটা মাত্রাতিরিক্ত ব্যবহার হতে পারে, যার ফলে আপনার মোবাইল অপারেটর আপনার ডেটা প্ল্যানের উপর নির্ভর করে চার্জ করতে পারে।\n\n পরে কখনও Wi-Fi নেটওয়ার্কে সংযুক্ত হলে তখন এই ডাউনলোড শুরু করতে <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> টাচ করুন।"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"সারি"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"বাতিল করুন"</string>
<string name="button_start_now" msgid="792123674007840864">"এখন শুরু করুন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 7b524055..146581f8 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Dopušta aplikaciji da pristupa naprednim funkcijama upravitelja za preuzimanja. Zlonamjerne aplikacije to mogu koristiti da poremete preuzimanja i pristupaju privatnim informacijama."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Šaljite obavještenja o preuzimanju."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Dopušta aplikaciji da šalje obavještenja o završenim ažuriranjima. Zlonamjerne aplikacije ovo mogu koristiti da zbune druge aplikacije koje preuzimaju fajlove."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Prikaži sva preuzimanja na USB pohranu"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Prikaži sva preuzimanja na SD karticu"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Dopušta aplikaciji da vidi sva preuzimanja na SD kartici, bez obzira na to koja ih je aplikacija izvršila."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezerviraj mjesto u keš memoriji preuzimanja"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Dopušta aplikaciji da preuzme fajlove u keš memoriju preuzimanja, koja se ne može automatski izbrisati kada upravitelju za preuzimanja treba više prostora."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"preuzimanje fajlova bez obavještenja"</string>
@@ -39,9 +36,9 @@
<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>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Morate koristiti WiFi kako biste dovršili ovo preuzimanje od <xliff:g id="SIZE">%1$s </xliff:g>. \n\nDodirnite <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> kako biste pokrenuli ovo preuzimanje kada se narednog puta povežete na WiFi mrežu."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Staviti na čekanje za preuzimanje kasnije?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Pokretanje ovog preuzimanja od <xliff:g id="SIZE">%s </xliff:g> sada može skratiti vijek trajanja baterije i/ili dovesti do prekomjernog korištenja mobilne veze za prenos podataka te se može desiti da vam operater naplati troškove ovisno o pretplati za prenos podataka koju imate.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%s</xliff:g> kako biste pokrenuli ovo preuzimanje kada se narednog puta povežete na WiFi mrežu."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Pokretanje ovog preuzimanja od <xliff:g id="SIZE">%1$s </xliff:g> sada može skratiti vijek trajanja baterije i/ili dovesti do prekomjernog korištenja mobilne veze za prenos podataka te se može desiti da vam operater naplati troškove ovisno o pretplati za prenos podataka koju imate.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> kako biste pokrenuli ovo preuzimanje kada se narednog puta povežete na WiFi mrežu."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Red čekanja"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Otkaži"</string>
<string name="button_start_now" msgid="792123674007840864">"Započni odmah"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index 8f6bf666..4ca5de70 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permet que l\'aplicació accedeixi a les funcions avançades del gestor de baixades. Les aplicacions malicioses poden fer-ho servir per interrompre les baixades i per accedir a informació privada."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Envia notificacions de baixades."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permet que l\'aplicació enviï notificacions sobre les baixades completades. Les aplicacions malicioses poden fer-ho servir per confondre altres aplicacions que baixen fitxers."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Mostra totes les baixades a l\'emmagatzematge USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Visualitza totes les baixades a la targeta SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permet que l\'aplicació vegi totes les baixades que s\'han fet a la targeta SD, sigui quina sigui l\'aplicació que les ha baixades."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserva espai a la memòria cau de baixada"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permet que l\'aplicació baixi fitxers a la memòria cau de baixada que no es poden suprimir automàticament quan el gestor de baixades necessita més espai."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"baixa fitxers sense notificació"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Mida baixad. req. Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Posada en pausa de fons."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Baixada massa gran per a la xarxa de l\'operador"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Has de fer servir Wi-Fi per completar aquesta baixada de <xliff:g id="SIZE">%s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%s </xliff:g> per iniciar aquesta baixada la propera vegada que estiguis connectat a una xarxa Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Has de fer servir Wi-Fi per completar aquesta baixada de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> per iniciar aquesta baixada la propera vegada que estiguis connectat a una xarxa Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Vols posar-lo en cua per baixar-lo més tard?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Si inic. la baixada (<xliff:g id="SIZE">%s </xliff:g>), pot escurçar-se la durada de la bat. i/o fer-se ús excessiu de la conn. de dades mòb., amb càrrecs de l\'oper. segons el pla de dades.\n\n Toca <xliff:g id="QUEUE_TEXT">%s</xliff:g> per inic. baix. quan hi hagi Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Si inic. la baixada (<xliff:g id="SIZE">%1$s </xliff:g>), pot escurçar-se la durada de la bat. i/o fer-se ús excessiu de la conn. de dades mòb., amb càrrecs de l\'oper. segons el pla de dades.\n\n Toca <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> per inic. baix. quan hi hagi Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Cua"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancel·la"</string>
<string name="button_start_now" msgid="792123674007840864">"Inicia ara"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index d8feb852..d67bc1fe 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Umožňuje aplikaci získat přístup k pokročilým funkcím správce stahování. Škodlivé aplikace mohou toto oprávnění použít k přerušení stahování a získání přístupu k soukromým údajům."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Odeslat oznámení o stahování."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Umožňuje aplikaci odesílat oznámení o dokončení stahování. Škodlivé aplikace mohou pomocí těchto oprávnění zmást jiné aplikace, které stahují soubory."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Zobrazit stahování – USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Zobrazení všech položek stažených na kartu SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Umožňuje aplikaci zobrazit všechny soubory stažené na kartu SD bez ohledu na aplikaci, pomocí které byly staženy."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervovat místo v mezipaměti stahování"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Umožňuje aplikaci stahovat soubory do mezipaměti stahování, kterou nelze automaticky vymazat, pokud správce stahování potřebuje více místa."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"stahování souborů bez oznámení"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Vzhledem k velikosti stahovaného souboru je vyžadováno připojení Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pozastaveno na pozadí."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Stahovaný soubor je pro síť operátora příliš velký"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"K dokončení tohoto stahování o velikosti <xliff:g id="SIZE">%s </xliff:g> je třeba připojení Wi-Fi. \n\nChcete-li stahování spustit při příštím připojení k síti Wi-Fi, dotkněte se možnosti <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"K dokončení tohoto stahování o velikosti <xliff:g id="SIZE">%1$s </xliff:g> je třeba připojení Wi-Fi. \n\nChcete-li stahování spustit při příštím připojení k síti Wi-Fi, dotkněte se možnosti <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Zařadit do fronty pro pozdější stažení?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Stahování (<xliff:g id="SIZE">%s </xliff:g>) může zkrátit výdrž baterie nebo příliš zatížit mobilní připojení a přivodit poplatky dle datového tarifu.\n\n Chcete-li stahování spustit při dalším připojení k Wi-Fi, dotkněte se možnosti <xliff:g id="QUEUE_TEXT">%s</xliff:g>."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Stahování (<xliff:g id="SIZE">%1$s </xliff:g>) může zkrátit výdrž baterie nebo příliš zatížit mobilní připojení a přivodit poplatky dle datového tarifu.\n\n Chcete-li stahování spustit při dalším připojení k Wi-Fi, dotkněte se možnosti <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Fronta"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Zrušit"</string>
<string name="button_start_now" msgid="792123674007840864">"Spustit"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 421a2cf4..b288a690 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Tillader, at appen kan få adgang til downloadadministrators avancerede funktioner. Ondsindede apps kan bruge dette til at afbryde downloads og få adgang til personlige oplysninger."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Send notifikationer om downloads."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Tillader, at appen kan sende meddelelser om fuldførte downloads. Ondsindede apps kan bruge dette til at forvirre andre apps, der downloader filer."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Se alle downloads til USB-lagr."</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Se alle downloads til SD-kort"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Tillader, at appen kan se alle downloads på SD-kortet, uanset hvilken app der har downloadet dem."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserver plads i downloadcache"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Tillader, at appen kan downloade filer til downloadcachen, som ikke automatisk kan slettes, når downloadadministratoren har brug for mere plads."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"downloade filer uden notifikation"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Downloaden kræver Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Standset i baggrunden."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Downloadfilen er for stor til mobilnetværk"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Du skal bruge Wi-Fi for at fuldføre denne download på <xliff:g id="SIZE">%s </xliff:g>. \n\nTryk på <xliff:g id="QUEUE_TEXT">%s </xliff:g> for at starte denne download, næste gang du får forbindelse til et Wi-Fi-netværk."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Du skal bruge Wi-Fi for at fuldføre denne download på <xliff:g id="SIZE">%1$s </xliff:g>. \n\nTryk på <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> for at starte denne download, næste gang du får forbindelse til et Wi-Fi-netværk."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"I kø til senere download?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Hvis downloaden på <xliff:g id="SIZE">%s </xliff:g> startes nu, kan batteriets levetid forkortes og/eller medføre overdreven brug af din mobildata, som kan koste ekstra hos dit mobilselskab afhængigt af dit dataabonnement.\n\n Tryk på <xliff:g id="QUEUE_TEXT">%s</xliff:g> for at starte downloaden ved næste forbindelse til Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Hvis downloaden på <xliff:g id="SIZE">%1$s </xliff:g> startes nu, kan batteriets levetid forkortes og/eller medføre overdreven brug af din mobildata, som kan koste ekstra hos dit mobilselskab afhængigt af dit dataabonnement.\n\n Tryk på <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> for at starte downloaden ved næste forbindelse til Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Kø"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Annuller"</string>
<string name="button_start_now" msgid="792123674007840864">"Begynd nu"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index 2525ae9e..3655ff71 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Ermöglicht der App, auf die erweiterten Funktionen des Download-Managers zuzugreifen. Schadprogramme könnten damit Downloads unterbrechen und auf personenbezogene Daten zugreifen."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Benachrichtigungen zu Ladevorgängen senden"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Ermöglicht der App, Benachrichtigungen über abgeschlossene Downloads zu senden. Schadprogramme können dadurch andere Apps, die Dateien herunterladen, beeinträchtigen."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Alle USB-Speicher-Downloads"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Alle Downloads an SD-Karte anzeigen"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Ermöglicht der App, alle Downloads auf die SD-Karte anzuzeigen, unabhängig davon, von welcher App diese heruntergeladen wurden"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Speicherplatz im Download-Cache reservieren"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Ermöglicht der App, Dateien in den Download-Cache herunterzuladen, die nicht automatisch gelöscht werden können, wenn der Download-Manager mehr Speicher benötigt"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"Dateien ohne Benachrichtigung herunterladen"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Downloadgröße erfordert WLAN"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Im Hintergrund pausiert"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download zu groß für Netzwerk dieses Betreibers."</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Du musst eine WLAN-Verbindung nutzen, um den Download von <xliff:g id="SIZE">%s </xliff:g> abzuschließen.\n\nTippe auf <xliff:g id="QUEUE_TEXT">%s </xliff:g> und der Download startet bei der nächsten WLAN-Einwahl."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Du musst eine WLAN-Verbindung nutzen, um den Download von <xliff:g id="SIZE">%1$s </xliff:g> abzuschließen.\n\nTippe auf <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> und der Download startet bei der nächsten WLAN-Einwahl."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"In Warteschlange für späteren Download?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Der Download von <xliff:g id="SIZE">%s </xliff:g> kann die Akkulaufzeit verkürzen/die mobile Datenverbindung überlasten. Je nach Vertrag können zusätzliche Kosten entstehen.\n\nTippe auf <xliff:g id="QUEUE_TEXT">%s</xliff:g> und der Download startet bei der nächsten WLAN-Einwahl."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Der Download von <xliff:g id="SIZE">%1$s </xliff:g> kann die Akkulaufzeit verkürzen/die mobile Datenverbindung überlasten. Je nach Vertrag können zusätzliche Kosten entstehen.\n\nTippe auf <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> und der Download startet bei der nächsten WLAN-Einwahl."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Warteschlange"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Abbrechen"</string>
<string name="button_start_now" msgid="792123674007840864">"Jetzt starten"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 174e2785..f1091b56 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Επιτρέπει στην εφαρμογή την πρόσβαση στις σύνθετες λειτουργίες του προγράμματος διαχείρισης λήψεων. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτήν τη δυνατότητα για να διακόψουν λήψεις και να αποκτήσουν πρόσβαση σε απόρρητες πληροφορίες."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Αποστολή ειδοποιήσεων λήψης."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Επιτρέπει στην εφαρμογή την αποστολή ειδοποιήσεων σχετικά με τις λήψεις που έχουν ολοκληρωθεί. Οι κακόβουλες εφαρμογές μπορούν να χρησιμοποιήσουν αυτή τη λειτουργία για να μπερδέψουν άλλες εφαρμογές που πραγματοποιούν λήψη αρχείων."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Δείτε τις λήψεις στο USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Εμφάνιση όλων των λήψεων στην κάρτα SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Επιτρέπει στην εφαρμογή να βλέπει όλες τις λήψεις στην κάρτα SD, ανεξάρτητα από την εφαρμογή που πραγματοποίησε τη λήψη."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Διατηρήστε χώρο στην προσωρινή μνήμη λήψης"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Επιτρέπει στην εφαρμογή τη λήψη αρχείων στην προσωρινή μνήμη λήψης, η οποία δεν είναι δυνατό να διαγραφεί αυτόματα όταν παρουσιαστεί έλλειψη χώρου στη διαχείριση λήψεων."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"λήψη αρχείων χωρίς ειδοποίηση"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Η λήψη απαιτεί Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Σε παύση στο παρασκήνιο"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Πολύ μεγάλο αρχείο λήψης για δίκτυο παρόχου."</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Θα πρέπει να χρησιμοποιήσετε Wi-Fi για την ολοκλήρωση αυτής της λήψης μεγέθους <xliff:g id="SIZE">%s </xliff:g>. \n\nΑγγίξτε το στοιχείο <xliff:g id="QUEUE_TEXT">%s </xliff:g> για να ξεκινήσετε αυτήν τη λήψη την επόμενη φορά που θα συνδεθείτε σε δίκτυο Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Θα πρέπει να χρησιμοποιήσετε Wi-Fi για την ολοκλήρωση αυτής της λήψης μεγέθους <xliff:g id="SIZE">%1$s </xliff:g>. \n\nΑγγίξτε το στοιχείο <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> για να ξεκινήσετε αυτήν τη λήψη την επόμενη φορά που θα συνδεθείτε σε δίκτυο Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Προσθήκη στην ουρά για να κάνετε λήψη αργότερα;"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Αυτή η λήψη μεγ. <xliff:g id="SIZE">%s </xliff:g> ίσως μειώσει τη διάρκ.ζωής της μπατ. ή/και να κάνει υπερβ.χρήση της σύνδ. δεδ. κιν. Ίσως υπάρξουν χρεώσ.από την εταιρ. βάσει του προγρ.δεδομ.\n\n Αγγίξτε <xliff:g id="QUEUE_TEXT">%s</xliff:g> για λήψη όταν συνδ. μέσω Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Αυτή η λήψη μεγ. <xliff:g id="SIZE">%1$s </xliff:g> ίσως μειώσει τη διάρκ.ζωής της μπατ. ή/και να κάνει υπερβ.χρήση της σύνδ. δεδ. κιν. Ίσως υπάρξουν χρεώσ.από την εταιρ. βάσει του προγρ.δεδομ.\n\n Αγγίξτε <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> για λήψη όταν συνδ. μέσω Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Ουρά"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Ακύρωση"</string>
<string name="button_start_now" msgid="792123674007840864">"Έναρξη τώρα"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 415a164f..242dcb67 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Send download notifications."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"See all downloads to USB storage"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"See all downloads to SD card"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Allows the app to see all downloads to the SD card, regardless of which app downloaded them."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserve space in the download cache"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Allows the app to download files to the download cache, which can\'t be deleted automatically when the download manager needs more space."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download files without notification"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Download size requires Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Paused in background"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download too large for operator network"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%1$s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Queue for download later?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%1$s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancel"</string>
<string name="button_start_now" msgid="792123674007840864">"Start now"</string>
diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml
index 415a164f..242dcb67 100644
--- a/res/values-en-rCA/strings.xml
+++ b/res/values-en-rCA/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Send download notifications."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"See all downloads to USB storage"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"See all downloads to SD card"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Allows the app to see all downloads to the SD card, regardless of which app downloaded them."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserve space in the download cache"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Allows the app to download files to the download cache, which can\'t be deleted automatically when the download manager needs more space."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download files without notification"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Download size requires Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Paused in background"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download too large for operator network"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%1$s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Queue for download later?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%1$s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancel"</string>
<string name="button_start_now" msgid="792123674007840864">"Start now"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 415a164f..242dcb67 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Send download notifications."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"See all downloads to USB storage"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"See all downloads to SD card"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Allows the app to see all downloads to the SD card, regardless of which app downloaded them."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserve space in the download cache"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Allows the app to download files to the download cache, which can\'t be deleted automatically when the download manager needs more space."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download files without notification"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Download size requires Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Paused in background"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download too large for operator network"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%1$s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Queue for download later?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%1$s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancel"</string>
<string name="button_start_now" msgid="792123674007840864">"Start now"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 415a164f..242dcb67 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Send download notifications."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"See all downloads to USB storage"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"See all downloads to SD card"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Allows the app to see all downloads to the SD card, regardless of which app downloaded them."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserve space in the download cache"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Allows the app to download files to the download cache, which can\'t be deleted automatically when the download manager needs more space."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download files without notification"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Download size requires Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Paused in background"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download too large for operator network"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"You must use Wi-Fi to complete this <xliff:g id="SIZE">%1$s </xliff:g> download. \n\nTouch <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Queue for download later?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Starting this <xliff:g id="SIZE">%1$s </xliff:g> download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.\n\n Touch <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> to start this download the next time that you\'re connected to a Wi-Fi network."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancel"</string>
<string name="button_start_now" msgid="792123674007840864">"Start now"</string>
diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml
index 904c6290..36570ec4 100644
--- a/res/values-en-rXC/strings.xml
+++ b/res/values-en-rXC/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‏‎‎‏‏‏‎‏‎‎‎‏‎‎‏‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‏‏‏‎‎‎‎‎‏‏‎‎‏‎‎‏‎Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information.‎‏‎‎‏‎"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‏‎‏‎‎‏‎‎‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎Send download notifications.‎‏‎‎‏‎"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‎‏‏‏‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‎‎‏‏‎‏‎Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files.‎‏‎‎‏‎"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‏‎‏‏‏‏‎‏‎‏‎‎‏‏‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‎See all downloads to USB storage‎‏‎‎‏‎"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‏‎‎‏‎‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‏‎‎See all downloads to SD card‎‏‎‎‏‎"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎Allows the app to see all downloads to the SD card, regardless of which app downloaded them.‎‏‎‎‏‎"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‎‏‏‎‏‏‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‏‏‎‏‎‎‎Reserve space in the download cache‎‏‎‎‏‎"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‎‎‏‏‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎Allows the app to download files to the download cache, which can\'t be automatically deleted when the download manager needs more space.‎‏‎‎‏‎"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‏‎‏‏‎‎‏‎‎‎‏‎‏‎‏‎‎‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‏‎‎download files without notification‎‏‎‎‏‎"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‏‏‎‎‏‏‎‏‏‎‎‏‎‎‎‏‎‎‏‎‎‎‎‏‎‎‎‏‏‏‎‏‎‎‏‎‎‏‎‏‎‎‏‏‏‎Download size requires Wi-Fi.‎‏‎‎‏‎"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‏‎‏‏‏‏‎‏‎‏‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‎Paused in background.‎‏‎‎‏‎"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‏‎‏‏‏‎‏‏‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‏‏‎Download too large for operator network‎‏‎‎‏‎"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎You must use Wi-Fi to complete this ‎‏‎‎‏‏‎<xliff:g id="SIZE">%s </xliff:g>‎‏‎‎‏‏‏‎ download. ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Touch ‎‏‎‎‏‏‎<xliff:g id="QUEUE_TEXT">%s </xliff:g>‎‏‎‎‏‏‏‎ to start this download the next time you\'re connected to a Wi-Fi network.‎‏‎‎‏‎"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‎You must use Wi-Fi to complete this ‎‏‎‎‏‏‎<xliff:g id="SIZE">%1$s </xliff:g>‎‏‎‎‏‏‏‎ download. ‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Touch ‎‏‎‎‏‏‎<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>‎‏‎‎‏‏‏‎ to start this download the next time you\'re connected to a Wi-Fi network.‎‏‎‎‏‎"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‎‎‎‎‏‏‎‏‎‎‏‎‏‎‏‎‎‎‎Queue for download later?‎‏‎‎‏‎"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‎Starting this ‎‏‎‎‏‏‎<xliff:g id="SIZE">%s </xliff:g>‎‏‎‎‏‏‏‎ download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎ Touch ‎‏‎‎‏‏‎<xliff:g id="QUEUE_TEXT">%s</xliff:g>‎‏‎‎‏‏‏‎ to start this download the next time you\'re connected to a Wi-Fi network.‎‏‎‎‏‎"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‏‏‎‎‏‎‎‎‏‏‏‏‏‎‏‏‏‎‎‎‎‎‏‎‏‎‏‎‏‏‎‎‎‏‏‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‏‎Starting this ‎‏‎‎‏‏‎<xliff:g id="SIZE">%1$s </xliff:g>‎‏‎‎‏‏‏‎ download now may shorten your battery life and/or result in excessive usage of your mobile data connection, which can lead to charges by your mobile operator depending on your data plan.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎ Touch ‎‏‎‎‏‏‎<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>‎‏‎‎‏‏‏‎ to start this download the next time you\'re connected to a Wi-Fi network.‎‏‎‎‏‎"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‎‏‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‎‏‏‎‏‏‎‏‎‏‎‎‎‎‎‎‏‎‏‎‏‎‏‎‏‎Queue‎‏‎‎‏‎"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‏‎‏‎‎‎‎‏‏‎‏‏‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‎‏‎‎‏‏‎‎‎‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‎‎‏‏‎‏‎‎‎Cancel‎‏‎‎‏‎"</string>
<string name="button_start_now" msgid="792123674007840864">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‎‎‎‏‏‎‎‎‎‎‎Start now‎‏‎‎‏‎"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index ab8d177b..182b21b4 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permite que la aplicación acceda a las funciones avanzadas del administrador de descargas. Las aplicaciones maliciosas pueden usar este permiso para interrumpir descargas y acceder a información privada."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Enviar notificaciones de descarga."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permite que la aplicación envíe notificaciones acerca de descargas que se completaron. Las aplicaciones maliciosas pueden usar este permiso para confundir otras aplicaciones que descargan archivos."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Ver todas las descargas de almacenamiento USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Ver todas las descargas de la tarjeta SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permite que la aplicación vea todas las descargas de la tarjeta SD, sin importar qué aplicación las realizó."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservar espacio en el caché de descarga"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permite que la aplic. descargue archivos en la caché de descargas. Estos no se eliminarán automáticamente cuando el admin. de descargas necesite más espacio."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"descargar archivos sin notificación"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Tamaño requiere Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Aplic. de fondo en pausa"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"La descarga es demasiado grande la red del operador"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Debes usar Wi-Fi para completar esta descarga de <xliff:g id="SIZE">%s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%s </xliff:g> para iniciar esta descarga la próxima vez que te conectes a una red Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Debes usar Wi-Fi para completar esta descarga de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> para iniciar esta descarga la próxima vez que te conectes a una red Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"¿Agregar a la lista para descargar más tarde?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Esta descarga de <xliff:g id="SIZE">%s </xliff:g> puede reducir la duración de tu batería o producir un uso excesivo de tu conexión de datos móvil. Según cuál sea tu plan de datos, tu operador puede cobrarte por esto.\n\n Toca <xliff:g id="QUEUE_TEXT">%s</xliff:g> para iniciar la descarga cuando tengas acceso a Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Esta descarga de <xliff:g id="SIZE">%1$s </xliff:g> puede reducir la duración de tu batería o producir un uso excesivo de tu conexión de datos móvil. Según cuál sea tu plan de datos, tu operador puede cobrarte por esto.\n\n Toca <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> para iniciar la descarga cuando tengas acceso a Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Cola"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancelar"</string>
<string name="button_start_now" msgid="792123674007840864">"Comenzar ahora"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 04a66350..b54f0d00 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permite que la aplicación acceda a las funciones avanzadas del administrador de descargas. Las aplicaciones malintencionadas pueden utilizar este permiso para provocar daños en las descargas y acceder a información privada."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Envío de notificaciones de descarga"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permite que la aplicación envíe notificaciones sobre descargas completadas. Las aplicaciones malintencionadas pueden utilizar este permiso para confundir a otras aplicaciones que descarguen archivos."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Ver descargas de USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Ver todas las descargas en tarjeta SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permite que la aplicación vea todas las descargas en la tarjeta SD independientemente de la aplicación que las haya descargado."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservar espacio en caché de descargas"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permite que la aplicación descargue archivos en la memoria caché que no se pueden eliminar automáticamente si falta espacio en el administrador de descargas."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"descargar archivos sin notificación"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"La descarga requiere Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pausada en segundo plano"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Descarga demasiado grande para red de operador"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Debes usar una conexión Wi-Fi para completar esta descarga de <xliff:g id="SIZE">%s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%s </xliff:g> para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Debes usar una conexión Wi-Fi para completar esta descarga de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"¿Poner en cola para descargar más tarde?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Si descargas <xliff:g id="SIZE">%s </xliff:g>, puedes quedarte sin batería y tu operador te puede cobrar por un uso excesivo de datos.\n\n Toca <xliff:g id="QUEUE_TEXT">%s</xliff:g> para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Si descargas <xliff:g id="SIZE">%1$s </xliff:g>, puedes quedarte sin batería y tu operador te puede cobrar por un uso excesivo de datos.\n\n Toca <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Poner en cola"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancelar"</string>
<string name="button_start_now" msgid="792123674007840864">"Empezar ahora"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 6969ec78..44df23ca 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Võimaldab rakendusel pääseda allalaadimishalduri täpsemate funktsioonide juurde. Pahatahtlikud rakendused võivad selle abil allalaadimisi takistada ja privaatsete andmete juurde pääseda."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Allalaadimisteatiste saatmine."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Võimaldab rakendusel saata märguandeid lõpulejõudnud allalaadimiste kohta. Pahatahtlikud rakendused võivad selle abil häirida teisi rakendusi, mis faile alla laadivad."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB allalaadimiste vaat."</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Vaadake kõiki allalaadimisi SD-kaardile"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Võimaldab rakendusel näha kõiki SD-kaardile salvestatud allalaadimisi sõltumata rakendusest, mis need alla laadis."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reserveeri allalaadimiste vahemälus ruumi"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Võimaldab rakendusel laadida faile allalaadimise vahemällu, mida allalaadimishaldur ei saa ruumi vabastamiseks automaatselt kustutada."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"failide teatamata allalaadimine"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Allalaad. on vaja WiFit."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Peatatud taustal."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Allalaadimine operaatori võrgu jaoks on liiga suur"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%s </xliff:g> suuruse allalaadimise jaoks tuleb kasutada WiFi-võrku.\n\nPuudutage valikut <xliff:g id="QUEUE_TEXT">%s </xliff:g>, et alustada allalaadimisega järgmine kord, kui olete WiFi-võrguga ühenduses."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%1$s </xliff:g> suuruse allalaadimise jaoks tuleb kasutada WiFi-võrku.\n\nPuudutage valikut <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, et alustada allalaadimisega järgmine kord, kui olete WiFi-võrguga ühenduses."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Kas lisada järjekorda hilisemaks allalaadimiseks?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%s </xliff:g> allalaad. võib aku tööiga lüh. ja/või mob. andmemahtu koormata, mistõttu võib mob.operaator teilt sõltuvalt andmeplaanist tasu võtta.\n\n Puud. valikut <xliff:g id="QUEUE_TEXT">%s</xliff:g>, et laadida see alla siis, kui olete WiFi-võrgus."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%1$s </xliff:g> allalaad. võib aku tööiga lüh. ja/või mob. andmemahtu koormata, mistõttu võib mob.operaator teilt sõltuvalt andmeplaanist tasu võtta.\n\n Puud. valikut <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, et laadida see alla siis, kui olete WiFi-võrgus."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Järjekord"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Tühista"</string>
<string name="button_start_now" msgid="792123674007840864">"Alusta nüüd"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 63c8e7f5..80fde817 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Deskargen kudeatzailearen eginbide aurreratuak atzitzeko baimena ematen die aplikazioei. Aplikazio gaiztoek deskargak eteteko eta informazio pribatua atzitzeko erabil dezakete hori."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Bidali deskargen jakinarazpenak."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Osatutako deskargei buruzko jakinarazpenak bidaltzeko baimena ematen die aplikazioei. Aplikazio gaiztoek fitxategiak deskargatzen dituzten beste aplikazioak nahasteko erabil dezakete hori."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Ikusi USB memoriako deskargak"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Ikusi SD txartelera egin diren deskarga guztiak"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"SD txartelera egin diren deskarga guztiak ikusteko baimena ematen die aplikazioei, zein aplikaziok deskargatu zituen kontuan hartu gabe."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Erreserbatu memoria deskarga-cachean"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Fitxategiak deskarga-cachera deskargatzeko baimena ematen die aplikazioei (ezin izango dira automatikoki ezabatu deskargen kudeatzaileak tokia behar duenean)."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"Deskargatu fitxategiak jakinarazi gabe"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Wi-Fi konexioa behar da."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Atzeko planoan pausatuta"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Deskarga handiegia da operadorearen sarerako"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Wi-Fi konexioa erabili behar duzu <xliff:g id="SIZE">%s </xliff:g>-ko deskarga hau osatzeko. \n\nWi-Fi sare batera konektatzen zaren hurrengo aldian deskargari berrekiteko, ukitu <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Wi-Fi konexioa erabili behar duzu <xliff:g id="SIZE">%1$s </xliff:g>-ko deskarga hau osatzeko. \n\nWi-Fi sare batera konektatzen zaren hurrengo aldian deskargari berrekiteko, ukitu <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Ilaran ezarri geroago deskargatzeko?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%s </xliff:g>-ko deskarga hau hasten baduzu, baliteke bateriak gutxiago irautea edota datu-konexioa gehiegi erabiltzea eta, horren ondorioz, operadoreak gastu gehigarriak kobratzea, darabilzun datu-planaren arabera.\n\n Wi-Fi sare batera konektatzen zaren hurrengo aldian deskargari berrekiteko, ukitu <xliff:g id="QUEUE_TEXT">%s</xliff:g>."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%1$s </xliff:g>-ko deskarga hau hasten baduzu, baliteke bateriak gutxiago irautea edota datu-konexioa gehiegi erabiltzea eta, horren ondorioz, operadoreak gastu gehigarriak kobratzea, darabilzun datu-planaren arabera.\n\n Wi-Fi sare batera konektatzen zaren hurrengo aldian deskargari berrekiteko, ukitu <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Ezarri ilaran"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Utzi"</string>
<string name="button_start_now" msgid="792123674007840864">"Hasi"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index 3b914c5d..545399c9 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"‏به برنامه اجازه می‌دهد تا به عملکردهای پیشرفته download manager دسترسی داشته باشد. برنامه‌های مضر می‌توانند از این امکان استفاده کرده و برای بارگیری‌ها مشکل ایجاد کنند و به اطلاعات خصوصی دسترسی داشته باشند."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"اعلان‌های بارگیری ارسال شود."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"به برنامه اجازه می‌دهد اعلان‌های مربوط به بارگیریهای کامل شده را ارسال کند. برنامه‌های مضر می‌توانند از این امکان استفاده کرده و برای سایر برنامه‌هایی که فایل‌ها را بارگیری می‌کنند، مشکلاتی را ایجاد کنند."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"‏مشاهدهٔ همه بارگیری‌ها در حافظهٔ USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"‏مشاهدهٔ همه بارگیری‌ها در کارت SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"‏به برنامه اجازه می‌دهد بدون در نظر گرفتن اینکه کدام برنامه بارگیری را انجام داده است، تمام بارگیریهای موجود در کارت SD را مشاهده کند."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"رزرو فضا در حافظه موقت بارگیری"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"‏به برنامه اجازه می‌دهد فایل‌ها را در حافظهٔ پنهان بارگیری کند، تا هنگامی که Download Manager به فضای بیشتری احتیاج دارد، به‌طور خودکار حذف نشوند.+"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"بارگیری فایل‌ها بدون اطلاع"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"‏برای این حجم از بارگیری به Wi-Fi نیاز است."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"در پس‌زمینه موقتاً متوقف شد."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"بارگیری برای شبکه اپراتور بسیار بزرگ است"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"‏برای تکمیل این بارگیری <xliff:g id="SIZE">%s </xliff:g> باید از Wi-Fi استفاده کنید. در اتصال بعدی به شبکه Wi-Fi و برای شروع بارگیری، \n\nلمس<xliff:g id="QUEUE_TEXT">%s </xliff:g> کنید."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"‏برای تکمیل این بارگیری <xliff:g id="SIZE">%1$s </xliff:g> باید از Wi-Fi استفاده کنید. در اتصال بعدی به شبکه Wi-Fi و برای شروع بارگیری، \n\nلمس<xliff:g id="QUEUE_TEXT">%2$s </xliff:g> کنید."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"برای بارگیری در فرصتی دیگر در صف گذاشته شود؟"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"‏شروع بارگیری <xliff:g id="SIZE">%s </xliff:g> سبب کم شدن طول عمر باتری و/یا استفاده بیش از حد از اتصال داده تلفن همراه می‌شود که بسته به قرارداد ارائه داده شما ممکن است از طرف اپراتور تلفن هزینه‌هایی برای شما در نظر گرفته شود. \n\n<xliff:g id="QUEUE_TEXT">%s</xliff:g> را لمس کنید تا در اتصال بعدی به شبکه Wi-Fi، این بارگیری شروع شود."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"‏شروع بارگیری <xliff:g id="SIZE">%1$s </xliff:g> سبب کم شدن طول عمر باتری و/یا استفاده بیش از حد از اتصال داده تلفن همراه می‌شود که بسته به قرارداد ارائه داده شما ممکن است از طرف اپراتور تلفن هزینه‌هایی برای شما در نظر گرفته شود. \n\n<xliff:g id="QUEUE_TEXT">%2$s</xliff:g> را لمس کنید تا در اتصال بعدی به شبکه Wi-Fi، این بارگیری شروع شود."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"صف"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"لغو"</string>
<string name="button_start_now" msgid="792123674007840864">"اکنون شروع شود"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index dbe1a53e..43e145be 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Antaa sovelluksen käyttää latauksien hallinnan lisätoimintoja. Haitalliset sovellukset voivat keskeyttää latauksia ja käyttää yksityistietoja."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Latausilmoitusten lähetys."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Antaa sovelluksen lähettää valmistuneita latauksia koskevia ilmoituksia. Haitalliset sovellukset voivat käyttää tätä muiden tiedostoja lataavien sovelluksien häiritsemiseen."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Kaikki USB-lataukset"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD-kortin kaikkien latausten tarkastelu."</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Antaa sovelluksen nähdä kaikki SD-kortille tehtävät lataukset huolimatta latauksen suorittaneesta sovelluksesta."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Varaa tilaa latausvälimuistista"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Antaa sovelluksen ladata tiedostoja latausvälimuistiin, jota ei voi automaattisesti poistaa latauksen hallinnan tarvitessa lisää tilaa."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"lataa tiedostoja ilmoittamatta"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Lataa Wi-Fi-yhteydellä"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Keskeytetty taustalla."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Lataus liian suuri operaattorin verkolle"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Tämä <xliff:g id="SIZE">%s </xliff:g>:n lataus täytyy suorittaa Wi-Fi-yhteyden ollessa käytössä. \n\nAloita lataus seuraavan kerran, kun yhdistät Wi-Fi-verkkoon, koskettamalla <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Tämä <xliff:g id="SIZE">%1$s </xliff:g>:n lataus täytyy suorittaa Wi-Fi-yhteyden ollessa käytössä. \n\nAloita lataus seuraavan kerran, kun yhdistät Wi-Fi-verkkoon, koskettamalla <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Asetetaanko myöhemmin ladattavaksi?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Jos aloitat tämän <xliff:g id="SIZE">%s </xliff:g>:n latauksen nyt, akun virtaa voi kulua tav. enemmän ja/tai operaattori voi veloittaa ylim. mobiilitiedons.\n\nAloita lataus seuraavan kerran, kun yhdistät Wi-Fi-verkkoon, koskettamalla <xliff:g id="QUEUE_TEXT">%s</xliff:g>."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Jos aloitat tämän <xliff:g id="SIZE">%1$s </xliff:g>:n latauksen nyt, akun virtaa voi kulua tav. enemmän ja/tai operaattori voi veloittaa ylim. mobiilitiedons.\n\nAloita lataus seuraavan kerran, kun yhdistät Wi-Fi-verkkoon, koskettamalla <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Jono"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Peruuta"</string>
<string name="button_start_now" msgid="792123674007840864">"Aloita nyt"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 7f51be1f..e445827b 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permet à l\'application d\'accéder aux fonctionnalités avancées du gestionnaire de téléchargement. Les applications malveillantes peuvent utiliser cette fonctionnalité pour perturber les téléchargements et accéder à des données confidentielles."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Envoyer des notifications de téléchargement."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permet à l\'application d\'envoyer des notifications relatives aux téléchargements terminés. Des applications malveillantes peuvent utiliser cette fonctionnalité pour induire en erreur d\'autres applications pouvant télécharger des fichiers."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Voir tous les téléchargements sur la mémoire de stockage USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Voir tous les téléchargements effectués sur la carte SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permet à l\'application de voir tous les téléchargements sur la carte SD, quelle que soit l\'application utilisée pour les télécharger."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Réserver de l\'espace dans le cache de téléchargement"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permet à l\'application de télécharger des fichiers dans le cache de téléchargement, et empêche ainsi leur suppression automatique par le gestionnaire de téléchargement."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"télécharger des fichiers sans envoyer de notification"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Taille du fichier requiert Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Interrompu en arr.-plan."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Téléchargement trop volumineux pour l\'opérateur"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de <xliff:g id="SIZE">%s </xliff:g>. \n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%s </xliff:g> pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Ajouter à la file d\'attente des téléchargements?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ce téléchargement (<xliff:g id="SIZE">%s </xliff:g>) risque de décharger votre batterie et/ou d\'entraîner une consommation excessive de votre connexion Internet mobile. Des frais supplémentaires peuvent être facturés par votre opérateur en fonction de votre forfait.\n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%s</xliff:g> pour le lancer lors de votre prochaine connexion au Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ce téléchargement (<xliff:g id="SIZE">%1$s </xliff:g>) risque de décharger votre batterie et/ou d\'entraîner une consommation excessive de votre connexion Internet mobile. Des frais supplémentaires peuvent être facturés par votre opérateur en fonction de votre forfait.\n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> pour le lancer lors de votre prochaine connexion au Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"File d\'attente"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Annuler"</string>
<string name="button_start_now" msgid="792123674007840864">"Commencer"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 83489be8..b0fae14d 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permet à l\'application d\'accéder aux fonctions avancées du gestionnaire de téléchargement. Les applications malveillantes peuvent utiliser cette fonctionnalité pour perturber les téléchargements et accéder à des informations confidentielles."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Envoyer des notifications de téléchargement."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permet à l\'application d\'envoyer des notifications relatives aux téléchargements terminés. Les applications malveillantes peuvent utiliser cette fonctionnalité pour induire en erreur d\'autres applications pouvant télécharger des fichiers."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Voir téléchargements sur mémoire USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Voir téléchargements sur la carte SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permet à l\'application de voir tous les téléchargements sur la carte SD, quelle que soit l\'application utilisée pour les télécharger."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Réserver un espace dans le cache de téléchargement"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permet à l\'application de télécharger des fichiers dans le cache de téléchargement et empêche leur suppression automatique par le gestionnaire de téléchargement."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"télécharger les fichiers sans m\'avertir"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Taille du fichier requiert Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Interrompu en arr.-plan."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Téléchargement trop volumineux pour l\'opérateur"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de <xliff:g id="SIZE">%s </xliff:g>. \n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%s </xliff:g> pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Ajouter à la file d\'attente des téléchargements ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ce téléchargement (<xliff:g id="SIZE">%s </xliff:g>) risque de décharger votre batterie et/ou d\'entraîner une consommation excessive de votre connexion Internet mobile. Des frais supplémentaires peuvent être facturés par votre opérateur en fonction de votre forfait.\n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%s</xliff:g> pour le lancer lors de votre prochaine connexion au Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ce téléchargement (<xliff:g id="SIZE">%1$s </xliff:g>) risque de décharger votre batterie et/ou d\'entraîner une consommation excessive de votre connexion Internet mobile. Des frais supplémentaires peuvent être facturés par votre opérateur en fonction de votre forfait.\n\nAppuyez sur <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> pour le lancer lors de votre prochaine connexion au Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"File d\'attente"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Annuler"</string>
<string name="button_start_now" msgid="792123674007840864">"Commencer"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index f39cbb38..707b6764 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permite á aplicación acceder ás funcións avanzadas do administrador de descargas. As aplicacións maliciosas poden usar esta opción para interromper as descargas e acceder a información privada."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Enviar notificacións de descarga."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permite á aplicación enviar notificacións de descargas completadas. É posible que aplicacións maliciosas utilicen esta opción para confundir outras aplicacións que descargan ficheiros."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Ver descargas a USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Ver todas as descargas na tarxeta SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permite á aplicación ver todas as descargas que se fixeron na tarxeta SD, independentemente da aplicación utilizada para descargalas."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservar espazo na caché de descargas"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permite á aplicación descargar ficheiros na caché de descargas, que non se pode eliminar automaticamente cando o administrador de descargas precisa máis espazo."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"descargar ficheiros sen notificación"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"A descarga precisa wifi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pausada en segundo plano"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Descarga demasiado grande para a rede do operador"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Debes utilizar a wifi para completar esta descarga de <xliff:g id="SIZE">%s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%s </xliff:g> para iniciar esta descarga a próxima vez que te conectes a unha rede wifi"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Debes utilizar a wifi para completar esta descarga de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nToca <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> para iniciar esta descarga a próxima vez que te conectes a unha rede wifi"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Colocar na cola para descargar máis tarde?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Se descargas <xliff:g id="SIZE">%s </xliff:g>, podes quedar sen batería e o teu operador pódeche cobrar por un uso excesivo de datos.\n\n Toca <xliff:g id="QUEUE_TEXT">%s</xliff:g> para iniciar esta descarga a próxima vez que te conectes a unha rede wifi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Se descargas <xliff:g id="SIZE">%1$s </xliff:g>, podes quedar sen batería e o teu operador pódeche cobrar por un uso excesivo de datos.\n\n Toca <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> para iniciar esta descarga a próxima vez que te conectes a unha rede wifi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Cola"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancelar"</string>
<string name="button_start_now" msgid="792123674007840864">"Iniciar agora"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 128d3dcd..a99d10f7 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"એપ્લિકેશનને ડાઉનલોડ સંચાલકના વિગતવાર Tasks ને ઍક્સેસ કરવાની મંજૂરી આપે છે. દુભાવનાપૂર્ણ ઍપ્લિકેશનો આનો ઉપયોગ ડાઉનલોડ્સમાં વિક્ષેપ નાખવા અને ખાનગી માહિતીને ઍક્સેસ કરવા માટે કરી શકે છે."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ડાઉનલોડ સૂચનાઓ મોકલો."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"એપ્લિકેશનને પૂર્ણ થયેલ ડાઉનલોડ્સ વિશે સૂચનાઓ મોકલવાની મંજૂરી આપે છે. દુર્ભાવનાપૂર્ણ ઍપ્લિકેશનો આનો ઉપયોગ ફાઇલો ડાઉનલોડ કરતી અન્ય ઍપ્લિકેશનોને મૂંઝવણમાં નાખવા માટે કરી શકે છે."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB સ્ટોરેજ પરના તમામ ડાઉનલોડને જુઓ"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD કાર્ડ પરના તમામ ડાઉનલોડ્સ જુઓ"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"ઍપ્લિકેશનને SD કાર્ડ પર તમામ ડાઉનલોડ્સ જોવાની મંજૂરી આપે છે, પછી ભલેને તે કોઈપણ ઍપ્લિકેશન દ્વારા ડાઉનલોડ થયાં હોય."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ડાઉનલોડ કેશમાં જગ્યા અનામત રાખો"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"એપ્લિકેશનને ડાઉનલોડ કેશ પર તે ફાઇલો ડાઉનલોડ કરવાની મંજૂરી આપે છે, જે ડાઉનલોડ સંચાલકને વધુ જગ્યાની જરૂર પડવા પર આપમેળે કાઢી નાખી શકાતી નથી."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"સૂચના વગર ફાઇલો ડાઉનલોડ કરો"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ડાઉનલોડ કદને વાઇ-ફાઇ ની જરૂર છે."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"પૃષ્ઠભૂમિમાં થોભાવ્યું."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ઓપરેટર નેટવર્ક માટે ડાઉનલોડ ખૂબ મોટું છે"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"આ <xliff:g id="SIZE">%s </xliff:g> ડાઉનલોડ પૂર્ણ કરવા માટે તમારે વાઇ-ફાઇ નો ઉપયોગ કરવો આવશ્યક છે. \n\nઆગલી વખતે જ્યારે તમે વાઇ-ફાઇ નેટવર્કથી કનેક્ટ થાઓ ત્યારે આ ડાઉનલોડ શરૂ કરવા માટે <xliff:g id="QUEUE_TEXT">%s </xliff:g> ને સ્પર્શ કરો."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"આ <xliff:g id="SIZE">%1$s </xliff:g> ડાઉનલોડ પૂર્ણ કરવા માટે તમારે વાઇ-ફાઇ નો ઉપયોગ કરવો આવશ્યક છે. \n\nઆગલી વખતે જ્યારે તમે વાઇ-ફાઇ નેટવર્કથી કનેક્ટ થાઓ ત્યારે આ ડાઉનલોડ શરૂ કરવા માટે <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ને સ્પર્શ કરો."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"પછીથી ડાઉનલોડ માટે કતારબદ્ધ કરીએ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"આ <xliff:g id="SIZE">%s </xliff:g> ડાઉનલોડને હમણાં શરૂ કરવું તમારી બૅટરી આવરદાને ટૂંકાવી શકે છે અને/અથવા તમારા મોબાઇલ ડેટા કનેક્શનના અતિશય વપરાશમાં પરિણમી શકે છે, જેના લીધે તમારા ડેટા પ્લાનના આધારે તમારા મોબાઇલ ઑપરેટર દ્વારા શુલ્ક વસૂલી શકાય છે.\n\n આગલી વખતે જ્યારે તમે વાઇ-ફાઇ નેટવર્કથી કનેક્ટ થાઓ ત્યારે આ ડાઉનલોડ શરૂ કરવા માટે <xliff:g id="QUEUE_TEXT">%s</xliff:g> ને સ્પર્શ કરો"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"આ <xliff:g id="SIZE">%1$s </xliff:g> ડાઉનલોડને હમણાં શરૂ કરવું તમારી બૅટરી આવરદાને ટૂંકાવી શકે છે અને/અથવા તમારા મોબાઇલ ડેટા કનેક્શનના અતિશય વપરાશમાં પરિણમી શકે છે, જેના લીધે તમારા ડેટા પ્લાનના આધારે તમારા મોબાઇલ ઑપરેટર દ્વારા શુલ્ક વસૂલી શકાય છે.\n\n આગલી વખતે જ્યારે તમે વાઇ-ફાઇ નેટવર્કથી કનેક્ટ થાઓ ત્યારે આ ડાઉનલોડ શરૂ કરવા માટે <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ને સ્પર્શ કરો"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"કતાર"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"રદ કરો"</string>
<string name="button_start_now" msgid="792123674007840864">"હવે પ્રારંભ કરો"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index 468b3109..25fdef60 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"एेप्लिकेशन को डाउनलोड मैनेजर के बेहतर फ़ंक्शन के इस्तेमाल की मंज़ूरी देता है. धोखा देने वाले एेप्लिकेशन इसका इस्तेमाल डाउनलोड को रोकने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"डाउनलोड सूचनाएं भेजें."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"पूरे किए गए डाउनलोड के बारे में ऐप को सूचना भेजने देता है. धोखा देने वाले ऐप इसका इस्तेमाल फ़ाइलों को डाउनलोड करने वाले दूसरे ऐप को भ्रम में डालने के लिए कर सकते हैं."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB मेमोरी के सभी डाउनलोड देखें"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD कार्ड के लिए सभी डाउनलोड देखें"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"इस बात पर ध्यान दिए बिना कि किस ऐप्स ने उन्हें डाउनलोड किया है, ऐप्स को SD कार्ड पर किए गए सभी डाउनलोड देखने देता है."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"डाउनलोड कैश मेमोरी में जगह बचाकर रखें"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ऐप को डाउनलोड कैश मेमोरी में फ़ाइलें डाउनलोड करने देता है. डाउनलोड मैनेजर को ज़्यादा जगह की ज़रुरत होने पर इन फ़ाइलों को हटाया नहीं जा सकता, ."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"बिना किसी सूचना के फ़ाइलें डाउनलोड करने दें"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"डाउनलोड आकार के लिए वाई-फ़ाई आवश्‍यक."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"पृष्ठभूमि में रोका गया."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ऑपरेटर नेटवर्क के लिए डाउनलोड बहुत बड़ा है"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"इस <xliff:g id="SIZE">%s </xliff:g> के डाउनलोड को पूरा करने के लिए आपको वाई-फ़ाई का इस्तेमाल करना चाहिए.\n\nअगली बार जब आप वाई-फ़ाई नेटवर्क से जुड़ें, तो इस डाउनलोड को शुरू करने के लिए <xliff:g id="QUEUE_TEXT">%s </xliff:g> को छुएं."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"इस <xliff:g id="SIZE">%1$s </xliff:g> के डाउनलोड को पूरा करने के लिए आपको वाई-फ़ाई का इस्तेमाल करना चाहिए.\n\nअगली बार जब आप वाई-फ़ाई नेटवर्क से जुड़ें, तो इस डाउनलोड को शुरू करने के लिए <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> को छुएं."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"बाद में डाउनलोड करने के लिए कतार में रखें?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"इस <xliff:g id="SIZE">%s </xliff:g> के डाउनलोड को शुरू करने से आपकी बैटरी जल्दी खत्म हो सकती है और/या मोबाइल का बहुत सारा डेटा खर्च हो सकता है, जिसके लिए मोबाइल और इंटरनेट सेवा देने वाली कंपनी, आपके डेटा प्लान के हिसाब से आपसे पैसे ले सकती है.\n\n अगली बार जब आप वाई-फ़ाई नेटवर्क से जुड़ें, तो यह डाउनलोड शुरू करने के लिए <xliff:g id="QUEUE_TEXT">%s</xliff:g> को छुएं."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"इस <xliff:g id="SIZE">%1$s </xliff:g> के डाउनलोड को शुरू करने से आपकी बैटरी जल्दी खत्म हो सकती है और/या मोबाइल का बहुत सारा डेटा खर्च हो सकता है, जिसके लिए मोबाइल और इंटरनेट सेवा देने वाली कंपनी, आपके डेटा प्लान के हिसाब से आपसे पैसे ले सकती है.\n\n अगली बार जब आप वाई-फ़ाई नेटवर्क से जुड़ें, तो यह डाउनलोड शुरू करने के लिए <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> को छुएं."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"कतार"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"रद्द करें"</string>
<string name="button_start_now" msgid="792123674007840864">"अब शुरू करें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index b77806ec..b3af03bf 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Omogućuje aplikaciji pristup naprednim funkcijama upravitelja preuzimanja. Zlonamjerne aplikacije mogu to iskoristiti da bi ometale preuzimanja i pristupale privatnim podacima."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Pošaljite obavijesti o preuzimanju."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Omogućuje aplikaciji slanje obavijesti o dovršenim preuzimanjima. Zlonamjerne aplikacije mogu to iskoristiti za zbunjivanje drugih aplikacija koje preuzimaju datoteke."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Prikaz svih preuz. na USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Pogledajte sva preuzimanja na SD kartici"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Omogućuje aplikaciji da vidi sva preuzimanja na SD kartici, bez obzira na to koja ih je aplikacija preuzela."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezerviraj prostor u predmemoriji preuzimanja"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Omogućuje aplikaciji preuzimanje datoteka u predmemoriju preuzimanja koja se ne može automatski izbrisati kada upravitelj preuzimanja treba više prostora."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"preuzmi datoteke bez obavijesti"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Veličina zahtijeva Wi-Fi"</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 operatora"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Morate upotrijebiti Wi-Fi da biste dovršili ovo preuzimanje veličine <xliff:g id="SIZE">%s </xliff:g>. \n\nDodirnite tekst <xliff:g id="QUEUE_TEXT">%s </xliff:g> da biste pokrenuli preuzimanje sljedeći put kada se povežete s Wi-Fi mrežom."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Morate upotrijebiti Wi-Fi da biste dovršili ovo preuzimanje veličine <xliff:g id="SIZE">%1$s </xliff:g>. \n\nDodirnite tekst <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> da biste pokrenuli preuzimanje sljedeći put kada se povežete s Wi-Fi mrežom."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Staviti na čekanje za kasnije preuzimanje?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Pokretanje ovog preuzimanja od <xliff:g id="SIZE">%s </xliff:g> može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%s</xliff:g> da biste preuzeli pri sljedećem spajanju s Wi-Fi mrežom."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Pokretanje ovog preuzimanja od <xliff:g id="SIZE">%1$s </xliff:g> može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove.\n\n Dodirnite <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> da biste preuzeli pri sljedećem spajanju s Wi-Fi mrežom."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Redoslijed"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Odustani"</string>
<string name="button_start_now" msgid="792123674007840864">"Započni sad"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index 798be7e5..12cde01e 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Lehetővé teszi az alkalmazás számára a letöltéskezelő speciális funkcióinak elérését. A rosszindulatú alkalmazások kihasználhatják ezt a letöltések megzavarására és személyes adatok elérésére."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Letöltési értesítések küldése."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Lehetővé teszi az alkalmazás számára, hogy értesítést küldjön a befejezett letöltésekről. A rosszindulatú alkalmazások kihasználhatják ezt más, fájlokat letöltő alkalmazások megzavarására."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB-tár letöltéseit látja"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD-kártyára irányuló összes letöltés megtekintése"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Lehetővé teszi az alkalmazás számára az SD-kártyán található összes letöltés megtekintését, függetlenül attól, hogy melyik alkalmazás töltötte le azokat."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Hely lefoglalása a letöltési gyorsítótárban"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Az alkalmazás letölthet fájlokat a letöltési gyorsítótárba, amelyeket a letöltéskezelő nem törölhet automatikusan, ha helyre van szüksége."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"fájlok letöltése értesítés nélkül"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"A letöltéshez Wi-Fi kell"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Szünetel a háttérben."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"A letöltés túl nagy a szolgáltató hálózatához"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Wi-Fi szükséges a letöltés (<xliff:g id="SIZE">%s </xliff:g>) befejezéséhez. \n\nÉrintse meg a(z) <xliff:g id="QUEUE_TEXT">%s </xliff:g> lehetőséget a letöltés elindításához, ha majd Wi-Fi hálózathoz csatlakozik."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Wi-Fi szükséges a letöltés (<xliff:g id="SIZE">%1$s </xliff:g>) befejezéséhez. \n\nÉrintse meg a(z) <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> lehetőséget a letöltés elindításához, ha majd Wi-Fi hálózathoz csatlakozik."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Várólistára teszi későbbi letöltés céljából?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"A fájl (<xliff:g id="SIZE">%s </xliff:g>) letöltése miatt hamarabb lemerülhet az akku, megnőhet az adathasználat, így előfizetésétől függően egyéb költségei lehetnek.\n\n Érintse meg a(z) <xliff:g id="QUEUE_TEXT">%s</xliff:g> lehetőséget, ha Wi-Fihez csatlakozik."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"A fájl (<xliff:g id="SIZE">%1$s </xliff:g>) letöltése miatt hamarabb lemerülhet az akku, megnőhet az adathasználat, így előfizetésétől függően egyéb költségei lehetnek.\n\n Érintse meg a(z) <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> lehetőséget, ha Wi-Fihez csatlakozik."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Várólista"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Mégse"</string>
<string name="button_start_now" msgid="792123674007840864">"Indítás most"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index 506158b1..6a1d6a01 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարչի ընդլայնված գործառույթները: Վնասաբեր ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Ուղարկել ներբեռնման ծանուցումներ:"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Թույլատրում է հավելվածին ուղարկել ավարտված ներբեռնումների մասին ծանուցումներ: Վնասաբեր ծրագրերը կարող են օգտագործել սա՝ այլ ֆայլեր ներբեռնող ծրագրերը վնասելու համար:"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Տեսնել USB կրիչի բոլոր ներբեռնումները"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Տեսնել SD քարտի բոլոր ներբեռնումները"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Թույլատրում է հավելվածին տեսնել SD քարտի բոլոր ներբեռնումները` անտեսելով, թե որ հավելվածն է ներբեռնել դրանք:"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Խնայել ներբեռնման շտեմի տարածությունը"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Թույլատրում է հավելվածին ներբեռնել ֆայլերը ներբեռնման շտեմ, որոնք հնարավոր չէ ավտոմատ ջնջել, երբ ներբեռնման կառավարիչը հավելյալ ծավալի կարիք ունի:"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ներբեռնել ֆայլերը՝ առանց ծանուցման"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Ներբեռնման ծավալը պահանջում է Wi-Fi:"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Ընդմիջված է հետնաշերտում:"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Ներբեռնումը չափազանց մեծ է օպերատորի ցանցի համար"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Դուք պետք է օգտագործեք Wi-Fi՝ այս <xliff:g id="SIZE">%s </xliff:g> ներբեռնումն ավարտելու համար: \n\nՀպեք <xliff:g id="QUEUE_TEXT">%s </xliff:g>՝ սկսելու այս ներբեռնումը հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Դուք պետք է օգտագործեք Wi-Fi՝ այս <xliff:g id="SIZE">%1$s </xliff:g> ներբեռնումն ավարտելու համար: \n\nՀպեք <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>՝ սկսելու այս ներբեռնումը հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Հերթագրե՞լ ավելի ուշ ներբեռնելու համար:"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Այս <xliff:g id="SIZE">%s </xliff:g> ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք <xliff:g id="QUEUE_TEXT">%s</xliff:g> ստորև` այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Այս <xliff:g id="SIZE">%1$s </xliff:g> ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ստորև` այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Հերթագրել"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Չեղարկել"</string>
<string name="button_start_now" msgid="792123674007840864">"Սկսել հիմա"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 75a2eb70..945accc8 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Mengizinkan aplikasi mengakses fungsi lanjutan pengelola download. Aplikasi berbahaya dapat menggunakan ini untuk mengganggu download dan mengakses informasi pribadi."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Kirim pemberitahuan download."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Mengizinkan aplikasi mengirim pemberitahuan tentang download yang telah diselesaikan. Aplikasi berbahaya dapat menggunakan ini untuk mengacaukan aplikasi lain yang mendownload file."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Lihat semua download pada penyimpanan USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Melihat semua download pada kartu SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Mengizinkan apl melihat semua download ke kartu SD, terlepas apl apa yang mendownloadnya."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Ruang penyimpanan dalam cache download"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Mengizinkan apl mendownload file ke cache download yang tidak dapat dihapus secara otomatis saat pengelola download memerlukan lebih banyak ruang."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download file tanpa pemberitahuan"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Ukuran download memerlukan Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Dijeda di latar belakang."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download terlalu besar untuk jaringan operator"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Anda harus menggunakan Wi-Fi untuk menyelesaikan download <xliff:g id="SIZE">%s </xliff:g> ini. \n\nSentuh <xliff:g id="QUEUE_TEXT">%s </xliff:g> untuk memulai download ini saat Anda tersambung lagi ke jaringan Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Anda harus menggunakan Wi-Fi untuk menyelesaikan download <xliff:g id="SIZE">%1$s </xliff:g> ini. \n\nSentuh <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> untuk memulai download ini saat Anda tersambung lagi ke jaringan Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Antrekan untuk didownload nanti?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Memulai download <xliff:g id="SIZE">%s </xliff:g> ini sekarang dapat mempersingkat masa pakai baterai Anda dan/atau menyebabkan penggunaan berlebih dari sambungan data seluler, yang dapat berakibat dikenai tagihan oleh operator ponsel, tergantung paket data Anda.\n\n Sentuh <xliff:g id="QUEUE_TEXT">%s</xliff:g> untuk memulai download ini saat Anda tersambung lagi ke jaringan Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Memulai download <xliff:g id="SIZE">%1$s </xliff:g> ini sekarang dapat mempersingkat masa pakai baterai Anda dan/atau menyebabkan penggunaan berlebih dari sambungan data seluler, yang dapat berakibat dikenai tagihan oleh operator ponsel, tergantung paket data Anda.\n\n Sentuh <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> untuk memulai download ini saat Anda tersambung lagi ke jaringan Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Antrean"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Batal"</string>
<string name="button_start_now" msgid="792123674007840864">"Mulai sekarang"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index f85f2f2d..5b32888a 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Leyfir forritum að fá aðgang að ítarlegum eiginleikum niðurhalsstjórnunar. Spilliforrit geta notað þetta til að trufla niðurhal og fá aðgang að einkaupplýsingum."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Senda tilkynningar um niðurhal."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Leyfir forriti að senda tilkynningar um niðurhal sem er lokið. Spilliforrit geta notað þetta til að skapa rugling hjá öðrum forritum sem sækja skrár."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Sjá allt niðurhal í USB-geymslu"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Sjá allt niðurhal á SD-korti"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Leyfir forriti að sjá allt niðurhal á SD-korti, án tillits til þess hvaða forrit sótti skrárnar."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Taka frá pláss í skyndiminni niðurhals"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Leyfir forriti að sækja skrár í skyndiminni niðurhals sem ekki er hægt að hreinsa sjálfkrafa þegar niðurhalsstjórnun þarf meira pláss."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"sækja skrár án tilkynningar"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Stærðin krefst Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Í bið í bakgrunni."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Of stórt niðurhal fyrir kerfi símafyrirtækis"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Þú verður að nota Wi-Fi til að ljúka þessu <xliff:g id="SIZE">%s </xliff:g> niðurhali. \n\nÝttu á <xliff:g id="QUEUE_TEXT">%s </xliff:g> til að hefja þetta niðurhal næst þegar þú tengist Wi-Fi neti."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Þú verður að nota Wi-Fi til að ljúka þessu <xliff:g id="SIZE">%1$s </xliff:g> niðurhali. \n\nÝttu á <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> til að hefja þetta niðurhal næst þegar þú tengist Wi-Fi neti."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Setja í biðröð til að sækja síðar?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ef þetta <xliff:g id="SIZE">%s </xliff:g> niðurhal er hafið kann rafhlaðan að tæmast hraðar og/eða notkun farsímagagnatengingar að verða mjög mikil, sem kann að hafa í för með sér að símafyrirtækið þitt rukki þig aukalega, allt eftir áskrift.\n\n Ýttu á <xliff:g id="QUEUE_TEXT">%s</xliff:g> til að hefja þetta niðurhal næst þegar þú tengist Wi-Fi neti."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ef þetta <xliff:g id="SIZE">%1$s </xliff:g> niðurhal er hafið kann rafhlaðan að tæmast hraðar og/eða notkun farsímagagnatengingar að verða mjög mikil, sem kann að hafa í för með sér að símafyrirtækið þitt rukki þig aukalega, allt eftir áskrift.\n\n Ýttu á <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> til að hefja þetta niðurhal næst þegar þú tengist Wi-Fi neti."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Setja í biðröð"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Hætta við"</string>
<string name="button_start_now" msgid="792123674007840864">"Hefja núna"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 967ca509..a8a4b62a 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Consente all\'applicazione di accedere alle funzioni avanzate di gestione dei download. Le applicazioni dannose possono farne uso per disturbare i download e accedere a informazioni private."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Inviare notifiche di download."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Consente all\'applicazione di inviare notifiche relative ai download completati. Le applicazioni dannose possono farne uso per confondere altre applicazioni che scaricano file."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Tutti i download in archivio USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Visualizzazione di tutti i download sulla scheda SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Consente all\'applicazione di visualizzare tutti i download sulla scheda SD, a prescindere dall\'applicazione che li ha scaricati."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Conservazione spazio nella cache dei download"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Consente all\'applicazione di scaricare nella cache i file che non possono essere eliminati automaticamente quando a gestione dei download serve più spazio."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"download file senza notifica"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Wi-Fi richiesto per download"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"In pausa in background."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download troppo grande per rete operatore"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Devi utilizzare la rete Wi-Fi per completare questo download di <xliff:g id="SIZE">%s </xliff:g>. \n\nTocca <xliff:g id="QUEUE_TEXT">%s </xliff:g> per avviare il download la prossima volta che sei connesso a una rete Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Devi utilizzare la rete Wi-Fi per completare questo download di <xliff:g id="SIZE">%1$s </xliff:g>. \n\nTocca <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> per avviare il download la prossima volta che sei connesso a una rete Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Mettere in coda per scaricare più tardi?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Questo download di <xliff:g id="SIZE">%s </xliff:g> potrebbe ridurre la durata della batteria e/o causare un uso eccessivo della connessione dati mobile con conseguente addebito da parte dell\'operatore.\n\n Tocca <xliff:g id="QUEUE_TEXT">%s</xliff:g> per avviarlo quando sarai connesso a una rete Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Questo download di <xliff:g id="SIZE">%1$s </xliff:g> potrebbe ridurre la durata della batteria e/o causare un uso eccessivo della connessione dati mobile con conseguente addebito da parte dell\'operatore.\n\n Tocca <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> per avviarlo quando sarai connesso a una rete Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Metti in coda"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Annulla"</string>
<string name="button_start_now" msgid="792123674007840864">"Avvia adesso"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 8ed41165..ab41db9c 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"מאפשר לאפליקציה לגשת לפונקציות המתקדמות של מנהל ההורדות. אפליקציות זדוניות עלולות לנצל אפשרות זו כדי לשבש הורדות ולגשת למידע פרטי."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"שלח הודעות על הורדות."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"מאפשר לאפליקציה לשלוח הודעות לגבי הורדות שהסתיימו. אפליקציות זדוניות עלולות לנצל אפשרות זו כדי לבלבל אפליקציות אחרות המורידות קבצים."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"‏הצג את כל ההורדות לאמצעי אחסון מסוג USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"‏הצג את כל ההורדות לכרטיס SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"‏מאפשר לאפליקציה לראות את כל ההורדות לכרטיס ה-SD, בלי קשר לאפליקציה שהורידה אותן."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"שמור מקום במטמון ההורדות"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"מאפשר לאפליקציה להוריד קבצים למטמון ההורדות שלא ניתן למחוק באופן אוטומטי כאשר דרוש למנהל ההורדות שטח נוסף."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"הורדת קבצים ללא התראה"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"‏גודל ההורדה מחייב חיבור Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"מושהה ברקע."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ההורדה גדולה מדי לרשת המפעיל"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"‏עליך להשתמש ב-Wi-Fi כדי להשלים את ההורדה שגודלה <xliff:g id="SIZE">%s </xliff:g>. \n \n גע ב-<xliff:g id="QUEUE_TEXT">%s </xliff:g> כדי להפעיל את ההורדה בפעם הבאה שתתחבר לרשת Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"‏עליך להשתמש ב-Wi-Fi כדי להשלים את ההורדה שגודלה <xliff:g id="SIZE">%1$s </xliff:g>. \n \n גע ב-<xliff:g id="QUEUE_TEXT">%2$s </xliff:g> כדי להפעיל את ההורדה בפעם הבאה שתתחבר לרשת Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"להוסיף לתור כדי להוריד מאוחר יותר?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"‏הפעלת הורדה זו (<xliff:g id="SIZE">%s </xliff:g>) עשויה לקצר את חיי הסוללה שלך ו/או לגרום לניצול מופרז של חיבור הנתונים הנייד שלך, אשר עשוי להיות כרוך בחיוב מצד ספק השירות הנייד שלך, בהתאם לתוכנית הנתונים הרלוונטית.\n\nגע ב-<xliff:g id="QUEUE_TEXT">%s</xliff:g> כדי להתחיל בהורדה בפעם הבאה שתתחבר לרשת Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"‏הפעלת הורדה זו (<xliff:g id="SIZE">%1$s </xliff:g>) עשויה לקצר את חיי הסוללה שלך ו/או לגרום לניצול מופרז של חיבור הנתונים הנייד שלך, אשר עשוי להיות כרוך בחיוב מצד ספק השירות הנייד שלך, בהתאם לתוכנית הנתונים הרלוונטית.\n\nגע ב-<xliff:g id="QUEUE_TEXT">%2$s</xliff:g> כדי להתחיל בהורדה בפעם הבאה שתתחבר לרשת Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"תור"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ביטול"</string>
<string name="button_start_now" msgid="792123674007840864">"התחל כעת"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index e048aecd..efa9ed24 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ダウンロードマネージャーの高度な機能にアクセスすることをアプリに許可します。この許可を悪意のあるアプリに利用されると、ダウンロードに深刻な影響が生じたり個人情報にアクセスされたりする恐れがあります。"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ダウンロード通知を送信します。"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"ダウンロード完了通知の送信をアプリに許可します。この許可を悪意のあるアプリに利用されると、ファイルをダウンロードする他のアプリの処理が妨害される恐れがあります。"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USBストレージへの全ダウンロードを見る"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SDカードへのダウンロードをすべて参照する"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"ダウンロードしたアプリに関係なく、SDカードへのすべてのダウンロードの参照をアプリに許可します。"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ダウンロードキャッシュの領域を予約"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ダウンロードマネージャーで領域が不足しているときに、自動的に削除できないダウンロードキャッシュへのファイルのダウンロードをアプリに許可します。"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"通知なしでファイルをダウンロードする"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Wi-Fi必須のサイズです。"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"バックグラウンド一時停止"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ダウンロードするサイズが大きすぎます"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"この<xliff:g id="SIZE">%s </xliff:g>のダウンロードを完了するにはWi-Fiを使用する必要があります。\n\n[<xliff:g id="QUEUE_TEXT">%s </xliff:g>]をタップすると、次回Wi-Fiネットワークに接続したときにこのダウンロードを開始します。"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"この<xliff:g id="SIZE">%1$s </xliff:g>のダウンロードを完了するにはWi-Fiを使用する必要があります。\n\n[<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>]をタップすると、次回Wi-Fiネットワークに接続したときにこのダウンロードを開始します。"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"キューに登録して後でダウンロードしますか?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"この<xliff:g id="SIZE">%s </xliff:g>のダウンロードを今すぐ行うと、電池消費量やデータ通信量が増え、通信プランによっては携帯通信会社の料金が発生します。\n\n[<xliff:g id="QUEUE_TEXT">%s</xliff:g>]をタップすると、次回Wi-Fiネットワーク接続時にダウンロードを行います。"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"この<xliff:g id="SIZE">%1$s </xliff:g>のダウンロードを今すぐ行うと、電池消費量やデータ通信量が増え、通信プランによっては携帯通信会社の料金が発生します。\n\n[<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>]をタップすると、次回Wi-Fiネットワーク接続時にダウンロードを行います。"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"キューに登録"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"キャンセル"</string>
<string name="button_start_now" msgid="792123674007840864">"今すぐ開始"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index f16b905f..37d2d5b2 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"მიეცით აპს ჩამოტვირთვის მენეჯერის გაუმჯობესებულ ფუნქციებზე წვდომის უფლება. ბოროტმოქმედმა აპებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ჩამოტვირთვის შეტყობინებების გაგზავნა."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"მიეცით აპს, უფლება, გააგზავნოს შეტყობინება დასრულებული ჩამოტვირთვების შესახებ. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"ყველა ჩამოტვირთვის USB მეხსიერებაში ნახვა"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"ყველა ჩამოტვირთვის SD ბარათზე ნახვა"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"მიეცით აპს უფლება, ნახოს ყველა ჩამოტვირთვა SD ბარათზე, განურჩევლად იმისა, თუ რომელმა აპმა ჩამოტვირთა ისინი."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ჩამოტვირთვის ქეშში სივრცის ამობრუნება"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"მიეცით აპს უფლება ჩამოტვირთოს ფაილები ჩამოტვირთულ ქეშში. მისი წაშლა ავტომატურად შეუძლებელია მაშინ, როდესაც ჩამოტვირთვის მენეჯერს მეტი სივრცე სჭირდება."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ფაილების ჩამოტვირთვა შეტყობინებების გარეშე"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ჩამოტვირთვის ზომა ითხოვს Wi-Fi-ს."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"უკანა ფონზე დაპაუზებული."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ჩამოტვირთვა ოპერატორის ქსელისთვის ძალიან დიდია"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ამ <xliff:g id="SIZE">%s </xliff:g> ჩამოტვირთვის განსახორციელებლად უნდა გამოიყენოთ WiFi. \n\nშეეხეთ <xliff:g id="QUEUE_TEXT">%s </xliff:g>, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ამ <xliff:g id="SIZE">%1$s </xliff:g> ჩამოტვირთვის განსახორციელებლად უნდა გამოიყენოთ WiFi. \n\nშეეხეთ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ჩააყენებთ ჩამოტვირთვების რიგში?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ამ <xliff:g id="SIZE">%s </xliff:g> ჩამოტვირთვის დაწყება ახლა შეამცირებს თქვენი ელემენტის სიცოცხლეს და/ან გამოიწვევს თქვენი მობილური ინტერნეტის ინტენსიურ გამოყენებას. ეს თავისთავად განაპირობებს თქვენი მობილური ოპერატორისთვის შესაბამისი საფასურის გადახდას თქვენი ინტერნეტ გეგმიდან გამომდინარე. \n\n შეეხეთ <xliff:g id="QUEUE_TEXT">%s</xliff:g>, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ამ <xliff:g id="SIZE">%1$s </xliff:g> ჩამოტვირთვის დაწყება ახლა შეამცირებს თქვენი ელემენტის სიცოცხლეს და/ან გამოიწვევს თქვენი მობილური ინტერნეტის ინტენსიურ გამოყენებას. ეს თავისთავად განაპირობებს თქვენი მობილური ოპერატორისთვის შესაბამისი საფასურის გადახდას თქვენი ინტერნეტ გეგმიდან გამომდინარე. \n\n შეეხეთ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"რიგი"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"გაუქმება"</string>
<string name="button_start_now" msgid="792123674007840864">"დაწყება ახლავე"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index 937b978c..4de53653 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Қолданбаға жүктеу менеджерінің қосымша функцияларына кіру мүмкіндігін береді. Залалды қолданбалар бұны жүктеулерге кедергі жасау үшін және жеке ақпаратқа кіру үшін қолдануы мүмкін."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Жүктеу хабарларын жіберу."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Қолданбаға аяқталған жүктеулер туралы хабар жіберу мүмкіндігін береді. Залалды қолданбалар бұны файл жүктейтін басқа қолданбаларды шатастыру үшін қолдану мүмкін."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB жадындағы барлық жүктеулерді көру"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD картадағы барлық жүктеулерді көру"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Қолданбаға қандай қолданба жүктелгеніне қарамастан SD картадағы барлық жүктеулерді көру мүмкіндігін береді."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Жүктеу кэшінде орын сақтау"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Қолданбаға файлдарды жүктеу кэшіне жүктеу мүмкіндігін береді, ол жүктеу менеджеріне көбірек орын қажет болғанда автоматты түрде жойылмайды."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"файлдарды ескертусіз жүктеу"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Жүктеу өлшемі Wi-Fi байланысын қажет етеді."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Артқы шепте тоқтатылған."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Амалдық желі үшін жүктеу тым үлкен"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%s </xliff:g> өлшемді жүктеуді аяқтау үшін сізге Wi-Fi қажет. Келесі жолы Wi-Fi желісіне қосылғанда осы жүктеуді бастау үшін \n\nТүртіңіз <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%1$s </xliff:g> өлшемді жүктеуді аяқтау үшін сізге Wi-Fi қажет. Келесі жолы Wi-Fi желісіне қосылғанда осы жүктеуді бастау үшін \n\nТүртіңіз <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Кейінірек жүктеу үшін кезекке қойылсын ба?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%s </xliff:g> қазір жүктей бастау батарея ұзақтығын азайтуы және/немесе ұялы дерек байланысын тым көп қолдануға соқтыруы мүмкін, нәтижесінде дерекқор жоспарыңызға қарай ұялы операторыңыз қосымша төлем талап ету мүмкін.\nКелесі жолы Wi-Fi желісіне қосылғанда осы жүктеуді бастау үшін \n Түртіңіз <xliff:g id="QUEUE_TEXT">%s</xliff:g>."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%1$s </xliff:g> қазір жүктей бастау батарея ұзақтығын азайтуы және/немесе ұялы дерек байланысын тым көп қолдануға соқтыруы мүмкін, нәтижесінде дерекқор жоспарыңызға қарай ұялы операторыңыз қосымша төлем талап ету мүмкін.\nКелесі жолы Wi-Fi желісіне қосылғанда осы жүктеуді бастау үшін \n Түртіңіз <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Кезек"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Бас тарту"</string>
<string name="button_start_now" msgid="792123674007840864">"Қазір бастау"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index e3d8a852..af9757a4 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​មុខងារ​កម្រិត​ខ្ពស់​របស់​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ផ្ញើ​ព័ត៌មាន​ការ​ទាញ​យក។"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​ផ្ញើ​ការ​ជូនដំណឹង​អំពី​ការ​បញ្ចប់​ការ​ទាញ​យក។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​រារាំង​កម្មវិធី​ទាញ​យក​ឯកសារ​ផ្សេងទៀត។"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​កាត​អេសឌី"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​​មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ការ​អេសឌី ប្រសិនបើ​គ្មាន​កម្មវិធី​ទាញ​យក​វា។"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"បម្រុងទុក​ទំហំ​នៅ​ក្នុង​ឃ្លាំង​ទាញ​យក"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​ទៅកាន់​ឃ្លាំង​ទាញ​យក ដែល​មិន​អាច​លុប​ដោយ​ស្វ័យប្រវត្តិ ពេល​កម្មវិធី​ទាញ​យក​ត្រូវការ​ទំហំ​ច្រើន។"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ទាញ​យក​ឯកសារ​ដោយ​មិន​បាច់​ជូនដំណឹង"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ទំហំ​ការ​ទាញ​យក​ត្រូវការ​វ៉ាយហ្វាយ។"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"បាន​ផ្អាក​នៅ​ផ្ទៃ​ខាងក្រោយ។"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ការ​ទាញ​យក​គឺ​ធំ​ពេក​សម្រាប់​បណ្ដាញ​ប្រតិបត្តិករ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"អ្នក​ត្រូវតែ​ប្រើ​វ៉ាយហ្វាយ​ដើម្បី​បញ្ចប់​ការ​ទាញ​យក <xliff:g id="SIZE">%s </xliff:g> ។ \n\nប៉ះ <xliff:g id="QUEUE_TEXT">%s </xliff:g> ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"អ្នក​ត្រូវតែ​ប្រើ​វ៉ាយហ្វាយ​ដើម្បី​បញ្ចប់​ការ​ទាញ​យក <xliff:g id="SIZE">%1$s </xliff:g> ។ \n\nប៉ះ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ដាក់​ជា​ជួរ​ដើម្បី​ទាញ​យក​បន្ទាប់?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ចាប់ផ្ដើម​ការ​ទាញ​យក <xliff:g id="SIZE">%s </xliff:g> ឥឡូវ​អាច​បណ្ដាលឲ្យ​ថ្ម​របស់​អ្នក​មាន​អាយុ​ខ្លី និង/ឬ​បង្ហាញ​ថា​លើស​ការ​ប្រើ​នៃ​តំណ​ភ្ជាប់​ទិន្នន័យ​ទូរស័ព្ទ​របស់​អ្នក ដែល​អាច​គិត​ប្រាក់​ដោយ​ប្រតិបត្តិករ​ទូរស័ព្ទ​អាស្រ័យ​តាម​គម្រោង​ទិន្នន័យ​របស់​អ្នក។\n\n ប៉ះ <xliff:g id="QUEUE_TEXT">%s</xliff:g> ខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ចាប់ផ្ដើម​ការ​ទាញ​យក <xliff:g id="SIZE">%1$s </xliff:g> ឥឡូវ​អាច​បណ្ដាលឲ្យ​ថ្ម​របស់​អ្នក​មាន​អាយុ​ខ្លី និង/ឬ​បង្ហាញ​ថា​លើស​ការ​ប្រើ​នៃ​តំណ​ភ្ជាប់​ទិន្នន័យ​ទូរស័ព្ទ​របស់​អ្នក ដែល​អាច​គិត​ប្រាក់​ដោយ​ប្រតិបត្តិករ​ទូរស័ព្ទ​អាស្រ័យ​តាម​គម្រោង​ទិន្នន័យ​របស់​អ្នក។\n\n ប៉ះ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ជួរ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"បោះ​បង់​"</string>
<string name="button_start_now" msgid="792123674007840864">"ចាប់ផ្ដើម​ឥឡូវ"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index e15373f7..68ee634b 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ಡೌನ್‌ಲೋಡ್‌ ನಿರ್ವಾಹಕದ ಸುಧಾರಿತ ಕಾರ್ಯಚಟುವಟಿಕೆಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ. ದುರುದ್ದೇಶಪೂರಿತ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು, ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ಭಗ್ನಗೊಳಿಸಲು ಹಾಗೂ ಖಾಸಗಿ ಮಾಹಿತಿಯನ್ನು ಪ್ರವೇಶಿಸಲು ಇದನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ಡೌನ್‌ಲೋಡ್‌ ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸು."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"ಪೂರ್ಣಗೊಂಡಿರುವ ಡೌನ್‌ಲೋಡ್‌ಗಳ ಕುರಿತು ಅಧಿಸೂಚನೆಗಳನ್ನು ಕಳುಹಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ. ದುರುದ್ದೇಶಪೂರಿತ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು, ಡೌನ್‌ಲೋಡ್ ಮಾಡುವ ಇತರ ಅಪ್ಲಿಕೇಶನ್‌ಗಳಲ್ಲಿ ಗೊಂದಲವುಂಟು ಮಾಡಲೋಸುಗ ಇದನ್ನು ಬಳಸಿಕೊಳ್ಳಬಹುದು."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB ಸಂಗ್ರಹಣೆಯಲ್ಲಿನ ಎಲ್ಲ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD ಕಾರ್ಡ್‌ನಲ್ಲಾದ ಎಲ್ಲ ಡೌನ್‌ಲೋಡ್‌ಗಳನ್ನು ವೀಕ್ಷಿಸಿ"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"ಯಾವ ಅಪ್ಲಿಕೇಶನ್‌ ಆದರೂ ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಿರಲಿ, SD ಕಾರ್ಡ್‌ನಲ್ಲಾದ ಆ ಎಲ್ಲಾ ಡೌನ್‌ಲೋಡ್‌‌ಗಳನ್ನ ವೀಕ್ಷಿಸಲು ಅಪ್ಲಿಕೇಶನ್‌ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ಡೌನ್‌ಲೋಡ್‌ ಕ್ಯಾಷ್‌ನಲ್ಲಿ ಸ್ಥಳವನ್ನು ಮೀಸಲಿರಿಸಿ"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ಡೌನ್‌ಲೊಡ್‌ ನಿರ್ವಾಹಕಕ್ಕೆ ಹೆಚ್ಚಿನ ಸ್ಥಳಾವಕಾಶದ ಅಗತ್ಯವಿರುವ ಸಂದರ್ಭದಲ್ಲಿ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಅಳಿಸಲಾಗದಿರುವ ಫೈಲ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್‌ ಕ್ಯಾಷ್‌ಗೆ ಡೌನ್‌ಲೋಡ್ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿ ನೀಡಲಾಗುತ್ತದೆ."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ಅಧಿಸೂಚನೆ ಇಲ್ಲದೆಯೇ ಫೈಲ್‌ಗಳನ್ನು ಡೌನ್‌ಲೋಡ್‌‌ ಮಾಡಿ"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ಡೌನ್‌ಲೋಡ್‌ ಗಾತ್ರಕ್ಕೆ ವೈ-ಫೈ ಅಗತ್ಯವಿದೆ."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"ಹಿನ್ನೆಲೆಯಲ್ಲಿ ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ಆಪರೇಟರ್‌ ನೆಟ್‌ವರ್ಕ್‌ಗೆ ಡೌನ್‌ಲೋಡ್ ತುಂಬಾ ದೊಡ್ಡದಾಗಿದೆ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ನೀವು ಈ <xliff:g id="SIZE">%s </xliff:g> ಡೌನ್‌ಲೋಡ್‌ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನೀವು ವೈ-ಫೈ ಅನ್ನು ಬಳಸಬೇಕು. \n\nನೀವು ಸಂಪರ್ಕಿಸಿದ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ಮುಂದಿನ ಬಾರಿ ಈ ಡೌನ್‌ಲೋಡ್‌ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು <xliff:g id="QUEUE_TEXT">%s </xliff:g> ಸ್ಪರ್ಶಿಸಿ."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ನೀವು ಈ <xliff:g id="SIZE">%1$s </xliff:g> ಡೌನ್‌ಲೋಡ್‌ ಅನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ನೀವು ವೈ-ಫೈ ಅನ್ನು ಬಳಸಬೇಕು. \n\nನೀವು ಸಂಪರ್ಕಿಸಿದ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ಮುಂದಿನ ಬಾರಿ ಈ ಡೌನ್‌ಲೋಡ್‌ ಅನ್ನು ಪ್ರಾರಂಭಿಸಲು <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ಸ್ಪರ್ಶಿಸಿ."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ನಂತರದಲ್ಲಿ ಡೌನ್‌ಲೋಡ್‌ ಮಾಡಲು ಸರದಿಯಲ್ಲಿರಿಸುವುದೇ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ಇದೀಗ ಈ <xliff:g id="SIZE">%s </xliff:g> ಡೌನ್‌ಲೋಡ್‌ ಆರಂಭಗೊಂಡು ನಿಮ್ಮ ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ ಮತ್ತು/ಅಥವಾ ನಿಮ್ಮ ಮೊಬೈಲ್‌ ಡೇಟಾ ಸಂಪರ್ಕದ ಅತಿಯಾದ ಬಳಕೆಗೆ ಕಾರಣವಾಗಬಹುದು, ನಿಮ್ಮ ಡೇಟಾ ಯೋಜನೆಯನ್ನು ಅವಲಂಬಿಸಿ ನಿಮ್ಮ ಮೊಬೈಲ್ ಆಪರೇಟರ್ ಮೂಲಕ ಶುಲ್ಕಗಳನ್ನು ವಿಧಿಸುವುದಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ.\n\n ನೀವು ಸಂಪರ್ಕಿಸಿದ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ಮುಂದಿನ ಬಾರಿ ಈ ಡೌನ್‌ಲೋಡ್‌ ಪ್ರಾರಂಭಿಸಲು <xliff:g id="QUEUE_TEXT">%s</xliff:g> ಸ್ಪರ್ಶಿಸಿ."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ಇದೀಗ ಈ <xliff:g id="SIZE">%1$s </xliff:g> ಡೌನ್‌ಲೋಡ್‌ ಆರಂಭಗೊಂಡು ನಿಮ್ಮ ಬ್ಯಾಟರಿ ಬಾಳಿಕೆ ಮತ್ತು/ಅಥವಾ ನಿಮ್ಮ ಮೊಬೈಲ್‌ ಡೇಟಾ ಸಂಪರ್ಕದ ಅತಿಯಾದ ಬಳಕೆಗೆ ಕಾರಣವಾಗಬಹುದು, ನಿಮ್ಮ ಡೇಟಾ ಯೋಜನೆಯನ್ನು ಅವಲಂಬಿಸಿ ನಿಮ್ಮ ಮೊಬೈಲ್ ಆಪರೇಟರ್ ಮೂಲಕ ಶುಲ್ಕಗಳನ್ನು ವಿಧಿಸುವುದಕ್ಕೆ ಕಾರಣವಾಗುತ್ತವೆ.\n\n ನೀವು ಸಂಪರ್ಕಿಸಿದ ವೈ-ಫೈ ನೆಟ್‌ವರ್ಕ್‌ನಿಂದ ಮುಂದಿನ ಬಾರಿ ಈ ಡೌನ್‌ಲೋಡ್‌ ಪ್ರಾರಂಭಿಸಲು <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ಸ್ಪರ್ಶಿಸಿ."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ಸರದಿ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ರದ್ದುಮಾಡಿ"</string>
<string name="button_start_now" msgid="792123674007840864">"ಈಗ ಪ್ರಾರಂಭಿಸಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index cc383ff6..46d96fa0 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"앱이 다운로드 관리자의 고급 기능에 액세스할 수 있도록 허용합니다. 이 경우 악성 앱이 다운로드를 중단시키고 개인 정보에 액세스할 수 있습니다."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"다운로드 알림을 전송합니다."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"다운로드가 완료되면 앱이 알림을 보내도록 허용합니다. 이 경우 악성 앱이 파일을 다운로드하는 다른 앱에 혼란을 야기할 수 있습니다."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB 저장소에 다운로드한 전체 항목 보기"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD 카드에 다운로드한 모든 항목 보기"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"어떤 앱을 사용하여 다운로드했는지에 관계없이 SD 카드에 다운로드한 모든 항목을 앱에 표시할 수 있도록 허용합니다."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"다운로드 캐시에 공간 보유"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"다운로드 관리자가 추가 공간이 필요해도 앱이 자동으로 삭제되지 않는 다운로드 캐시에 파일을 다운로드할 수 있도록 허용합니다."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"알림 없이 파일 다운로드"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"크기가 너무 커서 Wi-Fi로 다운로드해야 합니다."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"백그라운드에서 일시중지되었습니다."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"너무 커서 운영자 네트워크로 다운로드할 수 없습니다."</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%s </xliff:g> 다운로드를 완료하려면 Wi-Fi를 사용해야 합니다.\n\n다음에 Wi-Fi 네트워크에 연결했을 때 다운로드하려면 <xliff:g id="QUEUE_TEXT">%s </xliff:g>을(를) 터치하세요."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%1$s </xliff:g> 다운로드를 완료하려면 Wi-Fi를 사용해야 합니다.\n\n다음에 Wi-Fi 네트워크에 연결했을 때 다운로드하려면 <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>을(를) 터치하세요."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"나중에 다운로드하도록 대기 하시겠습니까?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"지금 <xliff:g id="SIZE">%s </xliff:g> 크기의 파일을 다운로드하면 배터리 수명이 단축되거나 모바일 데이터 연결 사용량이 초과될 수 있습니다. 이로 인해 데이터 요금제에 따라 이동통신사에서 요금을 부과할 수 있습니다.\n\n다음에 Wi-Fi 네트워크에 연결되었을 때 다운로드하려면 아래의 <xliff:g id="QUEUE_TEXT">%s</xliff:g>을(를) 터치하세요."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"지금 <xliff:g id="SIZE">%1$s </xliff:g> 크기의 파일을 다운로드하면 배터리 수명이 단축되거나 모바일 데이터 연결 사용량이 초과될 수 있습니다. 이로 인해 데이터 요금제에 따라 이동통신사에서 요금을 부과할 수 있습니다.\n\n다음에 Wi-Fi 네트워크에 연결되었을 때 다운로드하려면 아래의 <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>을(를) 터치하세요."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"대기열"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"취소"</string>
<string name="button_start_now" msgid="792123674007840864">"지금 시작"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index d1d62890..a278ca54 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Колдонмого жүктөө менежеринин озуккан функцияларына жетүү уруксатын берет. Зыяндуу колдонмолор муну колдонуп, жүктөөлөрдү үзгүлтүккө учуратышы жана жеке маалыматтарга жетиши мүмкүн."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Жүктөө эскертмелерин жөнөтүү."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Колдонмо аяктаган жүктөөлөр тууралуу эскертмелерди жөнөтүүгө уруксат алат. Зыяндуу колдонмолор муну башка файл жүктөөчү колдонмолорго тоскоол кылыш үчүн колдонушу мүмкүн."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB сактагычка болгон жүктөөлөрдү көрүү"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD-картага болгон жүктөөлөрдү көрүү"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Колдонмого, муну кайсы колдонмо аткарып жатканына карабай, SD-картага түшүрүлүп жаткан бардык жүктөөлөрдү көрүү уруксатын берет."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Жүктөө кэшинен орун ээлөө"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Колдонмого, жүктөө менежерине көбүрөөк орун керек болсо, автоматтык тазалана турган файлдарды жүктөө кэшине жүктөөгө уруксат берет."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"файлдарды эскертмесиз жүктөө"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Чоң файл, Wi-Fi керек."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Фондо тыныгууда турат."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Мобилдик түйүн үчүн, бул өтө чоң жүктөө"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Өлчөмү <xliff:g id="SIZE">%s </xliff:g> болгон бул жүктөөнү Wi-Fi менен аткарышыңыз керек. \n\nБул жүктөөнү сиз кийин Wi-Fi түйүнгө туташканда башташ үчүн, <xliff:g id="QUEUE_TEXT">%s </xliff:g> тийип коюңуз."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Өлчөмү <xliff:g id="SIZE">%1$s </xliff:g> болгон бул жүктөөнү Wi-Fi менен аткарышыңыз керек. \n\nБул жүктөөнү сиз кийин Wi-Fi түйүнгө туташканда башташ үчүн, <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> тийип коюңуз."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Кийин жүктөө кезегине тургузулсунбу?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Өлчөмү <xliff:g id="SIZE">%s </xliff:g> болгон жүктөөнү азыр баштасаңыз, батарейиңиздин өмүрү кыскарышы жана/же мобилдик интернет трафиги өтө көп сарпталып, тарифтик планыңызга жараша, операторуңуз сизден төлөм алышы мүмкүн.\n\n Бул жүктөөнү сиз кийин Wi-Fi түйүнгө туташканда башташ үчүн, <xliff:g id="QUEUE_TEXT">%s</xliff:g> тийип коюңуз."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Өлчөмү <xliff:g id="SIZE">%1$s </xliff:g> болгон жүктөөнү азыр баштасаңыз, батарейиңиздин өмүрү кыскарышы жана/же мобилдик интернет трафиги өтө көп сарпталып, тарифтик планыңызга жараша, операторуңуз сизден төлөм алышы мүмкүн.\n\n Бул жүктөөнү сиз кийин Wi-Fi түйүнгө туташканда башташ үчүн, <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> тийип коюңуз."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Кезекке тургузуу"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Токтотуу"</string>
<string name="button_start_now" msgid="792123674007840864">"Азыр баштоо"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index 8280075e..cf673125 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ສົ່ງການແຈ້ງເຕືອນການດາວໂຫລດ."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"ອະນຸຍາດໃຫ້ແອັບຯ ສົ່ງການແຈ້ງເຕືອນເມື່ອດາວໂຫລດສຳເລັດແລ້ວ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ສ້າງຄວາມສັບສົນໃຫ້ແອັບຯ ອື່ນໆທີ່ດາວໂຫລດໄຟລ໌ໄດ້."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"ເບິ່ງການດາວໂຫລດທັງໝົດໃນບ່ອນຈັດເກັບຂໍ້ມູນ USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"ເບິ່ງການດາວໂຫລດທັງໝົດໃນ SD card"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ເຫັນການດາວໂຫລດໃນ SD ກາດທັງໝົດ, ໂດຍບໍ່ກ່ຽວວ່າມັນດາວໂຫລດມາຈາກແອັບຯໃດ."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ເນື້ອທີ່ສະຫງວນໃນບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ອະນຸຍາດໃຫ້ແອັບຯ ດາວໂຫລດໄຟລ໌ໄປຍັງບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ, ທີ່ບໍ່ສາມາດລຶບໂດຍອັດຕະໂນມັດ ຫາກໂຕຈັດການການດາວໂຫລດຕ້ອງການພື້ນທີ່ເພີ່ມ."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ດາວໂຫລດໄຟລ໌ໂດຍບໍ່ແຈ້ງເຕືອນ"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ຂະຫນາດການດາວໂຫຼດຕ້ອງໃຊ້ການເຊື່ອມຕໍ່ Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"ຢຸດຊົ່ວຄາວໃນເບື້ອງຫຼັງແລ້ວ."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ການດາວໂຫລດໃຫຍ່ເກີນໄປທີ່ຈະດາວໂຫລດຜ່ານລະບົບອິນເຕີເນັດມືຖື"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ທ່ານຕ້ອງໃຊ້ Wi-Fi ເພື່ອດາວໂຫລດໄຟລ໌ຂະໜາດ <xliff:g id="SIZE">%s </xliff:g> ນີ້. \n \n ແຕະທີ່ <xliff:g id="QUEUE_TEXT">%s </xliff:g> ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ທ່ານຕ້ອງໃຊ້ Wi-Fi ເພື່ອດາວໂຫລດໄຟລ໌ຂະໜາດ <xliff:g id="SIZE">%1$s </xliff:g> ນີ້. \n \n ແຕະທີ່ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ເຂົ້າຄິວເພື່ອດາວໂຫລດໃນພາຍຫຼັງ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ການດາວໂຫລດໄຟລ໌ໃຫຍ່ຂະໜາດ <xliff:g id="SIZE">%s </xliff:g> ນີ້ ອາດເຮັດອາຍຸແບັດເຕີຣີຂອງທ່ານສັ້ນລົງ ຫຼື ນຳໃຊ້ຂໍ້ມູນການເຊື່ອມຕໍ່ຂໍ້ມູນຜ່ານມືຖືຫຼາຍ, ເຊິ່ງເຮັດໃຫ້ທ່ານອາດຕ້ອງເສຍຄ່າບໍລິການແພງຂຶ້ນ.\n\n ສຳຜັດ <xliff:g id="QUEUE_TEXT">%s</xliff:g> ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ການດາວໂຫລດໄຟລ໌ໃຫຍ່ຂະໜາດ <xliff:g id="SIZE">%1$s </xliff:g> ນີ້ ອາດເຮັດອາຍຸແບັດເຕີຣີຂອງທ່ານສັ້ນລົງ ຫຼື ນຳໃຊ້ຂໍ້ມູນການເຊື່ອມຕໍ່ຂໍ້ມູນຜ່ານມືຖືຫຼາຍ, ເຊິ່ງເຮັດໃຫ້ທ່ານອາດຕ້ອງເສຍຄ່າບໍລິການແພງຂຶ້ນ.\n\n ສຳຜັດ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ຄິວ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ຍົກເລີກ"</string>
<string name="button_start_now" msgid="792123674007840864">"ເລີ່ມດຽວນີ້"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 25de4294..a0f89eed 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Leidžiama programai pasiekti išplėstines atsisiuntimų tvarkytuvės funkcijas. Kenkėjiškos programos gali naudoti šią funkciją atsisiuntimams stabdyti ir asmeninei informacijai gauti."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Siųsti atsisiuntimo pranešimus."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Leidžiama programai siųsti pranešimus apie baigtus atsisiuntimus. Kenkėjiškos programos gali naudoti šią funkciją, kad supainiotų kitas programas, kurias naudojant siunčiami failai."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Žr. visus atsis. į USB atm."</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Žiūrėti visus atsisiuntimus į SD kortelę"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Leidžiama programai matyti visus atsisiuntimus į SD kortelę, neatsižvelgiant į tai, kokia programa jie buvo atsiųsti."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervuoti vietą atsisiuntimo talpykloje"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Leidžiama programai atsisiųsti failus į atsisiuntimo talpyklą, kurios negalima automatiškai ištrinti, kai atsisiuntimo tvarkytuvei prireikia daugiau vietos."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"atsisiųsti failus be pranešimo"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Did. f., reikia „Wi-Fi“."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pristabdyta fone."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Atsisiuntimas per didelis operatoriaus tinklui"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Jei norite baigti šį <xliff:g id="SIZE">%s </xliff:g> atsisiuntimą, turite naudoti „Wi-Fi“. \n\nPalieskite <xliff:g id="QUEUE_TEXT">%s </xliff:g>, jei norite pradėti šį atsisiuntimą kitą kartą prisijungę prie „Wi-Fi“."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Jei norite baigti šį <xliff:g id="SIZE">%1$s </xliff:g> atsisiuntimą, turite naudoti „Wi-Fi“. \n\nPalieskite <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, jei norite pradėti šį atsisiuntimą kitą kartą prisijungę prie „Wi-Fi“."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Įtraukti į eilę, norint vėliau atsisiųsti?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Siunč. šį <xliff:g id="SIZE">%s </xliff:g> failą eikv. daug energ. ir (arba) mob. duom., todėl pagal naud. duom. planą gali būti taik. oper. mokesč.\n\n Palies. <xliff:g id="QUEUE_TEXT">%s</xliff:g>, jei nor. siųsti šį failą kitą k. prisij. prie „Wi-Fi“."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Siunč. šį <xliff:g id="SIZE">%1$s </xliff:g> failą eikv. daug energ. ir (arba) mob. duom., todėl pagal naud. duom. planą gali būti taik. oper. mokesč.\n\n Palies. <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, jei nor. siųsti šį failą kitą k. prisij. prie „Wi-Fi“."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Eilė"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Atšaukti"</string>
<string name="button_start_now" msgid="792123674007840864">"Pradėti dabar"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index 677214a5..bb08202b 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Ļauj lietotnei piekļūt lejupielāžu pārvaldnieka papildu funkcijām. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai traucētu lejupielādes un piekļūtu privātai informācijai."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Lejupielāžu paziņojumu sūtīšana."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Ļauj lietotnei sūtīt paziņojumus par pabeigtām lejupielādēm. Ļaunprātīgas lietotnes var izmantot šo atļauju, lai maldinātu citas lietotnes, kurās tiek lejupielādēti faili."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Sk. visas lejup. USB atm."</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Skatīt visus SD kartē lejupielādētos failus"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Ļauj lietotnei skatīt visas lejupielādes SD kartē neatkarīgi no lejupielādei izmantotās lietotnes."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervēt vietu lejupielādes kešatmiņā"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Ļauj lietotnei lejupielādes kešatmiņā lejupielādēt failus, kurus nevar automātiski izdzēst, ja lejupielāžu pārvaldniekam nepieciešama papildu vieta."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"lejupielādēt failus bez brīdinājuma"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Lejupiel. nepiec. Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pārtraukta fonā."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Lejupielāde ir pārāk liela operatora tīklam."</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Lai pabeigtu šo lejupielādi (<xliff:g id="SIZE">%s </xliff:g>), ir jāizmanto Wi-Fi. \n\nPieskarieties <xliff:g id="QUEUE_TEXT">%s </xliff:g>, lai sāktu šo lejupielādi, kad tiks izveidots savienojums ar Wi-Fi tīklu."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Lai pabeigtu šo lejupielādi (<xliff:g id="SIZE">%1$s </xliff:g>), ir jāizmanto Wi-Fi. \n\nPieskarieties <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, lai sāktu šo lejupielādi, kad tiks izveidots savienojums ar Wi-Fi tīklu."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Vai ievietot rindā, lai lejupielādētu vēlāk?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Sākot šo lejupiel. (<xliff:g id="SIZE">%s </xliff:g>) tūlīt, var samaz. akum. darb. ilg. un/vai var tikt pārslog. mob. datu pārr. sav. Ja sav. tiek pārslog., jūsu mob. sak. oper. var no jums iekasēt maksu atkarībā no izmant. datu pārr. apjoma plāna.\n\nPieskarieties <xliff:g id="QUEUE_TEXT">%s</xliff:g>, lai sāktu šo lejupiel., kad tiks izveidots sav. ar Wi-Fi tīklu."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Sākot šo lejupiel. (<xliff:g id="SIZE">%1$s </xliff:g>) tūlīt, var samaz. akum. darb. ilg. un/vai var tikt pārslog. mob. datu pārr. sav. Ja sav. tiek pārslog., jūsu mob. sak. oper. var no jums iekasēt maksu atkarībā no izmant. datu pārr. apjoma plāna.\n\nPieskarieties <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, lai sāktu šo lejupiel., kad tiks izveidots sav. ar Wi-Fi tīklu."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Rinda"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Atcelt"</string>
<string name="button_start_now" msgid="792123674007840864">"Sākt tūlīt"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 23cedeb8..11f03409 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Овозможува апликацијата да пристапи до напредни функции на менаџерот за преземање. Злонамерните апликации може да го искористат ова да ги попречат преземањата и да пристапат до приватни информации."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Испрати известувања за преземањата."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Овозможува апликацијата да испраќа известувања за завршени преземања. Злонамерните апликации може да го искористат ова да ги збунат другите апликации кои преземаат датотеки."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Виде ги сите преземања на USB меморијата"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Види ги сите преземања на СД картичката"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Овозможува апликацијата да ги види сите преземања на СД картичката, без разлика со која апликација се преземани."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Зачувај простор во преземаниот кеш"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Овозможува апликацијата да презема датотеки до преземан кеш кој не може автоматски да се избрише кога менаџерот за преземање бара повеќе простор."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"преземи датотеки без известување"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Големина за преземање бара Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Паузирано во заднина."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Премногу големо преземање за мрежата на операторот"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Мора да користите Wi-Fi да се заврши преземањето на овие <xliff:g id="SIZE">%s </xliff:g>\n\nДопрете <xliff:g id="QUEUE_TEXT">%s </xliff:g> да започне ова преземање следниот пат кога ќе бидете поврзани со Wi-Fi мрежа."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Мора да користите Wi-Fi да се заврши преземањето на овие <xliff:g id="SIZE">%1$s </xliff:g>\n\nДопрете <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> да започне ова преземање следниот пат кога ќе бидете поврзани со Wi-Fi мрежа."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Стави во ред на чекање да се преземе подоцна?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Преземањето <xliff:g id="SIZE">%s </xliff:g> го намалува векот на батеријата и/или води до прекумерна употреба на конекцијата и може да ви наплатат.\n\n Допрете <xliff:g id="QUEUE_TEXT">%s</xliff:g> да започне преземање следниот пат кога ќе бидете поврзани со Wi-Fi мрежа."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Преземањето <xliff:g id="SIZE">%1$s </xliff:g> го намалува векот на батеријата и/или води до прекумерна употреба на конекцијата и може да ви наплатат.\n\n Допрете <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> да започне преземање следниот пат кога ќе бидете поврзани со Wi-Fi мрежа."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Ред на чекање"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Откажи"</string>
<string name="button_start_now" msgid="792123674007840864">"Започни сега"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 90415054..c8af3132 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ഡൗൺലോഡ് മാനേജറുടെ വിപുലമായ പ്രവർത്തനങ്ങൾ ആക്‌സസ്സ് ചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഡൗൺലോഡുകൾ തടസ്സപ്പെടുത്താനും സ്വകാര്യ വിവരം ആക്‌സസ്സ് ചെയ്യാനും ദോഷകരമായ അപ്ലിക്കേഷനുകൾ ഇതുപയോഗിച്ചേക്കാം."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ഡൗൺലോഡ് അറിയിപ്പുകൾ അയയ്‌ക്കുക"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"പൂർത്തിയാക്കിയ ഡൗൺലോഡുകളെക്കുറിച്ച് അറിയിപ്പുകൾ അയയ്‌ക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഫയലുകൾ ഡൗൺലോഡുചെയ്യുന്ന മറ്റ് അപ്ലിക്കേഷനുകളെ ആശയക്കുഴപ്പത്തിലാക്കാൻ ക്ഷുദ്രകരമായ അപ്ലിക്കേഷനുകൾ ഇതുപയോഗിച്ചേക്കാം."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB സംഭരണത്തിലേക്കുള്ള എല്ലാ ഡൗൺലോഡുകളും കാണുക"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD കാർഡിലേക്കുള്ള എല്ലാ ഡൗൺലോഡുകളും കാണുക"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"SD കാർഡിലേക്കുള്ള എല്ലാ ഡൗൺലോഡുകളും, ഏത് അപ്ലിക്കേഷനാണ് അവയെ ഡൗൺലോഡുചെയ്‌തതെന്ന് പരിഗണിക്കാതെ തന്നെ, കാണാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ഡൗൺലോഡ് കാഷെയിൽ ഇടം സംഭരിക്കുക"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ഡൗൺലോഡ് കാഷെയിലേക്ക് ഫയലുകൾ ഡൗണ്‍ലോഡ് ചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു, ഡൗൺലോഡ് മാനേജർക്ക് കൂടുതൽ ഇടം ആവശ്യമായി വരുമ്പോൾ ഇത് സ്വമേധയാ ഇല്ലാതാകില്ല."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"അറിയിപ്പില്ലാതെ ഫയലുകൾ ഡൗൺലോഡുചെയ്യുക"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ഡൗൺലോഡിന് WiFi ആവശ്യം."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"പശ്ചാത്തലത്തിൽ താൽക്കാലികമായി നിർത്തി."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ഓപ്പറേറ്റർ നെറ്റ്‌വർക്കിനാവുന്നതിലും വലിയ ഡൗൺലോഡ്"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ഈ ഡൗൺലോഡ് <xliff:g id="SIZE">%s </xliff:g> പൂർത്തിയാക്കാൻ നിങ്ങൾ Wi-Fi ഉപയോഗിക്കണം.\n\n നിങ്ങൾ അടുത്ത തവണ Wi-Fi നെറ്റ്‌വർക്കിൽ കണക്റ്റുചെയ്യുമ്പോൾ ഈ ഡൗൺലോഡ് ആരംഭിക്കാൻ <xliff:g id="QUEUE_TEXT">%s </xliff:g> സ്‌പർശിക്കുക."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ഈ ഡൗൺലോഡ് <xliff:g id="SIZE">%1$s </xliff:g> പൂർത്തിയാക്കാൻ നിങ്ങൾ Wi-Fi ഉപയോഗിക്കണം.\n\n നിങ്ങൾ അടുത്ത തവണ Wi-Fi നെറ്റ്‌വർക്കിൽ കണക്റ്റുചെയ്യുമ്പോൾ ഈ ഡൗൺലോഡ് ആരംഭിക്കാൻ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> സ്‌പർശിക്കുക."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"പിന്നീട് ഡൗൺലോഡുചെയ്യുന്നതിനായി ക്യൂവിലാക്കണോ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ഈ <xliff:g id="SIZE">%s </xliff:g> ഡൗൺലോഡ് ആരംഭിക്കുന്നത്, നിങ്ങളുടെ ബാറ്ററിയുടെ ആയുസ്സ് കുറയ്‌ക്കാനോ കൂടാതെ/അല്ലെങ്കിൽ നിങ്ങളുടെ മൊബൈൽ ഡാറ്റ കണക്ഷന്റെ അമിതോപയോഗത്തിനോ ഇടയാക്കാം, അത് നിങ്ങളുടെ ഡാറ്റ പ്ലാനിനെ ആശ്രയിച്ച് മൊബൈൽ ഓപ്പറേറ്റർ നിശ്ചയിക്കുന്ന നിരക്കുകളിലേക്ക് നയിക്കാനിടയുണ്ട്.\n\n നിങ്ങൾ അടുത്ത തവണ Wi-Fi നെറ്റ്‌വർക്കിൽ കണക്റ്റുചെയ്യുമ്പോൾ ഈ ഡൗൺലോഡ് ആരംഭിക്കാൻ <xliff:g id="QUEUE_TEXT">%s</xliff:g> സ്‌പർശിക്കുക."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ഈ <xliff:g id="SIZE">%1$s </xliff:g> ഡൗൺലോഡ് ആരംഭിക്കുന്നത്, നിങ്ങളുടെ ബാറ്ററിയുടെ ആയുസ്സ് കുറയ്‌ക്കാനോ കൂടാതെ/അല്ലെങ്കിൽ നിങ്ങളുടെ മൊബൈൽ ഡാറ്റ കണക്ഷന്റെ അമിതോപയോഗത്തിനോ ഇടയാക്കാം, അത് നിങ്ങളുടെ ഡാറ്റ പ്ലാനിനെ ആശ്രയിച്ച് മൊബൈൽ ഓപ്പറേറ്റർ നിശ്ചയിക്കുന്ന നിരക്കുകളിലേക്ക് നയിക്കാനിടയുണ്ട്.\n\n നിങ്ങൾ അടുത്ത തവണ Wi-Fi നെറ്റ്‌വർക്കിൽ കണക്റ്റുചെയ്യുമ്പോൾ ഈ ഡൗൺലോഡ് ആരംഭിക്കാൻ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> സ്‌പർശിക്കുക."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ക്യൂ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"റദ്ദാക്കുക"</string>
<string name="button_start_now" msgid="792123674007840864">"ഇപ്പോൾ ആരംഭിക്കുക"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 3ff0d13b..c041ecf4 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Апп нь татан авалтын менежерийн дэлгэрэнгүй функцуудад хандалт хийх боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Татан авалтын мэдэгдэл илгээх."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Апп нь татан авч дууссан талаарх мэдэгдэл явуулах боломжтой. Хортой апп-ууд энийг ашиглан файл татдаг бусад апп-уудыг төөрөгдөлд оруулж болно."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Татаж авсан бүх файлыг USB сангаас харах"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Татаж авсан бүх файлыг SD картаас харах"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Апп нь аль апп-с татсанаас хамаарахгүйгээр SD картад хадгалагдсан бүх файлыг харах боломжтой."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Татан авалтын кеш дотор зай нөөцлөх"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Апп нь татан авалтын менежерт илүү зай хэрэгтэй болсон үед автоматаар устгалгүйгээр файлыг татан авалтын кеш-д хадгалах боломжтой."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"мэдэгдэл өгөхгүйгээр файлуудыг татаж авах"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Татаж авах хэмжээ Wi-Fi шаардана."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Ар талд түр зогсоогдсон"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Татан авалт нь операторын сүлжээнд хэт том байна"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Та энэ <xliff:g id="SIZE">%s </xliff:g> татан авалтыг гүйцээхийн тулд Wi-Fi-д холбогдох шаардлагатай. Та дараагийн удаа Wi-Fi сүлжээнд холбогдмогц энэ татан авалтыг эхлүүлэхийн тулд \n\nХүрнэ үү <xliff:g id="QUEUE_TEXT">%s </xliff:g>"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Та энэ <xliff:g id="SIZE">%1$s </xliff:g> татан авалтыг гүйцээхийн тулд Wi-Fi-д холбогдох шаардлагатай. Та дараагийн удаа Wi-Fi сүлжээнд холбогдмогц энэ татан авалтыг эхлүүлэхийн тулд \n\nХүрнэ үү <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Дараа татахаар хүлээлгэх үү?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Энэ <xliff:g id="SIZE">%s </xliff:g> татан авалтыг одоо эхлүүлснээр таны зайны цэнэг дуусах болон/эсхүл мобайл дата холболтыг хэт их хэрэглэх, улмаар өндөр төлбөр төлөхөд хүрч болзошгүй. Дараагийн удаа WiFi сүлжээнд холбогдохдоо татаж эхлүүлэхийн тулд доорхыг \n\n Товшино уу <xliff:g id="QUEUE_TEXT">%s</xliff:g>."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Энэ <xliff:g id="SIZE">%1$s </xliff:g> татан авалтыг одоо эхлүүлснээр таны зайны цэнэг дуусах болон/эсхүл мобайл дата холболтыг хэт их хэрэглэх, улмаар өндөр төлбөр төлөхөд хүрч болзошгүй. Дараагийн удаа WiFi сүлжээнд холбогдохдоо татаж эхлүүлэхийн тулд доорхыг \n\n Товшино уу <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Хүлээх"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Цуцлах"</string>
<string name="button_start_now" msgid="792123674007840864">"Одоо эхлүүлэх"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 4778a851..9d751299 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -18,20 +18,17 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3658948994665187911">"डाउनलोड व्यवस्थापक"</string>
<string name="storage_description" msgid="7982444311558023664">"डाउनलोड"</string>
- <string name="permlab_downloadManager" msgid="7779544811202855500">"डाउनलोड व्यवस्थापक अॅक्सेस करा."</string>
+ <string name="permlab_downloadManager" msgid="7779544811202855500">"डाउनलोड व्यवस्थापक अ‍ॅक्सेस करा."</string>
<string name="permdesc_downloadManager" msgid="4237406545998908947">"अ‍ॅपला डाउनलोड व्‍यवस्‍थापकामध्‍ये प्रवेश करण्‍याची आणि फायली डाउनलोड करण्‍यासाठी त्याचा वापर करण्‍याची अनुमती देते. दुर्भावनापूर्ण अ‍ॅप्‍स याचा डाउनलोड विदारित करण्‍यासाठी आणि खाजगी माहितीमध्‍ये प्रवेश करण्‍यासाठी वापर करू शकतात."</string>
<string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"प्रगत डाऊनलोड व्यवस्थापक कार्ये."</string>
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"अ‍ॅपला डाउनलोड व्‍यवस्‍थापकाच्या प्रगत कार्यांमध्‍ये प्रवेश करण्‍याची अनुमती देते. दुर्भावनापूर्ण अ‍ॅप्‍स याचा डाउनलोड विदारित करण्‍यासाठी आणि खाजगी माहितीमध्‍ये प्रवेश करण्‍यासाठी वापर करू शकतात."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"डाउनलोड सूचना पाठवा."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"अ‍ॅपला पूर्ण झालेल्‍या डाउनलोड विषयी सूचना पाठविण्‍यास अनुमती देते. डाउनलोड करणार्‍या अन्य अ‍ॅप्‍सचा गोंधळ करण्‍यासाठी दुर्भावनापूर्ण अ‍ॅप्‍स याचा वापर करू शकतात."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB संचयनाचे सर्व डाउनलोड पहा"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD कार्डचे सर्व डाउनलोड पहा"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"अ‍ॅपला कोणत्या अ‍ॅपने त्यांना डाउनलोड केले ते विचारात न घेता SD कार्डचे सर्व डाउनलोड पाहण्‍याची अनुमती देते."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"डाउनलोड कॅशेमधील स्‍थान आरक्षित करा"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"अ‍ॅपला डाउनलोडवर कॅशेवर, डाउनलोड व्‍यवस्‍थापकास जास्त स्‍थानाची आवश्‍यकता असते तेव्‍हा ज्या स्‍वयंचलितपणे हटविल्‍या जाऊ शकत नाहीत त्या फायली डाउनलोड करण्‍याची अनुमती देते."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"सूचनेशिवाय फायली डाउनलोड करा"</string>
<string name="permdesc_downloadWithoutNotification" msgid="8483135034298639727">"अ‍ॅपला वापरकर्त्यास कोणतीही सूचना न दर्शविता डाउनलोड व्यवस्‍थापकाद्वारे फायली डाउनलोड करण्‍याची अनुमती देते."</string>
- <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"सर्व सिस्‍टीम डाउनलोड अॅक्सेस करा"</string>
+ <string name="permlab_accessAllDownloads" msgid="2436240495424393717">"सर्व सिस्‍टीम डाउनलोड अ‍ॅक्सेस करा"</string>
<string name="permdesc_accessAllDownloads" msgid="1871832254578267128">"अ‍ॅपला सिस्‍टीम वरील कोणत्‍याही अ‍ॅपद्वारे आरंभ केलेले सर्व डाउनलोड पाहण्‍याची आणि सुधारित करण्‍याची अनुमती देते."</string>
<string name="download_unknown_title" msgid="7015124071247271585">"&lt;अशीर्षकांकित&gt;"</string>
<string name="notification_download_complete" msgid="5443563299253103667">"डाउनलोड पूर्ण."</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"डाउनलोड आकारामानास वाय-फाय आवश्‍यक अस‍ते."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"पार्श्वभूमीत विराम दिला."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ऑपरेटर नेटवर्कसाठी डाउनलोड खूप मोठे आहे"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"तुम्ही हे <xliff:g id="SIZE">%s </xliff:g> डाउनलोड पूर्ण करण्‍यासाठी वाय-फाय चा वापर करणे आवश्‍यक आहे. पुढील वेळी तुम्ही वाय-फाय ला कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"तुम्ही हे <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोड पूर्ण करण्‍यासाठी वाय-फाय चा वापर करणे आवश्‍यक आहे. पुढील वेळी तुम्ही वाय-फाय ला कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"नंतर डाउनलोड करा साठी रांग लावायची?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"हे <xliff:g id="SIZE">%s </xliff:g> डाउनलोड सुरू करण्याने तुमचे बॅटरी आयुष्‍य कमी होऊ शकते आणि/किंवा त्‍याचा परिणाम तुमच्या मोबाईल डेटा कनेक्‍शनचा अत्‍याधिक वापर करण्‍यात होऊ शकतो, ज्‍यामुळे आपल्‍या मोबाईल डेटा योजनेवर आधारित आपल्‍या मोबाईल ऑपरेटरद्वारे शुल्‍क आकारले जाऊ शकते.पुढील वेळी तुम्ही वाय-फाय नेटवर्कशी कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%s</xliff:g>"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"हे <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोड सुरू करण्याने तुमचे बॅटरी आयुष्‍य कमी होऊ शकते आणि/किंवा त्‍याचा परिणाम तुमच्या मोबाईल डेटा कनेक्‍शनचा अत्‍याधिक वापर करण्‍यात होऊ शकतो, ज्‍यामुळे आपल्‍या मोबाईल डेटा योजनेवर आधारित आपल्‍या मोबाईल ऑपरेटरद्वारे शुल्‍क आकारले जाऊ शकते.पुढील वेळी तुम्ही वाय-फाय नेटवर्कशी कनेक्‍ट होता तेव्‍हा हे डाउनलोड सुरू करण्‍यासाठी \n\n स्‍पर्श करा <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"रांग"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"रद्द करा"</string>
<string name="button_start_now" msgid="792123674007840864">"आता सुरू करा"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index a175064b..88db6d1c 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Membenarkan aplikasi mengakses fungsi-fungsi lanjutan pengurus muat turun. Aplikasi berbahaya boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Hantar pemberitahuan muat turun."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Membenarkan aplikasi menghantar pemberitahuan tentang muat turun yang telah siap. Aplikasi berbahaya boleh menggunakan ini untuk mengelirukan aplikasi lain yang memuat turun fail."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Lihat m.turun ke strn USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Lihat semua muat turun ke kad SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Membenarkan aplikasi untuk melihat semua muat turun ke kad SD, tidak kira aplikasi mana yang memuat turun."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Menempah ruang dalam cache muat turun"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Membenarkan aplikasi memuat turun fail ke cache muat turun, yang tidak boleh dipadamkan secara automatik apabila pengurus muat turun memerlukan lebih banyak ruang."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"memuat turun fail tanpa pemberitahuan"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Saiz m.trn perlukn Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Dijeda di latar belakang."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Muat turun terlalu besar untuk operator rangkaian"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun <xliff:g id="SIZE">%s </xliff:g> ini. \n\nSentuh <xliff:g id="QUEUE_TEXT">%s </xliff:g> untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun <xliff:g id="SIZE">%1$s </xliff:g> ini. \n\nSentuh <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Baris gilir untuk dimuat turun kemudian?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Memulakan muat turun <xliff:g id="SIZE">%s </xliff:g> ini sekarang mungkin memendekkan hayat bateri dan/atau menyebabkan penggunaan berlebihan sambungan data mudah alih anda, yang boleh menyebabkan caj dikenakan oleh operator mudah alih anda, bergantung kepada pelan data anda.\n\n Sentuh <xliff:g id="QUEUE_TEXT">%s</xliff:g> untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Memulakan muat turun <xliff:g id="SIZE">%1$s </xliff:g> ini sekarang mungkin memendekkan hayat bateri dan/atau menyebabkan penggunaan berlebihan sambungan data mudah alih anda, yang boleh menyebabkan caj dikenakan oleh operator mudah alih anda, bergantung kepada pelan data anda.\n\n Sentuh <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Baris gilir"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Batal"</string>
<string name="button_start_now" msgid="792123674007840864">"Mulakan sekarang"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index 2aeefc2c..a51bb95d 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"အပလီကေးရှင်းအား ဒေါင်းလုပ်မန်နေဂျာ၏ အဆင့်မြင့် လုပ်ဆောင်ချက်များကို သုံးစွဲခွင့်ပြုမည်။ အန္တရာယ် ရှိသော အပလီကေးရှင်းများက ၎င်းကို အသုံးပြုကာ ဒေါင်းလုပ်ပြုလုပ်ခြင်းကို နှောက်ယှက်ခြင်းနှင့် ကိုယ်ပိုင်အချက်အလက်များကို ဝင်ရောက်ယူနိုင်သည်။"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ဒေါင်းလုပ်နှင့် ပတ်သက်သော အကြောင်းကြားချက် အားလုံးကိုပို့မည်"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"အက်ပ်အား ဒေါင်းလုပ်ပြီးဆုံးပါက အကြောင်းကြားရန် ခွင့်ပြုမည်။ အန္တရာယ် ရှိသော အက်ပ်များက ၎င်းကို အသုံးပြုကာ ဖိုင်များကိုဒေါင်းလုပ်ပြုထားသော အက်ပ်ကို ရောထွေးအောင်ပြုလုပ်နိုင်သည်။"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"ဒေါင်းလုပ်အားလုံးကို USBသိုလှောင်ကတ်ထဲတွင် ကြည့်မည်"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"ဒေါင်းလုပ်အားလုံးကို SDကတ်ထဲတွင် ကြည့်မည်"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"အပလီကေးရှင်းအား SDကဒ်ထဲရှိ မည်သည့်အပလီကေးရှင်းမှမဆို ဒေါင်းလုပ်ပြုလုပ်ထားသည်များကို သုံးစွဲခွင့်ပြုမည်။"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ဒေါင်းလုပ်ယာယီသိမ်းရန်နေရာတွင် ကြိုတင်နေရာယူထားမည်"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"အပလီကေးရှင်းအား ဒေါင်းလုပ်ပြုလုပ်ထားသောဖိုင်များကို ဒေါင်းလုပ်မန်နေဂျာမှ နေရာလွတ်လိုအပ်လျှင်အလိုအလျောက်ဖျက်မရသော ယာယီသိမ်းဆည်းရန်နေရာထဲသို့ ထည့်ရန် ခွင့်ပြုမည်"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"အကြောင်းမကြားပဲ ဖိုင်များကို ဒေါင်းလုပ်ပြုလုပ်မည်"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ဒေါင်းလုပ်ပမာဏမှာ ဝိုင်ဖိုင်လိုအပ်သည်"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"နောက်ခံတွင် ခဏဆိုင်းထားသည်"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ဒေါင်းလုပ်မှာ အော်ပရေတာကွန်ယက်အတွက် ကြီးလွန်းသည်"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ဤ <xliff:g id="SIZE">%s </xliff:g> ဒေါင်းလုပ်ကို ပြုလုပ်ရန် Wi-Fi ချိတ်ဆက်ထားရပါမည်၊ \n\nနောက်တစ်ခါ Wi-Fi ကိုချိတ်ဆက်လျှင် ဒေါင်းလုပ်စတင်ရန် <xliff:g id="QUEUE_TEXT">%s </xliff:g> ကို တို့ထိပါ။"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ဤ <xliff:g id="SIZE">%1$s </xliff:g> ဒေါင်းလုပ်ကို ပြုလုပ်ရန် Wi-Fi ချိတ်ဆက်ထားရပါမည်၊ \n\nနောက်တစ်ခါ Wi-Fi ကိုချိတ်ဆက်လျှင် ဒေါင်းလုပ်စတင်ရန် <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ကို တို့ထိပါ။"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"နောက်မှ ဒေါင်းလုပ်ပြုလုပ်ရန် တန်းစီထားမလား?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ဤ <xliff:g id="SIZE">%s </xliff:g>ဒေါင်းလုပ်ကို စတင်ခြင်းမှာ သင့်ဘက်ထရီ သက်တမ်းကို တိုစေသည် သို့မဟုတ် သင့်ဒေတာပလန်ပေါ် မူတည်၍ ကျသင့်ငွေ ပိုကုန်စေမည့် မိုဘိုင်းဒေတာ ချိတ်ဆက်မှုကို အလွန်အကျွံ သုံးနိုင်သည်။ \n\n နောက်တစ်ခါ ဝိုင်ဖိုင်ချိတ်ဆက်လျှင် ဒေါင်းလုပ်စတင်ရန် <xliff:g id="QUEUE_TEXT">%s</xliff:g> ကို တို့ထိပါ။"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ဤ <xliff:g id="SIZE">%1$s </xliff:g>ဒေါင်းလုပ်ကို စတင်ခြင်းမှာ သင့်ဘက်ထရီ သက်တမ်းကို တိုစေသည် သို့မဟုတ် သင့်ဒေတာပလန်ပေါ် မူတည်၍ ကျသင့်ငွေ ပိုကုန်စေမည့် မိုဘိုင်းဒေတာ ချိတ်ဆက်မှုကို အလွန်အကျွံ သုံးနိုင်သည်။ \n\n နောက်တစ်ခါ ဝိုင်ဖိုင်ချိတ်ဆက်လျှင် ဒေါင်းလုပ်စတင်ရန် <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ကို တို့ထိပါ။"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"တန်းစီရန်"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"မလုပ်တော့"</string>
<string name="button_start_now" msgid="792123674007840864">"ယခုအချိန်မှစတင်ပါ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 243054fb..e23ef2e5 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Gir appen adgang til avanserte funksjoner i nedlastingsbehandlingen. Skadelig programvare kan bruke dette til å forstyrre nedlastinger og få tilgang til privat informasjon."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Sende nedlastingsvarslinger"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Gir appen tillatelse til å sende varslinger om fullførte nedlastinger. Skadelig programvare kan bruke dette til å forstyrre andre apper som laster ned filer."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Se nedlastinger til USB-lagr."</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Se alle nedlastinger til minnekort"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Gir appen tilgang til alle nedlastinger på SD-kortet, uavhengig av hvilken app som lastet dem ned."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservere lagringsplass i nedlastingsbufferen"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Gir appen tillatelse til å laste ned filer til nedlastingsbufferen, slik at de ikke slettes automatisk når nedlastingsbehandlingen trenger mer lagringsplass."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"laste ned filer uten varsling"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Krever Wi-Fi pga. størr."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Satt på pause i bakgr."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Nedlastingen er for stor for operatørnettverket"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Du må bruke Wi-Fi for å fullføre denne nedlastingen på <xliff:g id="SIZE">%s </xliff:g>. \n\nTrykk <xliff:g id="QUEUE_TEXT">%s </xliff:g> for å starte denne nedlastingen neste gang du er koblet til et Wi-Fi-nettverk."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Du må bruke Wi-Fi for å fullføre denne nedlastingen på <xliff:g id="SIZE">%1$s </xliff:g>. \n\nTrykk <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> for å starte denne nedlastingen neste gang du er koblet til et Wi-Fi-nettverk."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Vil du sette nedlastingen i kø til senere?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Starter du denne nedlastingen på <xliff:g id="SIZE">%s </xliff:g> nå, kan det redusere batteriets levetid eller gi for høy bruk av datatilkoblingen. Abonnementet ditt avgjør kostnadene.\n\nTrykk<xliff:g id="QUEUE_TEXT">%s</xliff:g> for å starte nedlastingen neste gang du er koblet til Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Starter du denne nedlastingen på <xliff:g id="SIZE">%1$s </xliff:g> nå, kan det redusere batteriets levetid eller gi for høy bruk av datatilkoblingen. Abonnementet ditt avgjør kostnadene.\n\nTrykk<xliff:g id="QUEUE_TEXT">%2$s</xliff:g> for å starte nedlastingen neste gang du er koblet til Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Kø"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Avbryt"</string>
<string name="button_start_now" msgid="792123674007840864">"Start nå"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index 6163933d..f8add0f2 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"अनुप्रयोगलाई डाउनलोड प्रबन्धकको उन्नत प्रकार्यहरू पहुँच गर्न अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोड अवरूद्ध गरी निजी जानकारी पहुँच गर्न प्रयोग गर्न सक्छ।"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"डाउनलोड सूचनाहरू पठाउनुहोस्।"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"अनुप्रयोगलाई समाप्त भएका डाउनलोडहरूका सूचनाहरू पठाउन अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले फाइल डाउनलोड गर्ने अन्य अनुप्रयोगलाई झुक्याउनका लागि यसलाई प्रयोग गर्न सक्छन्।"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"सबै डाउनलोडहरूलाई USB भण्डारणमा हेर्नुहोस्"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"सबै डाउनलोडहरूलाई SD कार्डमा हेर्नुहोस्"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"जुनसुकै अनुप्रयोगले डाउनलोड गरेको भए पनि अनुप्रयोगलाई सम्पूर्ण डाउनलोडहरूलाई SD कार्डमा देख्ने अनुमति दिन्छ ।"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"डाउनलोड केसमा ठाउँ ओगट्नुहोस्"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"अनुप्रयोगलाई फाइलहरूलाई डाउनलोड केसमा डाउनलोड गर्न अनुमति दिन्छ, जुन डाउनलोड प्रबन्धकलाई थप ठाउँ चाहिएको खण्डमा स्वचालित रूपमा हटाउन सकिदैन।"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"बिना सूचना फाइलहरू डाउनलोड गर्नुहोस्"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"डाउनलोड आकारलाई Wi-Fi चाहिन्छ।"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"पृष्ठभूमिमा रोकिएको छ।"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"अपरेटर सञ्जालका लागि डाउनलोड ज्यादै ठूलो"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"तपाईंले Wi-Fi प्रयोग गर्नु पर्छ यस <xliff:g id="SIZE">%s </xliff:g> डाउनलोड समाप्त गर्न। \n\nछुनुहोस् <xliff:g id="QUEUE_TEXT">%s </xliff:g> यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईं Wi-Fi सञ्जालामा जडित भए पछि।"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"तपाईंले Wi-Fi प्रयोग गर्नु पर्छ यस <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोड समाप्त गर्न। \n\nछुनुहोस् <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईं Wi-Fi सञ्जालामा जडित भए पछि।"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"पछि डाउनलोडका लागि लाममा राख्ने हो?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"यस <xliff:g id="SIZE">%s </xliff:g> डाउनलोडलाई सुरु गर्दा तपाईंको ब्याट्रिको काल छोट्टिन सक्छ र/वा तपाईंको मोबाइल डेटा जडानको अधिकतम प्रयोग भई तपाईंको डेटा योजना अनुसार मोबाइल अपरेटरले थप शुल्क लिन सक्छ। \n\n छुनुहोस् <xliff:g id="QUEUE_TEXT">%s</xliff:g>तल यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईं Wi-Fi सन्जालमा जडित हुने बेला।"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"यस <xliff:g id="SIZE">%1$s </xliff:g> डाउनलोडलाई सुरु गर्दा तपाईंको ब्याट्रिको काल छोट्टिन सक्छ र/वा तपाईंको मोबाइल डेटा जडानको अधिकतम प्रयोग भई तपाईंको डेटा योजना अनुसार मोबाइल अपरेटरले थप शुल्क लिन सक्छ। \n\n छुनुहोस् <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>तल यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईं Wi-Fi सन्जालमा जडित हुने बेला।"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"लाम"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"रद्द गर्नुहोस्"</string>
<string name="button_start_now" msgid="792123674007840864">"अहिले सुरु गर्नुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index b6128b51..0c1f9953 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Hiermee heeft de app toegang tot de geavanceerde functies van downloadbeheer. Schadelijke apps kunnen dit gebruiken om downloads te verstoren en toegang te krijgen tot persoonlijke informatie."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Downloadmeldingen verzenden."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Hiermee kan de app meldingen verzenden over voltooide downloads. Schadelijke apps kunnen dit gebruiken om andere apps die bestanden downloaden in verwarring te brengen."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Alle downloads naar USB-opslag bekijken"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Alle downloads naar SD-kaart weergeven"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Hiermee kan de app alle downloads op de SD-kaart zien, ongeacht welke app ze heeft gedownload."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Ruimte in de downloadcache reserveren"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Hiermee kan de app bestanden downloaden naar de downloadcache die niet automatisch kunnen worden verwijderd wanneer downloadbeheer meer ruimte nodig heeft."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"bestanden downloaden zonder melding"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Wifi nodig voor download"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Onderbr. op achtergrond."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download te groot voor providernetwerk"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Je moet wifi gebruiken om deze download van <xliff:g id="SIZE">%s </xliff:g> te voltooien. \n\nTik <xliff:g id="QUEUE_TEXT">%s </xliff:g> om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Je moet wifi gebruiken om deze download van <xliff:g id="SIZE">%1$s </xliff:g> te voltooien. \n\nTik <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"In wachtrij plaatsen voor later downloaden?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Als je deze download van <xliff:g id="SIZE">%s </xliff:g> nu start, kan dit de levensduur van de batterij verkorten en/of leiden tot bovenmatig gebruik van je mobiele gegevensverbinding. Je provider kan hiervoor kosten rekenen.\n\n Raak \'<xliff:g id="QUEUE_TEXT">%s</xliff:g>\' aan om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Als je deze download van <xliff:g id="SIZE">%1$s </xliff:g> nu start, kan dit de levensduur van de batterij verkorten en/of leiden tot bovenmatig gebruik van je mobiele gegevensverbinding. Je provider kan hiervoor kosten rekenen.\n\n Raak \'<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>\' aan om deze download te starten wanneer je verbinding hebt met een wifi-netwerk."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Wachtrij"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Annuleren"</string>
<string name="button_start_now" msgid="792123674007840864">"Nu starten"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 6c2f6856..2b621412 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ଡାଉନଲୋଡ୍‌ ମ୍ୟାନେଜର୍‌ର ଉନ୍ନତ କାର୍ଯ୍ୟକାରିତାକୁ ଆକ୍ସେସ୍‌ କରିବା ପାଇଁ ଆପ୍‌କୁ ଅନୁମତି ଦେଇଥାଏ| କ୍ଷତିକାରକ ଆପ୍‌ଗୁଡ଼ିକ ଏହାକୁ, ଡାଉନଲୋଡ୍‌ରେ ବିଘ୍ନ କରିବାକୁ ଏବଂ ବ୍ୟକ୍ତିଗତ ସୂଚନା ଆକ୍ସେସ୍‌ କରିବା ପାଇଁ ବ୍ୟବହାର କରିପାରନ୍ତି|"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ଡାଉନଲୋଡ୍‌ ବିଜ୍ଞପ୍ତି ପଠାନ୍ତୁ|"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"ସମ୍ପୂର୍ଣ୍ଣ ହୋଇଥିବା ଡାଉନଲୋଡ୍‌ଗୁଡ଼ିକ ବିଷୟରେ ବିଜ୍ଞପ୍ତି ପଠାଇବା ପାଇଁ ଆପ୍‌କୁ ଅନୁମତି ଦେଇଥାଏ| କ୍ଷତିକାରକ ଆପ୍‌ଗୁଡ଼ିକ ଏହାକୁ, ଅନ୍ୟ ଆପ୍‌ଗୁଡ଼ିକୁ ଭ୍ରମିତ କରିବା ପାଇଁ ବ୍ୟବହାର କରିପାରନ୍ତି, ଯେଉଁଗୁଡ଼ିକ ଫାଇଲ୍‌ ଡାଉନଲୋଡ୍‌ କରନ୍ତି|"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB ଷ୍ଟୋରେଜ୍‌ରେ ହୋଇଥିବା ସମସ୍ତ ଡାଉନଲୋଡ୍‌ ଦେଖନ୍ତୁ"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD କାର୍ଡରେ ହୋଇଥିବା ସମସ୍ତ ଡାଉନଲୋଡ୍‌ ଦେଖନ୍ତୁ"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"SD କାର୍ଡରେ ଡାଉନଲୋଡ୍‌ ହୋଇଥିବା ସମସ୍ତ ଆପ୍‌କୁ ଦେଖିବା ପାଇଁ ଆପ୍‌କୁ ଅନୁମତି ଦେଇଥାଏ, ସେଗୁଡ଼ିକୁ ଯେଉଁ ଆପ୍‌ ଡାଉନଲୋଡ୍‌ କରିଥାଉ ନା କାହିଁକି|"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ଡାଉନଲୋଡ୍‌ କ୍ୟାଶ୍‌ରେ ସ୍ପେସ୍‌ ରିଜର୍ଭ କରନ୍ତୁ"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ଆପ୍‌କୁ ଡାଉନଲୋଡ୍‌ କ୍ୟାଶ୍‌ରେ ଫାଇଲ୍‌ଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍‌ କରିବାକୁ ଦେଇଥାଏ, ଯେଉଁଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍‌ ମ୍ୟାନେଜର୍‌କୁ ଅଧିକ ସ୍ଥାନ ଆବଶ୍ୟକ ହେଲେ ସ୍ୱଚାଳିତ ଭାବେ ଡିଲିଟ୍‌ କରିହେବ ନାହିଁ|"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"କୌଣସି ବିଜ୍ଞପ୍ତି ବିନା ଫାଇଲ୍‌ଗୁଡ଼ିକୁ ଡାଉନଲୋଡ୍‌ କରନ୍ତୁ"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ଡାଉନଲୋଡ୍‌ ଆକାର ୱାଇ-ଫାଇ ଆବଶ୍ୟକ କରେ|"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"ବ୍ୟାକ୍‌ଗ୍ରାଉଣ୍ଡରେ ପଜ୍‌ ହୋଇ ରହିଛି|"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ଅପରେଟର୍‌ ନେଟ୍‌ୱର୍କ ପାଇଁ ଡାଉନଲୋଡ୍‌ ବହୁତ ବଡ଼ ଅଟେ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ଏହି <xliff:g id="SIZE">%s </xliff:g>ର ଡାଉନଲୋଡ୍‌ ସାରିବା ପାଇଁ ଆପଣଙ୍କୁ ନିଶ୍ଚିତ ଭାବେ ୱାଇ-ଫାଇର ବ୍ୟବହାର କରିବାକୁ ପଡ଼ିବ| \n\nପରବର୍ତ୍ତୀ ସମୟରେ ଯେତେବେଳେ ଆପଣ କୌଣସି ୱାଇ-ଫାଇ ନେଟ୍‌ୱର୍କ ସହିତ ଯୋଡ଼ିହେବେ, ଏହି ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କରିବା ପାଇଁ <xliff:g id="QUEUE_TEXT">%s </xliff:g>କୁ ସ୍ପର୍ଶ କରନ୍ତୁ|"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ଏହି <xliff:g id="SIZE">%1$s </xliff:g>ର ଡାଉନଲୋଡ୍‌ ସାରିବା ପାଇଁ ଆପଣଙ୍କୁ ନିଶ୍ଚିତ ଭାବେ ୱାଇ-ଫାଇର ବ୍ୟବହାର କରିବାକୁ ପଡ଼ିବ| \n\nପରବର୍ତ୍ତୀ ସମୟରେ ଯେତେବେଳେ ଆପଣ କୌଣସି ୱାଇ-ଫାଇ ନେଟ୍‌ୱର୍କ ସହିତ ଯୋଡ଼ିହେବେ, ଏହି ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କରିବା ପାଇଁ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>କୁ ସ୍ପର୍ଶ କରନ୍ତୁ|"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ପରେ ଡାଉନଲୋଡ୍‌ କରିବା ପାଇଁ ଧାଡ଼ିରେ ରଖିବେ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ଏହି <xliff:g id="SIZE">%s </xliff:g>ର ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କଲେ ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ଶୀଘ୍ର ସରିଯାଇପାରେ ଏବଂ/କିମ୍ୱା ମୋବାଇଲ୍‌ର ଅନେକ ଡାଟା ଖର୍ଚ୍ଚ ହୋଇପାରେ, ଯାହା ପାଇଁ ମୋବାଇଲ୍‌ ଅପରେଟର୍‌, ଆପଣଙ୍କ ଡାଟା ପ୍ଲାନ୍‌ ହିସାବରେ ଆପଣଙ୍କଠାରୁ ପଇସା ନେଇପାରେ|\n\n ଆଗାମୀ ଥର ଯେତେବେଳେ ଆପଣ ୱାଇ-ଫାଇ ନେଟୱର୍କ ସହିତ ଯୋଡ଼ିହେବେ, ଏହି ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କରିବା ପାଇଁ <xliff:g id="QUEUE_TEXT">%s</xliff:g>କୁ ସ୍ପର୍ଶ କରନ୍ତୁ|"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ଏହି <xliff:g id="SIZE">%1$s </xliff:g>ର ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କଲେ ଆପଣଙ୍କ ବ୍ୟାଟେରୀ ଶୀଘ୍ର ସରିଯାଇପାରେ ଏବଂ/କିମ୍ୱା ମୋବାଇଲ୍‌ର ଅନେକ ଡାଟା ଖର୍ଚ୍ଚ ହୋଇପାରେ, ଯାହା ପାଇଁ ମୋବାଇଲ୍‌ ଅପରେଟର୍‌, ଆପଣଙ୍କ ଡାଟା ପ୍ଲାନ୍‌ ହିସାବରେ ଆପଣଙ୍କଠାରୁ ପଇସା ନେଇପାରେ|\n\n ଆଗାମୀ ଥର ଯେତେବେଳେ ଆପଣ ୱାଇ-ଫାଇ ନେଟୱର୍କ ସହିତ ଯୋଡ଼ିହେବେ, ଏହି ଡାଉନଲୋଡ୍‌ ଆରମ୍ଭ କରିବା ପାଇଁ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>କୁ ସ୍ପର୍ଶ କରନ୍ତୁ|"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ଧାଡ଼ିରେ ରଖନ୍ତୁ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"କ୍ୟାନ୍ସଲ୍‍"</string>
<string name="button_start_now" msgid="792123674007840864">"ବର୍ତ୍ତମାନ ଆରମ୍ଭ କରନ୍ତୁ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index 6e629675..1e1ce31f 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ਐਪ ਨੂੰ ਡਾਊਨਲੋਡ ਪ੍ਰਬੰਧਕ ਦੇ ਐਡਵਾਂਸਡ ਫੰਕਸ਼ਨਾਂ ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਖਰਾਬ ਐਪਾਂ ਇਸਦੀ ਵਰਤੋਂ ਡਾਊਨਲੋਡ ਵਿੱਚ ਵਿਘਨ ਪਾਉਣ ਅਤੇ ਨਿੱਜੀ ਜਾਣਕਾਰੀ ਤੱਕ ਪਹੁੰਚ ਲਈ ਕਰ ਸਕਦੀਆਂ ਹਨ।"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ਡਾਊਨਲੋਡ ਸੂਚਨਾਵਾਂ ਭੇਜੋ।"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"ਐਪ ਨੂੰ ਡਾਊਨਲੋਡਸ ਪੂਰਾ ਕੀਤੇ ਬਿਨਾਂ ਸੂਚਨਾਵਾਂ ਭੇਜਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਖ਼ਰਾਬ ਐਪਸ ਇਸਦੀ ਵਰਤੋਂ ਹੋਰਾਂ ਐਪਸ ਨੂੰ ਉਲਝਣ ਵਿੱਚ ਪਾਉਣ ਲਈ ਕਰ ਸਕਦੇ ਹਨ ਜੋ ਫਾਈਲਾਂ ਡਾਊਨਲੋਡ ਕਰਦੇ ਹਨ।"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB ਸਟੋਰੇਜ ਦੇ ਸਾਰੇ ਡਾਊਨਲੋਡ ਦੇਖੋ"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD ਕਾਰਡ ਦੀਆਂ ਸਾਰੀਆਂ ਡਾਊਨਲੋਡਸ ਦੇਖੋ"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"ਐਪ ਨੂੰ SD ਕਾਰਡ ਦੀਆਂ ਸਾਰੀਆਂ ਡਾਊਨਲੋਡਸ ਦੇਖਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਇਸਤੇ ਧਿਆਨ ਦਿੱਤੇ ਬਿਨਾਂ ਕਿ ਕਿਹੜੇ ਐਪ ਨੇ ਉਹਨਾਂ ਨੂੰ ਡਾਊਨਲੋਡ ਕੀਤਾ ਸੀ।"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ਡਾਊਨਲੋਡ ਕੈਸ਼ੇ ਵਿੱਚ ਜਗ੍ਹਾ ਰੱਖਿਅਤ ਕਰੋ"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ਐਪ ਨੂੰ ਡਾਊਨਲੋਡ ਕੈਸ਼ੇ ਵਿੱਚ ਉਹ ਫਾਈਲਾਂ ਡਾਊਨਲੋਡ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ, ਜੋ ਆਪਣੇ ਆਪ ਨਹੀਂ ਮਿਟਾਈਆਂ ਜਾ ਸਕਦੀਆਂ ਜਦੋਂ ਡਾਊਨਲੋਡ ਪ੍ਰਬੰਧਕ ਨੂੰ ਵੱਧ ਜਗ੍ਹਾ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ।"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ਸੂਚਨਾ ਤੋਂ ਬਿਨਾਂ ਫ਼ਾਈਲਾਂ ਡਾਊਨਲੋਡ ਕਰੋ"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ਡਾਊਨਲੋਡ ਆਕਾਰ ਲਈ ਵਾਈ-ਫਾਈ ਦੀ ਲੋੜ ਹੈ।"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"ਪਿਛੋਕੜ ਵਿੱਚ ਰੋਕਿਆ।"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ਓਪਰੇਟਰ ਨੈੱਟਵਰਕ ਲਈ ਡਾਊਨਲੋਡ ਬਹੁਤ ਜ਼ਿਆਦਾ ਵੱਡੀ ਹੈ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"ਤੁਹਾਨੂੰ ਇਸ <xliff:g id="SIZE">%s </xliff:g> ਡਾਊਨਲੋਡ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਵਾਈ-ਫਾਈ ਵਰਤਣੀ ਚਾਹੀਦੀ ਹੈ। \n\nਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ ਤਾਂ ਇਸ ਡਾਊਨਲੋਡ ਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ <xliff:g id="QUEUE_TEXT">%s </xliff:g> ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ।"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"ਤੁਹਾਨੂੰ ਇਸ <xliff:g id="SIZE">%1$s </xliff:g> ਡਾਊਨਲੋਡ ਨੂੰ ਪੂਰਾ ਕਰਨ ਲਈ ਵਾਈ-ਫਾਈ ਵਰਤਣੀ ਚਾਹੀਦੀ ਹੈ। \n\nਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ ਤਾਂ ਇਸ ਡਾਊਨਲੋਡ ਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ।"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ਕੀ ਬਾਅਦ ਵਿੱਚ ਡਾਊਨਲੋਡ ਲਈ ਕਤਾਰ ਲਗਾਉਣੀ ਹੈ?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ਹੁਣ ਇਸ <xliff:g id="SIZE">%s </xliff:g> ਡਾਊਨਲੋਡ ਨੂੰ ਚਾਲੂ ਕਰਨ ਨਾਲ ਤੁਹਾਡੀ ਬੈਟਰੀ ਸਮਰੱਥਾ ਘੱਟ ਸਕਦੀ ਹੈ ਅਤੇ/ਜਾਂ ਇਸਦੇ ਸਿੱਟੇ ਵਜੋਂ ਤੁਹਾਡੇ ਮੋਬਾਈਲ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਦੀ ਵਾਧੂ ਵਰਤੋਂ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਹਾਡੇ ਡਾਟਾ ਪਲਾਨ ਦੇ ਆਧਾਰ ਤੇ ਤੁਹਾਡੇ ਮੋਬਾਈਲ ਓਪਰੇਟਰ ਵੱਲੋਂ ਖਰਚੇ ਪਾਏ ਜਾ ਸਕਦੇ ਹਨ।\n\n ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ ਤਾਂ ਇਸ ਡਾਊਨਲੋਡ ਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ <xliff:g id="QUEUE_TEXT">%s</xliff:g> ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ।"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ਹੁਣ ਇਸ <xliff:g id="SIZE">%1$s </xliff:g> ਡਾਊਨਲੋਡ ਨੂੰ ਚਾਲੂ ਕਰਨ ਨਾਲ ਤੁਹਾਡੀ ਬੈਟਰੀ ਸਮਰੱਥਾ ਘੱਟ ਸਕਦੀ ਹੈ ਅਤੇ/ਜਾਂ ਇਸਦੇ ਸਿੱਟੇ ਵਜੋਂ ਤੁਹਾਡੇ ਮੋਬਾਈਲ ਡਾਟਾ ਕਨੈਕਸ਼ਨ ਦੀ ਵਾਧੂ ਵਰਤੋਂ ਹੋ ਸਕਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਹਾਡੇ ਡਾਟਾ ਪਲਾਨ ਦੇ ਆਧਾਰ ਤੇ ਤੁਹਾਡੇ ਮੋਬਾਈਲ ਓਪਰੇਟਰ ਵੱਲੋਂ ਖਰਚੇ ਪਾਏ ਜਾ ਸਕਦੇ ਹਨ।\n\n ਅਗਲੀ ਵਾਰ ਜਦੋਂ ਤੁਸੀਂ ਇੱਕ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਨਾਲ ਕਨੈਕਟ ਕਰੋ ਤਾਂ ਇਸ ਡਾਊਨਲੋਡ ਨੂੰ ਚਾਲੂ ਕਰਨ ਲਈ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ।"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"ਕਤਾਰ"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ਰੱਦ ਕਰੋ"</string>
<string name="button_start_now" msgid="792123674007840864">"ਹੁਣ ਚਾਲੂ ਕਰੋ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index d685b09c..199c4e14 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Zezwala aplikacji na dostęp do zaawansowanych funkcji menedżera pobierania. Złośliwe aplikacje mogą wykorzystać tę możliwość w celu zakłócenia pobierania i uzyskania dostępu do informacji prywatnych."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Wysyłanie powiadomień o pobraniu."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Zezwala aplikacji na wysyłanie powiadomień o ukończonym pobieraniu. Złośliwe aplikacje mogą używać tego uprawnienia do wprowadzania w błąd innych aplikacji, które pobierają pliki."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Zobacz pliki pobrane na USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Sprawdzanie wszystkich plików pobranych na kartę SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Zezwala aplikacji na dostęp do listy wszystkich plików pobranych na kartę SD, niezależnie od tego, w której aplikacji zostały one pobrane."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Zarezerwuj miejsce w pamięci podręcznej pobierania"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Zezwala aplikacji na pobieranie plików do pamięci podręcznej, która nie może zostać automatycznie usunięta, gdy menedżer pobierania potrzebuje więcej miejsca."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"pobieranie plików bez powiadomienia"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Pobieranie wymaga Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Wstrzymane w tle."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Zbyt duży plik do pobrania dla sieci operatora"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Do pobrania <xliff:g id="SIZE">%s </xliff:g> musisz użyć połączenia Wi-Fi. \n\nWybierz <xliff:g id="QUEUE_TEXT">%s </xliff:g>, aby pobrać po nawiązaniu połączenia z siecią Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Do pobrania <xliff:g id="SIZE">%1$s </xliff:g> musisz użyć połączenia Wi-Fi. \n\nWybierz <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, aby pobrać po nawiązaniu połączenia z siecią Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Czy dodać do kolejki do późniejszego pobrania?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Pobranie <xliff:g id="SIZE">%s </xliff:g> może skrócić czas pracy na baterii i spowodować przekroczenie limitu transmisji danych, za co operator może naliczyć dodatkowe opłaty.\n\nWybierz <xliff:g id="QUEUE_TEXT">%s</xliff:g>, aby pobrać po połączeniu z siecią Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Pobranie <xliff:g id="SIZE">%1$s </xliff:g> może skrócić czas pracy na baterii i spowodować przekroczenie limitu transmisji danych, za co operator może naliczyć dodatkowe opłaty.\n\nWybierz <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, aby pobrać po połączeniu z siecią Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Dodaj do kolejki"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Anuluj"</string>
<string name="button_start_now" msgid="792123674007840864">"Rozpocznij teraz"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 4e38cba2..31a52bdd 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permite que a aplicação aceda às funções avançadas do gestor de transferências. As aplicações maliciosas podem utilizar esta permissão para interromper transferências e aceder a informações privadas."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Enviar notificações de transferências."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permite que a aplicação envie notificações acerca de transferências concluídas. As aplicações maliciosas podem utilizar esta permissão para confundir outras aplicações que transfiram ficheiros."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Ver todas transf. p/ armaz. USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Ver todas as transferências para o cartão SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permite que a aplicação veja todas as transferências efetuadas para o cartão SD, independentemente da aplicação utilizada nas transferências."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservar espaço na cache de transferência"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permite que a app transfira ficheiros p/ cache transf., os quais não podem ser automaticamente eliminados quando o gestor transf. necessitar de mais espaço."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"transferir ficheiros sem notificação"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Tam. transf. exige Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Interrompida em 2º plano"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Transf. demasiado grande para a rede do operador"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Deve utilizar uma rede Wi-Fi para concluir esta transferência de <xliff:g id="SIZE">%s </xliff:g>. \n\nToque em <xliff:g id="QUEUE_TEXT">%s </xliff:g> para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Deve utilizar uma rede Wi-Fi para concluir esta transferência de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nToque em <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Colocar em fila para transferir mais tarde?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Iniciar esta transferência de <xliff:g id="SIZE">%s </xliff:g> poderá reduzir a duração da bateria e/ou resultar numa utilização excessiva da ligação móvel de dados, o que pode levar a uma cobrança por parte do operador móvel, dependendo do seu plano de dados.\n\n Toque em <xliff:g id="QUEUE_TEXT">%s</xliff:g> para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Iniciar esta transferência de <xliff:g id="SIZE">%1$s </xliff:g> poderá reduzir a duração da bateria e/ou resultar numa utilização excessiva da ligação móvel de dados, o que pode levar a uma cobrança por parte do operador móvel, dependendo do seu plano de dados.\n\n Toque em <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Fila"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancelar"</string>
<string name="button_start_now" msgid="792123674007840864">"Começar agora"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index f6d99647..9fecd36c 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permite que o app acesse funções avançadas do gerenciador de download. Apps maliciosos podem usar essa ação para interromper downloads e acessar informações privadas."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Enviar notificações de download."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permite que o app envie notificações sobre downloads concluídos. Apps maliciosos podem usar esse envio para confundir outros apps que fazem download de arquivos."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Ver downloads armaz. USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Ver todos os downloads para o cartão SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permite que o app veja todos os downloads do cartão SD, independentemente de sua origem."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservar espaço no cache de download"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permite que o aplic. faça download de arquivos no cache de downloads, que não podem ser excl. automatic. quando o gerenc. de download precisar de mais espaço."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"fazer download de arquivos sem notificação"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"O tamanho do download requer Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Paus. em segundo plano."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Download muito grande para a rede da operadora"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Você deve usar o Wi-Fi para completar o download de <xliff:g id="SIZE">%s </xliff:g>. \n\nToque em <xliff:g id="QUEUE_TEXT">%s </xliff:g> para começar o download da próxima vez que você estiver conectado a uma rede Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Você deve usar o Wi-Fi para completar o download de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nToque em <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> para começar o download da próxima vez que você estiver conectado a uma rede Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Colocar em fila para download mais tarde?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"O download de <xliff:g id="SIZE">%s </xliff:g> agora diminui a vida da bateria e resulta no uso excess. da conexão, levando a cobr. de acordo com seu plano de dados.\n\n Toque em <xliff:g id="QUEUE_TEXT">%s</xliff:g> para fazer o download quando conect. a uma rede Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"O download de <xliff:g id="SIZE">%1$s </xliff:g> agora diminui a vida da bateria e resulta no uso excess. da conexão, levando a cobr. de acordo com seu plano de dados.\n\n Toque em <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> para fazer o download quando conect. a uma rede Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Fila"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Cancelar"</string>
<string name="button_start_now" msgid="792123674007840864">"Iniciar agora"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index 22e93c36..c2d33fe1 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Permite aplicației să acceseze funcțiile avansate ale managerului de descărcări. Aplicațiile rău intenționate pot utiliza această permisiune pentru a perturba descărcările și pentru a accesa informații private."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Trimiteți notificările descărcării."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Permite aplicației să trimită notificări despre descărcările finalizate. Aplicațiile malware pot folosi această permisiune pentru a deruta alte aplicații care descarcă fișiere."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Vedeți desc. în stoc. USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Vizualizați toate descărcările pe cardul SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Permite aplicației să vizualizeze toate descărcările efectuate pe cardul SD, indiferent de aplicația care le-a descărcat."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervați spațiu în memoria cache de descărcare"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Permite aplic. să descarce fișiere în memoria cache de desc., care nu poate fi ștearsă în mod automat când managerul de desc. are nevoie de mai mult spațiu."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"descărcarea fișierelor fără notificare"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Dimen. desc. nec. Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Întreruptă în fundal."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Descărcare prea mare pentru rețeaua operatorului"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Trebuie să utilizați Wi-Fi pentru a finaliza această descărcare de <xliff:g id="SIZE">%s </xliff:g>. \n\nAtingeți <xliff:g id="QUEUE_TEXT">%s </xliff:g> pentru a începe această descărcare data viitoare când vă conectați la o rețea Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Trebuie să utilizați Wi-Fi pentru a finaliza această descărcare de <xliff:g id="SIZE">%1$s </xliff:g>. \n\nAtingeți <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> pentru a începe această descărcare data viitoare când vă conectați la o rețea Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Puneți în așteptare pentru descărcare ulterioară?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Pornirea ac.desc.de <xliff:g id="SIZE">%s </xliff:g> acum impl.scurt.dur.de viață a bater.și/sau utiliz.exces.a conex.de date mob.și tax.suplim.din partea oper.de telef.mob.,cf.plan.de date.\n\n Ating. <xliff:g id="QUEUE_TEXT">%s</xliff:g> pt.a înc.desc.la conect.la Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Pornirea ac.desc.de <xliff:g id="SIZE">%1$s </xliff:g> acum impl.scurt.dur.de viață a bater.și/sau utiliz.exces.a conex.de date mob.și tax.suplim.din partea oper.de telef.mob.,cf.plan.de date.\n\n Ating. <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> pt.a înc.desc.la conect.la Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Listă de așteptare"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Anulați"</string>
<string name="button_start_now" msgid="792123674007840864">"Începeți acum"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index a0fe2ffe..6f7fa4ed 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Приложение получит доступ к расширенным функциям диспетчера загрузок. Вредоносные программы смогут таким образом прерывать загрузки и просматривать личную информацию."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Отправить уведомление о загрузке."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Приложение сможет отправлять уведомления о завершенных загрузках. Вредоносные программы смогут таким образом мешать работе приложений, загружающих файлы."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Отслеживать все загрузки на USB-накопитель"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Просмотреть все загрузки на SD-карту"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Приложение получит доступ ко всем загрузкам на SD-карте независимо от того, через какое ПО они были загружены."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Резервировать место в кеше загрузки"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Приложение сможет загружать файлы в кеш загрузки (который не может быть автоматически очищен), если менеджеру загрузки потребуется больше места."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"Скачивание файлов без уведомления"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Загрузка только по Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Загрузка приостановлена"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Слишком большой файл для сети оператора"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Для завершения загрузки файла размером <xliff:g id="SIZE">%s </xliff:g> необходимо подключение к сети Wi-Fi.\n\nЧтобы продолжить загрузку позже через Wi-Fi, нажмите <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Для завершения загрузки файла размером <xliff:g id="SIZE">%1$s </xliff:g> необходимо подключение к сети Wi-Fi.\n\nЧтобы продолжить загрузку позже через Wi-Fi, нажмите <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Поставить в очередь на загрузку позже?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Если загрузить <xliff:g id="SIZE">%s </xliff:g> сейчас, батарея может быстро разрядиться. Также не исключено превышение трафика и, как результат, увеличение расходов на связь.\n\nЧтобы выполнить загрузку позже через Wi-Fi, нажмите <xliff:g id="QUEUE_TEXT">%s</xliff:g>."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Если загрузить <xliff:g id="SIZE">%1$s </xliff:g> сейчас, батарея может быстро разрядиться. Также не исключено превышение трафика и, как результат, увеличение расходов на связь.\n\nЧтобы выполнить загрузку позже через Wi-Fi, нажмите <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Добавить в очередь"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Отмена"</string>
<string name="button_start_now" msgid="792123674007840864">"Запустить"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index 6f5b57ae..dd3cece5 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරුගේ උසස් විශේෂාංග ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"බාගැනීමේ දැනුම්දීම් යවන්න."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"සම්පුර්ණ වූ බාගැනීම් පිලිබඳ දැනුම්දීම් යැවීමට යෙදුමට අවසර දෙන්න. කරදරකාරී යෙදුම් වලට මෙය යොදාගනිමින් ගොනු බාගත කරන වෙනත් යෙදුම් අමාරුවේ දැමිය හැක."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB ආචයනය වෙත සියලු බාගැනීම් බලන්න"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD පත වෙත සියලු බාගැනීම් බලන්න"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"බාගත්තේ කුමන යෙදුමද යන්න සැලකිල්ලට නොගෙන, SD කාඩ්පත වෙත සියලු බාගැනීම් බැලීමට යෙදුමට අවසර දෙන්න."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"බාගැනීම් හැඹිලියේ ඉඩ වෙන් කරගන්න"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"යෙදුමට ගොනු බාගැනීමේ හැඹිලියට බාගැනීමට අවසර දෙන්න, එය බාගැනීමේ කළමනාකරුට තවත් ඉඩ අවශ්‍ය වූ විට ස්වයංක්‍රීයව මැකිය නොහැක."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"දැනුම්දීමකින් තොරව ගොනු බාගන්න"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"බාගැනීමේ ප්‍රමාණයට Wi-Fi අවශ්‍යවේ."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"පසුබිමේ නවතා ඇත."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ක්‍රියාකරු ජාලයට බාගැනීම විශාල වැඩිය"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"මෙම <xliff:g id="SIZE">%s </xliff:g> බාගැනීම සිදු කිරීමට ඔබ Wi-Fi භාවිතා කළ යුතුය. \n\nඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත <xliff:g id="QUEUE_TEXT">%s </xliff:g> ස්පර්ශ කරන්න."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"මෙම <xliff:g id="SIZE">%1$s </xliff:g> බාගැනීම සිදු කිරීමට ඔබ Wi-Fi භාවිතා කළ යුතුය. \n\nඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ස්පර්ශ කරන්න."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"පසුව බාගැනීමට පෝලිමේ තබන්නද?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"මෙම <xliff:g id="SIZE">%s </xliff:g> බාගැනීම දැන් ආරම්භ කිරීමෙන් ඔබගේ බැටරි ආයු කාලය අඩුවේ සහ/හෝ ඔබගේ ජංගම දත්ත සම්බන්ධතාවය භාවිතය අධික වේ, එය ඔබගේ දත්ත සැලසුමට අනුව විශාල ගෙවීමක් සිදුවිය හැක.\n\n ඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත <xliff:g id="QUEUE_TEXT">%s</xliff:g> ස්පර්ශ කරන්න."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"මෙම <xliff:g id="SIZE">%1$s </xliff:g> බාගැනීම දැන් ආරම්භ කිරීමෙන් ඔබගේ බැටරි ආයු කාලය අඩුවේ සහ/හෝ ඔබගේ ජංගම දත්ත සම්බන්ධතාවය භාවිතය අධික වේ, එය ඔබගේ දත්ත සැලසුමට අනුව විශාල ගෙවීමක් සිදුවිය හැක.\n\n ඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ස්පර්ශ කරන්න."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"පෝලිම"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"අවලංගු කරන්න"</string>
<string name="button_start_now" msgid="792123674007840864">"දැන් අරඹන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 93f7ac5c..077be521 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Umožňuje aplikácii pristupovať k rozšíreným funkciám správcu sťahovania. Škodlivé aplikácie to môžu využiť a narušiť sťahovanie alebo získať prístup k súkromným informáciám."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Odoslať upozornenie o stiahnutí."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Umožňuje aplikácii odosielať upozornenia na dokončenie sťahovania. Škodlivé aplikácie môžu pomocou tohto nastavenia zmiasť iné aplikácie, ktoré preberajú súbory."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Zobr. preber. do ukl. priestoru USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Zobrazenie všetkých položiek stiahnutých na SD kartu"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Povolí aplikácii zobraziť všetky súbory stiahnuté na SD kartu bez ohľadu na aplikáciu, pomocou ktorej boli stiahnuté."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervovať miesto vo vyrovnáv. pamäti sťahovania"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Umožňuje aplikácii sťahovať súbory do vyrovnávacej pamäte sťahovania, ktorú nie je možné automaticky odstrániť, keď správca sťahovania potrebuje viac miesta."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"sťahovať súbory bez upozornenia"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Vzhľadom na veľkosť preberaného súboru sa vyžaduje pripojenie Wi‑Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pozastavené na pozadí."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Preberaný súbor je pre sieť operátora príliš veľký"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Na dokončenie sťahovania tohto súboru s veľkosťou <xliff:g id="SIZE">%s </xliff:g> je potrebné pripojenie Wi‑Fi. \n\nAk chcete spustiť sťahovanie pri ďalšom pripojení k sieti Wi‑Fi, dotknite sa možnosti <xliff:g id="QUEUE_TEXT">%s </xliff:g>."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Na dokončenie sťahovania tohto súboru s veľkosťou <xliff:g id="SIZE">%1$s </xliff:g> je potrebné pripojenie Wi‑Fi. \n\nAk chcete spustiť sťahovanie pri ďalšom pripojení k sieti Wi‑Fi, dotknite sa možnosti <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Zaradiť do zoznamu na neskoršie stiahnutie?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Sťahovanie (<xliff:g id="SIZE">%s </xliff:g>) môže skrátiť výdrž batérie alebo príliš zaťažiť mobilné pripojenie a viesť k účtovaniu poplatkov podľa dát. programu.\n\n Dotykom možnosti <xliff:g id="QUEUE_TEXT">%s</xliff:g> spustíte sťahovanie pri ďalšom pripojení k Wi‑Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Sťahovanie (<xliff:g id="SIZE">%1$s </xliff:g>) môže skrátiť výdrž batérie alebo príliš zaťažiť mobilné pripojenie a viesť k účtovaniu poplatkov podľa dát. programu.\n\n Dotykom možnosti <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> spustíte sťahovanie pri ďalšom pripojení k Wi‑Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Zoznam"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Zrušiť"</string>
<string name="button_start_now" msgid="792123674007840864">"Spustiť"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index f2227ede..0a95db04 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Dovoli aplikaciji dostopanje do dodatnih funkcij upravitelja prenosov. Zlonamerne aplikacije lahko s tem motijo prenose in dostopajo do zasebnih podatkov."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Pošlji obvestila o prenosih."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Dovoli aplikaciji pošiljanje obvestil o končanih prenosih. Zlonamerne aplikacije lahko s tem zmedejo druge aplikacije, ki prenašajo datoteke."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Prikaži vse prenose v pomnilnik USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Prikaži vse prenose na kartico SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Dovoli aplikaciji ogled vseh prenosov na kartico SD ne glede na to, katera aplikacija jih je prenesla."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezerviraj prostor v predpomnilniku za prenose"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Dovoli aplikaciji prenašanje datotek v predpomnilnik za prenose, ki ga ni mogoče samodejno izbrisati, ko upravitelj prenosov potrebuje več prostora."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"prenos datotek brez obvestila"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Zahtev. je povez. Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Začas. ustav. v ozadju."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Prenos je prevelik za operaterjevo omrežje"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Če želite dokončati prenos, velik <xliff:g id="SIZE">%s </xliff:g>, morate uporabiti povezavo Wi-Fi. \n\nDotaknite se možnosti <xliff:g id="QUEUE_TEXT">%s </xliff:g>, če želite začeti ta prenos naslednjič, ko boste povezani v omrežje Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Če želite dokončati prenos, velik <xliff:g id="SIZE">%1$s </xliff:g>, morate uporabiti povezavo Wi-Fi. \n\nDotaknite se možnosti <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, če želite začeti ta prenos naslednjič, ko boste povezani v omrežje Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Želite postaviti v čakalno vrsto za poznejši prenos?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Zaradi prenosa, velikega <xliff:g id="SIZE">%s </xliff:g>, se lahko porabi baterija in/ali prekomerno uporabijo mobilni podatki, kar vam lahko operater glede na naročnino zaračuna.\n\nDotaknite se <xliff:g id="QUEUE_TEXT">%s</xliff:g>, če želite prenesti, ko boste povezani v Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Zaradi prenosa, velikega <xliff:g id="SIZE">%1$s </xliff:g>, se lahko porabi baterija in/ali prekomerno uporabijo mobilni podatki, kar vam lahko operater glede na naročnino zaračuna.\n\nDotaknite se <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, če želite prenesti, ko boste povezani v Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Čakalna vrsta"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Prekliči"</string>
<string name="button_start_now" msgid="792123674007840864">"Začni zdaj"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index f94be50e..3671c30a 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"E lejon aplikacionin të qaset te funksionet e përparuara të menaxherit të shkarkimeve. Aplikacionet keqdashëse mund ta përdorin këtë për të dëmtuar shkarkimet dhe për t\'u qasur në informacione private."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Dërgo njoftime për shkarkimet."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"E lejon aplikacionin të dërgojë njoftime për shkarkimet e përfunduara. Aplikacionet keqdashëse mund ta përdorin këtë për të çorientuar aplikacionet e tjera që shkarkojnë skedarë."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Shiko të gjitha shkarkimet në USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Shiko të gjitha shkarkimet në kartën SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"E lejon aplikacionin të shikojë të gjitha shkarkimet në kartën SD, pavarësisht se cili aplikacion i ka shkarkuar."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Rezervo hapësirë në memorien e përkohshme të shkarkimeve"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"E lejon aplikacionin të shkarkojë skedarë në memorien e përkohshme të shkarkimeve, e cila nuk mund të fshihet automatikisht kur menaxheri i shkarkimeve kërkon më shumë hapësirë."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"shkarko skedarët pa njoftim"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Madhësia e shkarkimit kërkon lidhje Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"U ndërpre në sfond."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Shkarkimi është tepër i madh për rrjetin e operatorit"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Duhet të përdorësh Wi-Fi për të përfunduar këtë shkarkim <xliff:g id="SIZE">%s </xliff:g>. \n\nPrek <xliff:g id="QUEUE_TEXT">%s </xliff:g> për ta nisur këtë shkarkim herën tjetër kur të jesh i lidhur me një rrjet Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Duhet të përdorësh Wi-Fi për të përfunduar këtë shkarkim <xliff:g id="SIZE">%1$s </xliff:g>. \n\nPrek <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> për ta nisur këtë shkarkim herën tjetër kur të jesh i lidhur me një rrjet Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Të vendoset në radhë për t\'u shkarkuar më vonë?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Nisja e këtij shkarkimi <xliff:g id="SIZE">%s </xliff:g> tani mund të shkurtojë jetëgjatësinë e baterisë dhe/ose të shkaktojë përdorim të tepërt të lidhjes tënde të të dhënave celulare, gjë që mund të sjellë tarifa nga operatori yt celular në varësi të planit tënd të të dhënave.\n\n Prek <xliff:g id="QUEUE_TEXT">%s</xliff:g> për ta nisur këtë shkarkim herën tjetër kur të jesh i lidhur me një rrjet Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Nisja e këtij shkarkimi <xliff:g id="SIZE">%1$s </xliff:g> tani mund të shkurtojë jetëgjatësinë e baterisë dhe/ose të shkaktojë përdorim të tepërt të lidhjes tënde të të dhënave celulare, gjë që mund të sjellë tarifa nga operatori yt celular në varësi të planit tënd të të dhënave.\n\n Prek <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> për ta nisur këtë shkarkim herën tjetër kur të jesh i lidhur me një rrjet Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Vendos në radhë"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Anulo"</string>
<string name="button_start_now" msgid="792123674007840864">"Fillo tani"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index ec9c9e59..87fe2c3e 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Омогућава апликацији да приступа напредним функцијама менаџера преузимања. Злонамерне апликације могу помоћу тога да ометају преузимања и приступају приватним информацијама."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Шаљите обавештења о преузимањима."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Омогућава апликацији да шаље обавештења о довршеним преузимањима. Злонамерне апликације могу помоћу тога да збуне остале апликације које преузимају датотеке."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Погледајте сва преузимања у USB меморију"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Сва преузимања на SD картицу"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Омогућава апликацији да види све ставке преузете на SD картицу, без обзира на то која апликација их је преузела."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Резервиши простор у кешу за преузимање"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Омогућава апликацији да преузима датотеке у кеш за преузимање који не може аутоматски да се избрише када је менаџеру преузимања потребно још простора."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"преузми датотеке без обавештења"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Величина ставке захтева Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Паузирано у позадини."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Преузимање је превелико за мрежу оператера"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Морате да користите Wi-Fi да бисте довршили ово преузимање од <xliff:g id="SIZE">%s </xliff:g>. \n\nДодирните <xliff:g id="QUEUE_TEXT">%s </xliff:g> да бисте започели ово преузимање када се следећи пут повежете са Wi-Fi мрежом."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Морате да користите Wi-Fi да бисте довршили ово преузимање од <xliff:g id="SIZE">%1$s </xliff:g>. \n\nДодирните <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> да бисте започели ово преузимање када се следећи пут повежете са Wi-Fi мрежом."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Желите ли да ставите у ред за будуће преузимање?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Овим преузимањем од <xliff:g id="SIZE">%s </xliff:g> можете да скратите век трајања батерије и/или претерано користите мобилну везу за пренос података, што може да доведе до трошкова код мобилног оператера сходно тарифном пакету.\n\n Додирните <xliff:g id="QUEUE_TEXT">%s</xliff:g> да бисте започели ово преузимање када се поново повежете са Wi-Fi мрежом."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Овим преузимањем од <xliff:g id="SIZE">%1$s </xliff:g> можете да скратите век трајања батерије и/или претерано користите мобилну везу за пренос података, што може да доведе до трошкова код мобилног оператера сходно тарифном пакету.\n\n Додирните <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> да бисте започели ово преузимање када се поново повежете са Wi-Fi мрежом."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Ред"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Откажи"</string>
<string name="button_start_now" msgid="792123674007840864">"Започни одмах"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index dce169e2..4a902ee3 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Tillåter att appen får åtkomst till nedladdningshanterarens avancerade funktioner. Skadliga program kan använda detta för att störa nedladdningar och komma åt privata uppgifter."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Skicka meddelande om nedladdning."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Tillåter att appen skickar meddelanden om slutförda nedladdningar. Skadliga appar kan använda detta för att störa andra appar som laddar ned filer."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Visa nedladdningar till USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Visa alla nedladdningar till SD-kort"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Tillåter att appen ser alla nedladdningar till SD-kortet, oavsett vilken app som laddat ned innehållet."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Reservera utrymme i nedladdningscachen"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Tillåter att appen laddar ned filer till hämtningscachen som inte kan tas bort automatiskt när hämtningshanteraren behöver mer utrymme."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ladda ned filer utan avisering"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Nedladdningen kräver Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Pausad i bakgrunden."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Nedladdningen är för stor för operatörsnätverket"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Du måste använda Wi-Fi om du vill slutföra nedladdningen på <xliff:g id="SIZE">%s </xliff:g>. \n \n Tryck på <xliff:g id="QUEUE_TEXT">%s </xliff:g> om du vill påbörja nedladdningen nästa gång du är ansluten till ett Wi-Fi-nätverk."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Du måste använda Wi-Fi om du vill slutföra nedladdningen på <xliff:g id="SIZE">%1$s </xliff:g>. \n \n Tryck på <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> om du vill påbörja nedladdningen nästa gång du är ansluten till ett Wi-Fi-nätverk."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Vill du ställa den i kö för nedladdning senare?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Om du laddar ned <xliff:g id="SIZE">%s </xliff:g> kan det leda till att batteritiden minskar eller att dataanslutningen överbelastas. Det kan i sin tur innebära att operatören tar ut högre avgifter, beroende på abonnemang.\n\n Tryck på <xliff:g id="QUEUE_TEXT">%s</xliff:g> om du vill starta nedladdningen nästa gång mobilen är ansluten till ett Wi-Fi-nätverk."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Om du laddar ned <xliff:g id="SIZE">%1$s </xliff:g> kan det leda till att batteritiden minskar eller att dataanslutningen överbelastas. Det kan i sin tur innebära att operatören tar ut högre avgifter, beroende på abonnemang.\n\n Tryck på <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> om du vill starta nedladdningen nästa gång mobilen är ansluten till ett Wi-Fi-nätverk."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Kö"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Avbryt"</string>
<string name="button_start_now" msgid="792123674007840864">"Starta nu"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index f7917354..4ec1bd33 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Huruhusu programu kufikia vitendaji mahiri vya kidhibiti vipakuliwa. Programu hasidi zinaweza kutumia hii ili kutatiza vipakuliwa na kufikia maelezo ya kibinafsi."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Tuma arifa za vipakuliwa."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Huruhusu programu kutuma notisi kuhusu vipakuliwa vilivyokamilika. Programu hasidi zinaweza kutumia hii kuchanganya programu zingine ambazo hupakua faili."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Angalia vipakuliwa vyote vilivyowekwa kwenye hifadhi ya USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Tazama vipakuliwa vyote vilivyoenda kwenye kadi ya SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Huruhusu programu kuona vipakuliwa vyote kwenye kadi ya SD, pasi kuzingatia ni programu gani iliyozipakua."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Weka nafasi katika akiba ya upakuaji"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Huruhusu programu kupakua faili hadi akiba ya vipakuliwa ambayo haiwezi kufutwa kiotomatiki wakati kidhibiti upakuaji kinahitaji nafasi zaidi."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"kupakua faili bila kutoa arifa"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Ukubwa wa kipakuzi uhitaji Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Imesitishwa katika usuli."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Kipakuzi ni kikubwa zaidi kwa mtandao wa mtoa huduma"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Lazima utumia Wi-Fi ili ukamilishe kipakuzi cha <xliff:g id="SIZE">%s </xliff:g>. \n\nGusa <xliff:g id="QUEUE_TEXT">%s </xliff:g> ili kuanzisha upakuaji huu wakati utakapounganishwa tena kwenye mtandao wa Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Lazima utumia Wi-Fi ili ukamilishe kipakuzi cha <xliff:g id="SIZE">%1$s </xliff:g>. \n\nGusa <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ili kuanzisha upakuaji huu wakati utakapounganishwa tena kwenye mtandao wa Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Weka katika foleni ya kupakulia baadaye?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Kuanza kupakua kipakuzi hiki cha <xliff:g id="SIZE">%s </xliff:g> kunaweza kufupisha maisha ya betri yako na / au kusababisha matumizi makubwa ya muunganisho wa data wa simu yako ya mkononi, jambo ambalo linaweza kusababisha kutozwa na mtoa huduma wako wa simu ya mkononi kulingana na mpango wako wa data. \n \n Guza <xliff:g id="QUEUE_TEXT">%s</xliff:g> ili kuanza kupakua wakati utakapokuwa umeunganishwa na mtandao wa Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Kuanza kupakua kipakuzi hiki cha <xliff:g id="SIZE">%1$s </xliff:g> kunaweza kufupisha maisha ya betri yako na / au kusababisha matumizi makubwa ya muunganisho wa data wa simu yako ya mkononi, jambo ambalo linaweza kusababisha kutozwa na mtoa huduma wako wa simu ya mkononi kulingana na mpango wako wa data. \n \n Guza <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ili kuanza kupakua wakati utakapokuwa umeunganishwa na mtandao wa Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Foleni"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Ghairi"</string>
<string name="button_start_now" msgid="792123674007840864">"Anza sasa"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 68b3e069..a3c1e68f 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"பதிவிறக்க நிர்வாகியின் மேம்பட்ட செயல்பாடுகளை அணுகுவதற்குப் ஆப்ஸை அனுமதிக்கிறது. பதிவிறக்கங்களைத் தடைசெய்யவும், தனிப்பட்டத் தகவலை அணுகவும் தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"பதிவிறக்க அறிவிப்புகளை அனுப்பவும்."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"முடிந்த பதிவிறக்கங்கள் குறித்த அறிவிப்புகளை அனுப்புவதற்குப் ஆப்ஸை அனுமதிக்கிறது. கோப்புகளைப் பதிவிறக்கும் பிற பயன்பாடுகளைக் குழப்புவதற்கு தீங்கிழைக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB சேமிப்பிடத்தில் உள்ள எல்லா பதிவிறக்கங்களையும் பார்த்தல்"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD கார்டில் உள்ள எல்லா பதிவிறக்கங்களையும் பார்த்தல்"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"எந்த ஆப்ஸ் பதிவிறக்கியது என்பதைப் பொருட்படுத்தாமல் SD கார்டில் உள்ள எல்லா பதிவிறக்கங்களையும் பார்க்க ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"தற்காலிகச் சேமிப்பில் இடத்தை முன்பதிவு செய்தல்"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"பதிவிறக்க நிர்வாகிக்கு அதிகப்படியான இடம் தேவைப்படும்போது தானாகவே நீக்கப்படாத, தற்காலிகச் சேமிப்பில் கோப்புகளைப் பதிவிறக்க ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"அறிவிப்பு இல்லாமல் கோப்புகளைப் பதிவிறக்குதல்"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"பதிவிறக்க அளவு வைஃபைக்குத் தேவை."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"பின்புலத்தில் இடைநிறுத்தப்பட்டது."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ஆபரேட்டர் நெட்வொர்க்கில் மிக அதிக அளவில் பதிவிறக்கப்படுகிறது"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%s </xliff:g> பதிவிறக்கத்தை முடிக்க நீங்கள் வைஃபை ஐப் பயன்படுத்த வேண்டும். \n\nஅடுத்த முறை நீங்கள் வைஃபை நெட்வொர்க்குடன் இணைந்தவுடன் பதிவிறக்கத்தைத் தொடங்குவதற்கு <xliff:g id="QUEUE_TEXT">%s </xliff:g> ஐத் தொடவும்."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"<xliff:g id="SIZE">%1$s </xliff:g> பதிவிறக்கத்தை முடிக்க நீங்கள் வைஃபை ஐப் பயன்படுத்த வேண்டும். \n\nஅடுத்த முறை நீங்கள் வைஃபை நெட்வொர்க்குடன் இணைந்தவுடன் பதிவிறக்கத்தைத் தொடங்குவதற்கு <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ஐத் தொடவும்."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"பின்னர் பதிவிறக்க வரிசைப்படுத்தவா?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%s </xliff:g> அளவிலான இந்தப் பதிவிறக்கத்தை இப்போது தொடங்குவது உங்கள் பேட்டரியின் ஆயுளைக் குறைக்கலாம் மற்றும்/அல்லது உங்கள் மொபைல் டேட்டா இணைப்பை அதிகமாகப் பயன்படுத்த நேரிடலாம், இதன் காரணமாக உங்கள் தரவு திட்டத்தைப் பொறுத்து உங்கள் மொபைல் ஆபரேட்டர் பேமெண்ட்கள் விதிக்கலாம்.\n\nஅடுத்த முறை நீங்கள் வைஃபை நெட்வொர்க்கில் இணைந்தவுடன் இந்தப் பதிவிறக்கத்தைத் தொடங்குவதற்கு <xliff:g id="QUEUE_TEXT">%s</xliff:g> ஐத் தொடவும்."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"<xliff:g id="SIZE">%1$s </xliff:g> அளவிலான இந்தப் பதிவிறக்கத்தை இப்போது தொடங்குவது உங்கள் பேட்டரியின் ஆயுளைக் குறைக்கலாம் மற்றும்/அல்லது உங்கள் மொபைல் டேட்டா இணைப்பை அதிகமாகப் பயன்படுத்த நேரிடலாம், இதன் காரணமாக உங்கள் தரவு திட்டத்தைப் பொறுத்து உங்கள் மொபைல் ஆபரேட்டர் பேமெண்ட்கள் விதிக்கலாம்.\n\nஅடுத்த முறை நீங்கள் வைஃபை நெட்வொர்க்கில் இணைந்தவுடன் இந்தப் பதிவிறக்கத்தைத் தொடங்குவதற்கு <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ஐத் தொடவும்."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"வரிசை"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ரத்துசெய்"</string>
<string name="button_start_now" msgid="792123674007840864">"இப்போது தொடங்கு"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index a8530227..9dc9acae 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"డౌన్‌లోడ్ మేనేజర్ యొక్క అధునాతన ఫంక్షన్‌లను యాక్సెస్ చేయడానికి యాప్‌ను అనుమతిస్తుంది. హానికరమైన యాప్‌లు డౌన్‌లోడ్‌లకు అంతరాయం కలిగించడానికి మరియు ప్రైవేట్ సమాచారాన్ని యాక్సెస్ చేయడానికి దీన్ని ఉపయోగించవచ్చు."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"డౌన్‌లోడ్ నోటిఫికేషన్‌లను పంపండి."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"పూర్తయిన డౌన్‌లోడ్‌ల గురించి నోటిఫికేషన్‌లను పంపడానికి అనువర్తనాన్ని అనుమతిస్తుంది. హానికరమైన అనువర్తనాలు ఫైల్‌లను డౌన్‌లోడ్ చేసే ఇతర అనువర్తనాలను తప్పుదారి పట్టించేందుకు దీన్ని ఉపయోగించవచ్చు."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB నిల్వకి చేయబడిన అన్ని డౌన్‌లోడ్‌లను చూడటం"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD కార్డుకి చేయబడిన అన్ని డౌన్‌లోడ్‌లను చూడటం"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"SD కార్డుకు చేయబడిన అన్ని డౌన్‌లోడ్‌లను వాటిని ఏ యాప్ డౌన్‌లోడ్ చేసిందనే దానితో సంబంధం లేకుండా చూడటానికి యాప్‌ను అనుమతిస్తుంది."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"డౌన్‌లోడ్ కాష్‌లో స్థలాన్ని నిల్వ చేయడం"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"డౌన్‌లోడ్ కాష్‌కు ఫైల్‌లను డౌన్‌లోడ్ చేయడానికి అనువర్తనాన్ని అనుమతిస్తుంది, డౌన్‌లోడ్ నిర్వాహికికి మరింత స్థలం అవసరమైనప్పుడు అవి స్వయంచాలకంగా తొలగించబడవు."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"నోటిఫికేషన్ లేకుండానే ఫైల్‌లను డౌన్‌లోడ్ చేయడం"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"డౌన్‌లోడ్ పరిమాణానికి Wi-Fi అవసరం."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"నేపథ్యంలో పాజ్ చేయబడింది."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ఆపరేటర్ నెట్‌వర్క్‌‌కు డౌన్‌లోడ్ చాలా పెద్దదిగా ఉంది"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"మీరు ఈ <xliff:g id="SIZE">%s </xliff:g> డౌన్‌లోడ్‌ను పూర్తి చేయడానికి తప్పనిసరిగా Wi-Fiని ఉపయోగించాలి. \n\nమీరు Wi-Fi నెట్‌వర్క్‌కు కనెక్ట్ చేసిన తదుపరి సారి ఈ డౌన్‌లోడ్‌ను ప్రారంభించడానికి <xliff:g id="QUEUE_TEXT">%s </xliff:g>ని తాకండి."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"మీరు ఈ <xliff:g id="SIZE">%1$s </xliff:g> డౌన్‌లోడ్‌ను పూర్తి చేయడానికి తప్పనిసరిగా Wi-Fiని ఉపయోగించాలి. \n\nమీరు Wi-Fi నెట్‌వర్క్‌కు కనెక్ట్ చేసిన తదుపరి సారి ఈ డౌన్‌లోడ్‌ను ప్రారంభించడానికి <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>ని తాకండి."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"తర్వాత డౌన్‌లోడ్ చేయడం కోసం క్రమవరుసలో ఉంచాలా?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"ఇప్పుడు ఈ <xliff:g id="SIZE">%s </xliff:g> డౌన్‌లోడ్‌ను ప్రారంభించడం వలన మీ బ్యాటరీ జీవితకాలం తగ్గవచ్చు మరియు/లేదా మీ మొబైల్ డేటా కనెక్షన్ అత్యధికంగా వినియోగించబడవచ్చు, దీని వలన మీ డేటా ప్లాన్ ఆధారంగా మీ మొబైల్ ఆపరేటర్ ఛార్జీలు విధించవచ్చు.\n\n మీరు Wi-Fi నెట్‌వర్క్‌కు కనెక్ట్ చేసిన తరువాత ఈ డౌన్‌లోడ్‌ను ప్రారంభించడానికి <xliff:g id="QUEUE_TEXT">%s</xliff:g>ని తాకండి."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"ఇప్పుడు ఈ <xliff:g id="SIZE">%1$s </xliff:g> డౌన్‌లోడ్‌ను ప్రారంభించడం వలన మీ బ్యాటరీ జీవితకాలం తగ్గవచ్చు మరియు/లేదా మీ మొబైల్ డేటా కనెక్షన్ అత్యధికంగా వినియోగించబడవచ్చు, దీని వలన మీ డేటా ప్లాన్ ఆధారంగా మీ మొబైల్ ఆపరేటర్ ఛార్జీలు విధించవచ్చు.\n\n మీరు Wi-Fi నెట్‌వర్క్‌కు కనెక్ట్ చేసిన తరువాత ఈ డౌన్‌లోడ్‌ను ప్రారంభించడానికి <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>ని తాకండి."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"క్రమవరుసలో ఉంచు"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"రద్దు చేయి"</string>
<string name="button_start_now" msgid="792123674007840864">"ఇప్పుడే ప్రారంభించు"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 4b16c37f..02012ff3 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"อนุญาตให้แอปพลิเคชันเข้าถึงฟังก์ชันขั้นสูงของตัวจัดการการดาวน์โหลด แอปพลิเคชันที่เป็นอันตรายสามารถใช้การทำงานนี้เพื่อขัดขวางการดาวน์โหลดและการเข้าถึงข้อมูลส่วนตัว"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ส่งการแจ้งเตือนการดาวน์โหลด"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"อนุญาตให้แอปพลิเคชันส่งการแจ้งเตือนเกี่ยวกับการดาวน์โหลดที่เสร็จสิ้น แอปพลิเคชันที่เป็นอันตรายสามารถใช้การทำงานนี้สร้างความสับสนแก่แอปพลิเคชันอื่นๆ ที่ดาวน์โหลดไฟล์ได้"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"ดูดาวน์โหลดทั้งหมดในที่เก็บข้อมูล USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"ดูการดาวน์โหลดลงการ์ด SD ทั้งหมด"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"อนุญาตให้แอปพลิเคชันนี้เห็นรายการดาวน์โหลดทั้งหมดในการ์ด SD ไม่ว่าจะเป็นรายการที่ดาวน์โหลดจากแอปพลิเคชันใดก็ตาม"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"สำรองพื้นที่ในแคชดาวน์โหลด"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"อนุญาตให้แอปพลิเคชันดาวน์โหลดไฟล์ไปยังแคชดาวน์โหลด ซึ่งไม่สามารถถูกนำออกโดยอัตโนมัติได้เมื่อตัวจัดการการดาวน์โหลดต้องใช้เนื้อที่เพิ่มเติม"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"ดาวน์โหลดไฟล์โดยไม่มีการแจ้งเตือน"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"ต้องใช้ WiFi ดาวน์โหลด"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"หยุดชั่วคราวในเบื้องหลัง"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"ดาวน์โหลดมีขนาดใหญ่เกินไปสำหรับเครือข่ายผู้ให้บริการ"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"คุณต้องใช้ WiFi เพื่อดาวน์โหลดไฟล์ขนาด <xliff:g id="SIZE">%s </xliff:g> นี้ให้เสร็จสิ้น\n\nแตะ <xliff:g id="QUEUE_TEXT">%s </xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่คุณเชื่อมต่อเครือข่าย WiFi"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"คุณต้องใช้ WiFi เพื่อดาวน์โหลดไฟล์ขนาด <xliff:g id="SIZE">%1$s </xliff:g> นี้ให้เสร็จสิ้น\n\nแตะ <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่คุณเชื่อมต่อเครือข่าย WiFi"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"ต่อคิวเพื่อดาวน์โหลดในภายหลังหรือไม่"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"การเริ่มดาวน์โหลดรายการขนาด <xliff:g id="SIZE">%s </xliff:g> ตอนนี้อาจลดเวลาใช้งานแบตเตอรี่และ/หรือทำให้ใช้งานข้อมูลผ่านมือถือมากไป ซึ่งผู้ให้บริการจะเก็บค่าใช้จ่ายตามแผนการใช้งานข้อมูลของคุณ\n\nแตะ <xliff:g id="QUEUE_TEXT">%s</xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่เชื่อมต่อเครือข่าย WiFi"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"การเริ่มดาวน์โหลดรายการขนาด <xliff:g id="SIZE">%1$s </xliff:g> ตอนนี้อาจลดเวลาใช้งานแบตเตอรี่และ/หรือทำให้ใช้งานข้อมูลผ่านมือถือมากไป ซึ่งผู้ให้บริการจะเก็บค่าใช้จ่ายตามแผนการใช้งานข้อมูลของคุณ\n\nแตะ <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่เชื่อมต่อเครือข่าย WiFi"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"คิว"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"ยกเลิก"</string>
<string name="button_start_now" msgid="792123674007840864">"เริ่มต้นเดี๋ยวนี้"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index 1b46bcbd..027e9e5f 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Pinapayagan ang app na i-access ang mga advanced na paggana ng download manager. Maaari itong gamitin ng mga nakapanghahamak na app upang gambalain ang mga download at mag-access ng pribadong impormasyon."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Magpadala ng mga notification sa pag-download."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Pinapayagan ang app na magpadala ng mga notification tungkol sa mga nakumpletong download. Maaari itong gamitin ng mga nakapanghahamak na app upang lituhin ang ibang mga app na nagda-download ng mga file."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Tingnan download sa USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Tingnan ang lahat ng mga pag-download sa SD card"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Pinapayagan ang app na makita ang lahat ng download sa SD card, kahit na anong app ang nag-download sa mga iyon."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Maglaan ng puwang sa download cache"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Pinapayagan ang app na mag-download ng file sa cache ng download, na hindi awtomatikong matatanggal kapag kailangan ng download manager ng higit na puwang."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"mag-download ng mga file nang walang notification"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Kailangan ng laki ng download ng Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Na-pause sa background."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Masyadong malaki ang download sa operator network"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Dapat kang gumamit ng Wi-Fi upang kumpletuhin ang <xliff:g id="SIZE">%s </xliff:g> na download na ito. \n\nPindutin ang <xliff:g id="QUEUE_TEXT">%s </xliff:g> upang simulan ang download na ito sa susunod na oras na nakakonekta ka sa Wi-Fi network."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Dapat kang gumamit ng Wi-Fi upang kumpletuhin ang <xliff:g id="SIZE">%1$s </xliff:g> na download na ito. \n\nPindutin ang <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> upang simulan ang download na ito sa susunod na oras na nakakonekta ka sa Wi-Fi network."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"I-queue para sa pag-download sa ibang pagkakataon?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ang pagsisimula sa <xliff:g id="SIZE">%s </xliff:g> na download na ito ngayon ay maaaring magpaikli sa buhay ng iyong baterya at/o magresulta sa labis-labis na paggamit ng iyong koneksyon ng data sa mobile, na maaaring humantong sa mga pagsingil ng iyong mobile operator depende sa iyong plan ng data.\n\n Pindutin ang <xliff:g id="QUEUE_TEXT">%s</xliff:g> upang simulan ang download na ito sa susunod na oras nakakonekta ka sa isang Wi-Fi network."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ang pagsisimula sa <xliff:g id="SIZE">%1$s </xliff:g> na download na ito ngayon ay maaaring magpaikli sa buhay ng iyong baterya at/o magresulta sa labis-labis na paggamit ng iyong koneksyon ng data sa mobile, na maaaring humantong sa mga pagsingil ng iyong mobile operator depende sa iyong plan ng data.\n\n Pindutin ang <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> upang simulan ang download na ito sa susunod na oras nakakonekta ka sa isang Wi-Fi network."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Queue"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Kanselahin"</string>
<string name="button_start_now" msgid="792123674007840864">"Magsimula ngayon"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index eb013ca2..eb6219f2 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Uygulamaya, indirme yöneticisinin gelişmiş fonksiyonlarına erişme izni verir. Zararlı uygulamalar indirme işlemlerini kesmek ve özel bilgilere erişmek için bunu kullanabilir."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"İndirme bildirimleri gönder."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Uygulamaya, tamamlanan indirme işlemleriyle ilgili bildirim gönderme izni verir. Zararlı uygulamalar dosya indiren diğer uygulamaların çalışma biçimini etkilemek için bunu kullanabilir."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB belleğe yapln tüm indr göster"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD karta yapılan tüm indirmeleri gör"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Uygulamaya, indiren uygulamadan bağımsız olarak, SD karta yapılan tüm indirme işlemlerini görme izni verir."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"İndirme önbelleğinde alan ayır"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Uygulamaya, dosyaları indirme önbelleğine indirme izni verir. İndirme önbelleği indirme yöneticisine daha fazla alan gerektiğinde otomatik olarak silinemez."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"dosyaları bildirimde bulunmadan indirme"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"İndirme boyutu Kablosuz bağlantı gerektiriyor."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Arka planda duraklatıldı."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"İndirme boyutu operatör ağı için çok büyük"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Bu <xliff:g id="SIZE">%s </xliff:g> boyutundaki indirme işlemini tamamlamak için Kablosuz bağlantıyı kullanmalısınız. \n\nBu indirme işlemini Kablosuz ağa bir sonraki bağlanmanızda başlatmak için <xliff:g id="QUEUE_TEXT">%s </xliff:g> öğesine dokunun."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Bu <xliff:g id="SIZE">%1$s </xliff:g> boyutundaki indirme işlemini tamamlamak için Kablosuz bağlantıyı kullanmalısınız. \n\nBu indirme işlemini Kablosuz ağa bir sonraki bağlanmanızda başlatmak için <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> öğesine dokunun."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Daha sonra indirmek için kuyruğa alınsın mı?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Bu <xliff:g id="SIZE">%s </xliff:g> boyutundaki indirme işlemine şimdi başlanırsa pil ömrü kısalabilir ve/veya mobil veri bağlantınız fazla miktarda kullanılabilir ve bunun sonucunda, veri planınıza bağlı olarak mobil operatörünüz sizden ücret talep edebilir.\n\n Bu indirme işlemini Kablosuz ağa bir sonraki bağlanmanızda başlatmak için <xliff:g id="QUEUE_TEXT">%s</xliff:g> düğmesine dokunun."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Bu <xliff:g id="SIZE">%1$s </xliff:g> boyutundaki indirme işlemine şimdi başlanırsa pil ömrü kısalabilir ve/veya mobil veri bağlantınız fazla miktarda kullanılabilir ve bunun sonucunda, veri planınıza bağlı olarak mobil operatörünüz sizden ücret talep edebilir.\n\n Bu indirme işlemini Kablosuz ağa bir sonraki bağlanmanızda başlatmak için <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> düğmesine dokunun."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Kuyruğa al"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"İptal"</string>
<string name="button_start_now" msgid="792123674007840864">"Şimdi başlat"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index b52fda2f..d198e472 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Дозволяє програмі отримувати доступ до розширених функцій менеджера завантажень. Шкідливі програми можуть використовувати це для переривання завантажень і доступу до особистої інформації."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Надсилати сповіщ. про завантаж."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Дозволяє програмі надсилати сповіщення про завершені завантаження. Шкідливі програми можуть використовувати це для перешкоджання роботі інших програм, які завантажують файли."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Див. всі завантаж. на USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Див. всі завантаж. на карту SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Дозволяє програмі бачити всі завантаження на карту SD, незалежно від програми, яка їх завантажила."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Резервувати місце в кеші завантажень"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Дозволяє програмі завантажувати файли в кеш-пам’ять завантажень, яку неможливо автоматично видалити, якщо менеджеру завантажень потрібно більше місця."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"завантажувати файли без сповіщення"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Для завант.потрібен Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Призупинено у фонов.реж."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Завантаження завелике для мережі оператора"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Для цього завантаження розміром <xliff:g id="SIZE">%s </xliff:g> потрібне з’єднання з Wi-Fi. \n\nТоркніться опції <xliff:g id="QUEUE_TEXT">%s </xliff:g>, щоб виконати це завантаження під час наступного з’єднання з мережею Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Для цього завантаження розміром <xliff:g id="SIZE">%1$s </xliff:g> потрібне з’єднання з Wi-Fi. \n\nТоркніться опції <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>, щоб виконати це завантаження під час наступного з’єднання з мережею Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Поставити в чергу, щоб завантажити пізніше?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Зараз це завантаження <xliff:g id="SIZE">%s </xliff:g> може зменшити заряд акумулятора і/чи спричинити надмірне мобільне передавання даних, за що оператор може стягувати плату залежно від тарифного плану.\n\n Виберіть <xliff:g id="QUEUE_TEXT">%s</xliff:g>, щоб завантажити, коли з’явиться з’єднання Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Зараз це завантаження <xliff:g id="SIZE">%1$s </xliff:g> може зменшити заряд акумулятора і/чи спричинити надмірне мобільне передавання даних, за що оператор може стягувати плату залежно від тарифного плану.\n\n Виберіть <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>, щоб завантажити, коли з’явиться з’єднання Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"У чергу"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Скасувати"</string>
<string name="button_start_now" msgid="792123674007840864">"Почати зараз"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 42b72565..54a998c7 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"ایپ کو ڈاؤن لوڈ مینیجر کے جدید فنکشنز تک رسائی کی اجازت دیتا ہے۔ نقصان دہ ایپس ڈاؤن لوڈز کو معطل کرنے اور نجی معلومات تک رسائی حاصل کرنے کیلئے اس کا استعمال کر سکتی ہیں۔"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"ڈاؤن لوڈ اطلاعات بھیجیں۔"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"ایپ کو مکمل ڈاؤن لوڈز کے بارے میں اطلاعات بھیجنے کی اجازت دیتا ہے۔ نقصان دہ ایپس فائلیں ڈاؤن لوڈ کرنے والی دیگر ایپس کو الجھانے کیلئے اس کا استعمال کر سکتی ہیں۔"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"‏USB سٹوریج کے سب ڈاؤنلوڈز دیکھیں"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"‏SD کارڈ میں سبھی ڈاؤن لوڈز کو دیکھیں"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"‏ایپ کو SD کارڈ میں سبھی ڈاؤن لوڈز کو دیکھنے کی اجازت دیتا ہے، اس سے قطع نظر کہ کس ایپ نے ان کو ڈاؤن لوڈ کیا ہے۔"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"ڈاؤن لوڈ کیش میں جگہ محفوظ کریں"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"ایپ کو ڈاؤن لوڈ کیش میں فائلیں ڈاؤن لوڈ کرنے کی اجازت دیتا ہے، جسے ڈاؤن لوڈ مینیجر کو مزید جگہ درکار ہونے پر خود کار طور پر حذف نہیں کیا جا سکتا ہے۔"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"بغیر اطلاع کے فائلیں ڈاؤن لوڈ کریں"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"‏ڈاؤنلوڈ کیلئے Wi-Fi درکار ہے۔"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"پس منظر میں موقوف ہوگیا۔"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"آپریٹر نیٹ ورک کیلئے ڈاؤن لوڈ کافی بڑا ہے"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"‏اس <xliff:g id="SIZE">%s </xliff:g> ڈاؤن لوڈ کو مکمل کرنے کیلئے آپ کیلئے Wi-Fi استعمال کرنا ضروری ہے۔ \n\n<xliff:g id="QUEUE_TEXT">%s </xliff:g> کو ٹچ کریں تاکہ اگلی بار جب آپ کسی Wi-Fi نیٹ ورک سے مربوط ہوں تو یہ ڈاؤن لوڈ شروع کر سکیں۔"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"‏اس <xliff:g id="SIZE">%1$s </xliff:g> ڈاؤن لوڈ کو مکمل کرنے کیلئے آپ کیلئے Wi-Fi استعمال کرنا ضروری ہے۔ \n\n<xliff:g id="QUEUE_TEXT">%2$s </xliff:g> کو ٹچ کریں تاکہ اگلی بار جب آپ کسی Wi-Fi نیٹ ورک سے مربوط ہوں تو یہ ڈاؤن لوڈ شروع کر سکیں۔"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"بعد میں ڈاؤن لوڈ کرنے کیلئے قطار میں شامل ہوں؟"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"‏اس <xliff:g id="SIZE">%s </xliff:g> کے ڈاؤن لوڈ کو شروع کرنے سے آپکی بیٹری کی مدت میں کمی آسکتی ہے اور/یا اس سے آپ کے موبائل ڈیٹا کنکشن کا بہت زیادہ استعمال ہو سکتا ہے جسکی وجہ سے آپکا موبائل آپریٹر آپکے ڈیٹا پلان کے مطابق چارجز عائد کرسکتا ہے۔\n\n اگلی بار کسی Wi-Fi نیٹ ورک سے مربوط ہونے پر یہ ڈاؤن لوڈ شروع کرنے کیلئے <xliff:g id="QUEUE_TEXT">%s</xliff:g> کو ٹچ کریں۔"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"‏اس <xliff:g id="SIZE">%1$s </xliff:g> کے ڈاؤن لوڈ کو شروع کرنے سے آپکی بیٹری کی مدت میں کمی آسکتی ہے اور/یا اس سے آپ کے موبائل ڈیٹا کنکشن کا بہت زیادہ استعمال ہو سکتا ہے جسکی وجہ سے آپکا موبائل آپریٹر آپکے ڈیٹا پلان کے مطابق چارجز عائد کرسکتا ہے۔\n\n اگلی بار کسی Wi-Fi نیٹ ورک سے مربوط ہونے پر یہ ڈاؤن لوڈ شروع کرنے کیلئے <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> کو ٹچ کریں۔"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"قطار"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"منسوخ کریں"</string>
<string name="button_start_now" msgid="792123674007840864">"ابھی شروع کریں"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index ce905522..78e474c7 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Ilovaga yuklab olish menejerining qo‘shimcha funksiyalariga kirish uchun ruxsat beradi. Zararli dasturlar bundan yuklab olishlarga to‘sqinlik qilish va maxfiy ma’lumotlarga kirish uchun foydalanishi mumkin."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Yuklab olish xabarnomalarini jo‘natadi."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Ilovaga tugagan yuklab olishlar haqidagi xabarnomalarini jo‘natishga ruxsat beradi. Zararli dasturlar bundan yuklab olinayotgan fayllarni boshqalari bilan chalkashtirish uchun foydalanishi mumkin."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"USB qurilmadagi barcha yuklanmalarni ko‘rish"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"SD kartadagi barcha yuklanmalarni ko‘rish"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Ilovaga qaysi ilovalar fayllarni SD xotira kartasiga yuklab olganidan qat’iy nazar, undagi barcha fayllarni ko‘rishga ruxsat beradi."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Yuklab olish keshida joy qoldirish"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Yuklashlar menejeriga ko‘proq bo‘sh joy kerak bo‘lganda avtomatik o‘chirilmaydigan fayllarni yuklab olish keshiga yuklab olish uchun ilovaga ruxsat beradi."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"fayllarni ogohlantirishsiz yuklab olish"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Katta hajmni yuklab olish uchun Wi-Fi kerak."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Orqa fonda pauzalangan."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Tarmoq operatori aloqasi orqali yuklab olish uchun fayl hajmi katta"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Ushbu <xliff:g id="SIZE">%s </xliff:g> hajmdagi yuklab olishni tugatish uchun Wi-Fi tarmoqdan foydalanishingiz kerak. \n\nKeyingi safar Wi-Fi tarmoqqa ulanganingizda yuklab olishni boshlash uchun <xliff:g id="QUEUE_TEXT">%s </xliff:g>ni bosing."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Ushbu <xliff:g id="SIZE">%1$s </xliff:g> hajmdagi yuklab olishni tugatish uchun Wi-Fi tarmoqdan foydalanishingiz kerak. \n\nKeyingi safar Wi-Fi tarmoqqa ulanganingizda yuklab olishni boshlash uchun <xliff:g id="QUEUE_TEXT">%2$s </xliff:g>ni bosing."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Keyinroq yuklab olish uchun navbatga qo‘shilsinmi?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ushbu <xliff:g id="SIZE">%s </xliff:g> hajmdagi yuklab olishni boshlash batareya quvvatini kamaytirishi va/yoki uyali aloqa internetidan juda ko‘p foydalanib, natijada internet paketingizga ko‘ra uyali tarmoq operatoringiz tomonidan sizdan ortiqcha haq talab qilinishiga sabab bo‘lishi mumkin. \n\n Keyingi safar Wi-Fi tarmoqqa ulanganingizda yuklab olishni boshlash uchun <xliff:g id="QUEUE_TEXT">%s</xliff:g>ni tanlang."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ushbu <xliff:g id="SIZE">%1$s </xliff:g> hajmdagi yuklab olishni boshlash batareya quvvatini kamaytirishi va/yoki uyali aloqa internetidan juda ko‘p foydalanib, natijada internet paketingizga ko‘ra uyali tarmoq operatoringiz tomonidan sizdan ortiqcha haq talab qilinishiga sabab bo‘lishi mumkin. \n\n Keyingi safar Wi-Fi tarmoqqa ulanganingizda yuklab olishni boshlash uchun <xliff:g id="QUEUE_TEXT">%2$s</xliff:g>ni tanlang."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Navbat"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Bekor qilish"</string>
<string name="button_start_now" msgid="792123674007840864">"Ishga tushirish"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 1a5f829c..c54c516d 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -17,16 +17,13 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="3658948994665187911">"Trình quản lý Tải xuống"</string>
- <string name="storage_description" msgid="7982444311558023664">"Nội dung tải xuống"</string>
+ <string name="storage_description" msgid="7982444311558023664">"Tệp đã tải xuống"</string>
<string name="permlab_downloadManager" msgid="7779544811202855500">"Truy cập trình quản lý tải xuống."</string>
<string name="permdesc_downloadManager" msgid="4237406545998908947">"Cho phép ứng dụng truy cập trình quản lý tải xuống và sử dụng trình này để tải xuống tệp. Ứng dụng độc hại có thể lợi dụng điều này để làm gián đoạn quá trình tải xuống và truy cập thông tin riêng tư."</string>
<string name="permlab_downloadManagerAdvanced" msgid="7103642833308809655">"Chức năng nâng cao của trình quản lý tải xuống."</string>
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Cho phép ứng dụng truy cập các chức năng nâng cao của trình quản lý tải xuống. Ứng dụng độc hại có thể lợi dụng điều này để làm gián đoạn quá trình tải xuống và truy cập thông tin riêng tư."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Gửi thông báo tải xuống."</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Cho phép ứng dụng gửi thông báo về các bản tải xuống đã hoàn tất. Ứng dụng độc hại có thể lợi dụng điều này để gây nhầm lẫn cho các ứng dụng khác tải xuống tệp."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Xem t.cả t.xuống trong b.nhớ USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Xem tất cả nội dung tải xuống về thẻ SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Cho phép ứng dụng xem tất cả các bản tải xuống thẻ SD, bất kể ứng dụng đã tải xuống chúng là ứng dụng gì."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Giữ lại dung lượng trong bộ nhớ đệm tải xuống"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Cho phép ứng dụng tải tệp xuống bộ nhớ đệm, không thể tự động xóa bộ nhớ này khi trình quản lý tải xuống cần thêm dung lượng."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"tải xuống tệp không có thông báo"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Yêu cầu Wi-Fi."</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Đã tạm dừng trong nền."</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Bản tải xuống quá lớn so với mạng của nhà cung cấp"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Bạn phải sử dụng Wi-Fi để hoàn tất quá trình tải xuống nội dung có kích thước <xliff:g id="SIZE">%s </xliff:g> này. \n\nChạm <xliff:g id="QUEUE_TEXT">%s </xliff:g> để bắt đầu tải xuống nội dung này vào lần tiếp theo khi bạn kết nối với mạng Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Bạn phải sử dụng Wi-Fi để hoàn tất quá trình tải xuống nội dung có kích thước <xliff:g id="SIZE">%1$s </xliff:g> này. \n\nChạm <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> để bắt đầu tải xuống nội dung này vào lần tiếp theo khi bạn kết nối với mạng Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Xếp hàng đợi để tải xuống sau?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Việc bắt đầu tải xuống nội dung có kích thước <xliff:g id="SIZE">%s </xliff:g> này ngay bây giờ có thể rút ngắn tuổi thọ pin của bạn và/hoặc dẫn đến việc sử dụng quá mức kết nối dữ liệu di động của bạn, điều này có thể dẫn đến việc nhà cung cấp dịch vụ di động tính phí bạn tùy theo gói dữ liệu của bạn.\n\n Chạm <xliff:g id="QUEUE_TEXT">%s</xliff:g> để bắt đầu tải xuống nội dung này vào lần tiếp theo khi bạn kết nối với mạng Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Việc bắt đầu tải xuống nội dung có kích thước <xliff:g id="SIZE">%1$s </xliff:g> này ngay bây giờ có thể rút ngắn tuổi thọ pin của bạn và/hoặc dẫn đến việc sử dụng quá mức kết nối dữ liệu di động của bạn, điều này có thể dẫn đến việc nhà cung cấp dịch vụ di động tính phí bạn tùy theo gói dữ liệu của bạn.\n\n Chạm <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> để bắt đầu tải xuống nội dung này vào lần tiếp theo khi bạn kết nối với mạng Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Hàng đợi"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Hủy"</string>
<string name="button_start_now" msgid="792123674007840864">"Bắt đầu ngay bây giờ"</string>
@@ -55,7 +52,7 @@
</plurals>
<string name="download_remaining" msgid="3139295890887972718">"Còn lại <xliff:g id="DURATION">%s</xliff:g>"</string>
<string name="download_no_application_title" msgid="7935659741162801699">"Không thể mở tệp"</string>
- <string name="root_downloads" msgid="4098414876292351487">"Tệp tải xuống"</string>
+ <string name="root_downloads" msgid="4098414876292351487">"Tệp đã tải xuống"</string>
<string name="download_queued" msgid="3302638231377947451">"Đã xếp hàng"</string>
<string name="download_running" msgid="3925050393361158266">"Đang thực hiện"</string>
<string name="download_error" msgid="5144180777324573236">"Không thành công"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index b247c985..166409a1 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"允许该应用使用下载管理器的高级功能。恶意应用可能会借此中断下载并访问私人信息。"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"发送下载通知。"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"允许该应用发送下载已完成的通知。恶意应用可能借此伪装成其他下载文件的应用。"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"查看所有要存储至USB存储设备的下载项"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"查看下载到SD卡的全部内容"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"允许该应用查看所有下载到SD卡上的内容(无论这些内容是由哪个应用下载的)。"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"保留下载缓存中的空间"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"允许该应用将文件下载到下载缓存中(系统不会因下载管理器需要更多空间而自动删除下载缓存中的内容)。"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"直接下载文件而不显示通知"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"文件过大,需要通过WLAN网络下载。"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"已在后台暂停。"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"文件太大,不适于通过运营商网络下载"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"您必须使用WLAN完成此内容 (<xliff:g id="SIZE">%s </xliff:g>) 的下载。\n\n触摸“<xliff:g id="QUEUE_TEXT">%s </xliff:g>”可在下次连接到WLAN网络时开始下载此内容。"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"您必须使用WLAN完成此内容 (<xliff:g id="SIZE">%1$s </xliff:g>) 的下载。\n\n触摸“<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>”可在下次连接到WLAN网络时开始下载此内容。"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"稍后再加入下载队列吗?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"立即开始下载此内容 (<xliff:g id="SIZE">%s </xliff:g>) 可能会缩短电池的使用时间并/或导致过量使用移动数据连接流量(这可能导致移动运营商向您收费,具体取决于您的流量套餐)。\n\n触摸“<xliff:g id="QUEUE_TEXT">%s</xliff:g>”可在下次连接到WLAN网络时开始下载此内容。"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"立即开始下载此内容 (<xliff:g id="SIZE">%1$s </xliff:g>) 可能会缩短电池的使用时间并/或导致过量使用移动数据连接流量(这可能导致移动运营商向您收费,具体取决于您的流量套餐)。\n\n触摸“<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>”可在下次连接到WLAN网络时开始下载此内容。"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"排队"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"取消"</string>
<string name="button_start_now" msgid="792123674007840864">"立即开始"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index f5509de5..ce6c6b2f 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"允許應用程式存取下載管理員的進階功能。惡意應用程式可藉此干擾檔案下載並存取私人資訊。"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"傳送下載通知。"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"允許應用程式在完成下載時送出通知。惡意應用程式可藉此擾亂其他下載檔案的應用程式。"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"查看所有下載到 USB 儲存裝置的檔案"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"查看 SD 卡中的所有下載項目"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"允許應用程式查看 SD 記憶卡中所有下載項目,不論是透過何種應用程式下載。"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"在下載快取預留空間"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"允許應用程式將檔案下載至下載快取空間,確保檔案不會因為下載管理員需要更多空間而自動遭到刪除。"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"不顯示通知,直接下載檔案"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"這個檔案較大,需要 Wi-Fi 才能下載。"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"已在背景中暫停。"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"檔案過大,無法透過網絡供應商的網絡下載"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"您必須使用 Wi-Fi,才能完成下載這個 <xliff:g id="SIZE">%s </xliff:g> 的檔案。\n\n請在下次連接 Wi-Fi 網絡時,再輕觸 [<xliff:g id="QUEUE_TEXT">%s </xliff:g>] 開始下載。"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"您必須使用 Wi-Fi,才能完成下載這個 <xliff:g id="SIZE">%1$s </xliff:g> 的檔案。\n\n請在下次連接 Wi-Fi 網絡時,再輕觸 [<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>] 開始下載。"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"加入佇列供稍後下載?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"現在下載這個 <xliff:g id="SIZE">%s </xliff:g> 的檔案,可能會縮短電池的壽命,並 (或) 超出流動數據連線的用量上限,導致流動網絡供應商根據數據計劃向您收費。\n\n請在下次連接 Wi-Fi 網絡時,再輕觸 [<xliff:g id="QUEUE_TEXT">%s</xliff:g>] 開始下載。"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"現在下載這個 <xliff:g id="SIZE">%1$s </xliff:g> 的檔案,可能會縮短電池的壽命,並 (或) 超出流動數據連線的用量上限,導致流動網絡供應商根據數據計劃向您收費。\n\n請在下次連接 Wi-Fi 網絡時,再輕觸 [<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>] 開始下載。"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"加入下載佇列"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"取消"</string>
<string name="button_start_now" msgid="792123674007840864">"立即開始"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index b64067b5..f2a85402 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"允許應用程式存取下載管理員的進階功能。惡意應用程式可能藉此干擾檔案下載並存取私人資訊。"</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"傳送下載通知。"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"允許應用程式在完成下載時送出通知。惡意應用程式可能藉此干擾其他下載檔案的應用程式。"</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"查看所有下載到 USB 儲存裝置的內容"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"查看 SD 卡中的所有下載項目"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"允許應用程式檢視 SD 卡中所有下載項目,無論這些項目是透過何種應用程式下載。"</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"保留下載快取空間"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"允許應用程式將檔案下載至下載快取空間,確保檔案不會因為下載管理員需要挪出更多空間而遭到自動刪除。"</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"不顯示通知,直接下載檔案"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"這個檔案較大,需要透過 Wi-Fi 下載。"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"在背景中暫停。"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"檔案過大,無法透過行動電話業者的網路下載"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"你必須透過 Wi-Fi 才能完整下載這個 <xliff:g id="SIZE">%s </xliff:g> 的檔案。\n\n建議你改在下次連上 Wi-Fi 網路時,再輕觸 [<xliff:g id="QUEUE_TEXT">%s </xliff:g>] 開始下載。"</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"你必須透過 Wi-Fi 才能完整下載這個 <xliff:g id="SIZE">%1$s </xliff:g> 的檔案。\n\n建議你改在下次連上 Wi-Fi 網路時,再輕觸 [<xliff:g id="QUEUE_TEXT">%2$s </xliff:g>] 開始下載。"</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"排入佇列以供日後下載?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"現在下載這個 <xliff:g id="SIZE">%s </xliff:g> 的檔案,可能會減少電池可使用的時間,並/或超額使用行動數據連線,導致電信業者依據資費方案向你收費。\n\n建議你改在下次連上 Wi-Fi 網路時,再輕觸 [<xliff:g id="QUEUE_TEXT">%s</xliff:g>] 開始下載。"</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"現在下載這個 <xliff:g id="SIZE">%1$s </xliff:g> 的檔案,可能會減少電池可使用的時間,並/或超額使用行動數據連線,導致電信業者依據資費方案向你收費。\n\n建議你改在下次連上 Wi-Fi 網路時,再輕觸 [<xliff:g id="QUEUE_TEXT">%2$s</xliff:g>] 開始下載。"</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"佇列"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"取消"</string>
<string name="button_start_now" msgid="792123674007840864">"立即開始"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index d02c6ca2..2c2a12af 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -24,9 +24,6 @@
<string name="permdesc_downloadManagerAdvanced" msgid="2659546004160962761">"Ivumela uhlelo lokusebenza lufinyelele izinto ezijulile zesiphathi sokulayisha. Izinhlelo zokusebenza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo."</string>
<string name="permlab_downloadCompletedIntent" msgid="945913803765675685">"Thumela izaziso zokulayisha"</string>
<string name="permdesc_downloadCompletedIntent" msgid="2094706189855699533">"Ivumela uhlelo lokusebenza ukuthi ithumele izaziso yelana nokulayishwa okuqediwe. Izuhlelo lokusebenza ezinobungozi zingakusebenzisa lokhu ukudida ezinye izinsiz ezilayisha amafayel."</string>
- <string name="permlab_seeAllExternal" product="nosdcard" msgid="4084575448409212628">"Bona konke ukulanda kwisitoreji se-USB"</string>
- <string name="permlab_seeAllExternal" product="default" msgid="140058400609165726">"Bona konke ukulanda ekhadini le-SD"</string>
- <string name="permdesc_seeAllExternal" msgid="1672759909065511233">"Ivumela uhlelo lokusebenza ukuthi ibone konke okulandiwe ekhadini le-SD ngale kokubona ukuthi iluphi uhlelo lokusebenza elulandile."</string>
<string name="permlab_downloadCacheNonPurgeable" msgid="3069534308882047412">"Igcina isikhala ekulondolozeni kwesikhashana kokulanda"</string>
<string name="permdesc_downloadCacheNonPurgeable" msgid="2408760720334570420">"Ivumela uhlelo lokusebenza ukulanda amafayela okulondoloza kwesikhashana angakwazi ukususwa ngokuzenzakalelayo lapho imeneja yokulanda idinga esikhala esengeziwe."</string>
<string name="permlab_downloadWithoutNotification" msgid="8837971946078327262">"landa amafayela ngaphandle kwesaziso"</string>
@@ -39,9 +36,9 @@
<string name="notification_need_wifi_for_size" msgid="2556172885154833575">"Usayizi wokulanda udinga i-Wi-Fi"</string>
<string name="notification_paused_in_background" msgid="4328508073283591772">"Kumisiwe okwesikhashana esizindeni"</string>
<string name="wifi_required_title" msgid="1995971416871498179">"Ukulanda kukhulu kakhulu"</string>
- <string name="wifi_required_body" msgid="3067694630143784449">"Kufanele usebenzise i-Wi-Fi ukuqedela lokhu <xliff:g id="SIZE">%s </xliff:g> kulayisha. \n\nThinta Touch <xliff:g id="QUEUE_TEXT">%s </xliff:g> ukuqlisa lokhu kulayisha esikhathini esizayo uxhuaniseke enethiwekhini ye-Wi-Fi."</string>
+ <string name="wifi_required_body" msgid="3067694630143784449">"Kufanele usebenzise i-Wi-Fi ukuqedela lokhu <xliff:g id="SIZE">%1$s </xliff:g> kulayisha. \n\nThinta Touch <xliff:g id="QUEUE_TEXT">%2$s </xliff:g> ukuqlisa lokhu kulayisha esikhathini esizayo uxhuaniseke enethiwekhini ye-Wi-Fi."</string>
<string name="wifi_recommended_title" msgid="7441589306734687400">"Linda ukulanda emva kwesikhathi?"</string>
- <string name="wifi_recommended_body" msgid="1314735166699936073">"Ukuqala lokhu kulanda <xliff:g id="SIZE">%s </xliff:g> manje kungenza impilo yebhethri yakho ibe mfishane noma kungadla ukusetshenziswa okweqile kwedatha yakho yokuxhumana okuholela ekukhokhisweni inkampani yakho yenethiwekhi kuncike esivumelwaneni senu sedatha. \n\n Thinta <xliff:g id="QUEUE_TEXT">%s</xliff:g> ukuqala lokhu kulayisha esikhathini esizayo uxhumaniseke enethiwekhini ye-Wi-Fi."</string>
+ <string name="wifi_recommended_body" msgid="1314735166699936073">"Ukuqala lokhu kulanda <xliff:g id="SIZE">%1$s </xliff:g> manje kungenza impilo yebhethri yakho ibe mfishane noma kungadla ukusetshenziswa okweqile kwedatha yakho yokuxhumana okuholela ekukhokhisweni inkampani yakho yenethiwekhi kuncike esivumelwaneni senu sedatha. \n\n Thinta <xliff:g id="QUEUE_TEXT">%2$s</xliff:g> ukuqala lokhu kulayisha esikhathini esizayo uxhumaniseke enethiwekhini ye-Wi-Fi."</string>
<string name="button_queue_for_wifi" msgid="422576726189179221">"Umugqa"</string>
<string name="button_cancel_download" msgid="2430166148737975604">"Khansela"</string>
<string name="button_start_now" msgid="792123674007840864">"Qala manje"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c1529419..4d4bb12a 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -70,15 +70,6 @@
can use this to confuse other apps that download
files.</string>
- <!-- Title for permission to see all downloads to EXTERNAL [CHAR LIMIT=25] -->
- <string name="permlab_seeAllExternal" product="nosdcard">See all downloads to USB storage</string>
- <!-- Title for permission to see all downloads to EXTERNAL -->
- <string name="permlab_seeAllExternal" product="default">See all downloads to SD card</string>
- <!-- Description for the permission to see all downloads to EXTERNAL -->
- <string name="permdesc_seeAllExternal">Allows the app to see all
- downloads to the SD card, regardless of which app downloaded
- them.</string>
-
<!-- The label for the permission to download files to the download cache
that can't be automatically deleted by the download manager to free up
space [CHAR LIMIT=50] -->
@@ -157,8 +148,8 @@
download to start next time Wi-Fi is available or cancel the download altogether. [CHAR
LIMIT=200] -->
<string name="wifi_required_body">You must use Wi-Fi to complete this
- <xliff:g id="size" example="12.3KB">%s
- </xliff:g> download. \n\nTouch <xliff:g id="queue_text" example="Queue">%s
+ <xliff:g id="size" example="12.3KB">%1$s
+ </xliff:g> download. \n\nTouch <xliff:g id="queue_text" example="Queue">%2$s
</xliff:g> to start this download the next time you\'re connected to a Wi-Fi
network.</string>
@@ -172,11 +163,11 @@
downloads over the mobile network, and the user may choose to start the download over mobile
anyway or to queue for download to start next time a Wi-Fi connection is available [CHAR
LIMIT=200] -->
- <string name="wifi_recommended_body">Starting this <xliff:g id="size" example="12.3KB">%s
+ <string name="wifi_recommended_body">Starting this <xliff:g id="size" example="12.3KB">%1$s
</xliff:g> download now may shorten your battery life and/or result in
excessive usage of your mobile data connection, which can lead to charges by
your mobile operator depending on your data plan.\n\n
- Touch <xliff:g id="queue_text" example="Queue">%s</xliff:g> to start this download
+ Touch <xliff:g id="queue_text" example="Queue">%2$s</xliff:g> to start this download
the next time you\'re connected to a Wi-Fi network.</string>
diff --git a/src/com/android/providers/downloads/DownloadInfo.java b/src/com/android/providers/downloads/DownloadInfo.java
index 9ad7e755..a414bd86 100644
--- a/src/com/android/providers/downloads/DownloadInfo.java
+++ b/src/com/android/providers/downloads/DownloadInfo.java
@@ -89,6 +89,7 @@ public class DownloadInfo {
info.mMediaScanned = getInt(Downloads.Impl.COLUMN_MEDIA_SCANNED);
info.mDeleted = getInt(Downloads.Impl.COLUMN_DELETED) == 1;
info.mMediaProviderUri = getString(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI);
+ info.mMediaStoreUri = getString(Downloads.Impl.COLUMN_MEDIASTORE_URI);
info.mIsPublicApi = getInt(Downloads.Impl.COLUMN_IS_PUBLIC_API) != 0;
info.mAllowedNetworkTypes = getInt(Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES);
info.mAllowRoaming = getInt(Downloads.Impl.COLUMN_ALLOW_ROAMING) != 0;
@@ -98,6 +99,8 @@ public class DownloadInfo {
info.mDescription = getString(Downloads.Impl.COLUMN_DESCRIPTION);
info.mBypassRecommendedSizeLimit =
getInt(Downloads.Impl.COLUMN_BYPASS_RECOMMENDED_SIZE_LIMIT);
+ info.mIsVisibleInDownloadsUi
+ = getInt(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI) != 0;
synchronized (this) {
info.mControl = getInt(Downloads.Impl.COLUMN_CONTROL);
@@ -175,6 +178,7 @@ public class DownloadInfo {
public int mMediaScanned;
public boolean mDeleted;
public String mMediaProviderUri;
+ public String mMediaStoreUri;
public boolean mIsPublicApi;
public int mAllowedNetworkTypes;
public boolean mAllowRoaming;
@@ -183,6 +187,7 @@ public class DownloadInfo {
public String mTitle;
public String mDescription;
public int mBypassRecommendedSizeLimit;
+ public boolean mIsVisibleInDownloadsUi;
private List<Pair<String, String>> mRequestHeaders = new ArrayList<Pair<String, String>>();
@@ -442,7 +447,7 @@ public class DownloadInfo {
* Returns whether a file should be scanned
*/
public boolean shouldScanFile(int status) {
- return (mMediaScanned == 0)
+ return (mMediaScanned == Downloads.Impl.MEDIA_NOT_SCANNED)
&& (mDestination == Downloads.Impl.DESTINATION_EXTERNAL ||
mDestination == Downloads.Impl.DESTINATION_FILE_URI ||
mDestination == Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD)
diff --git a/src/com/android/providers/downloads/DownloadJobService.java b/src/com/android/providers/downloads/DownloadJobService.java
index d09738c2..e1b20234 100644
--- a/src/com/android/providers/downloads/DownloadJobService.java
+++ b/src/com/android/providers/downloads/DownloadJobService.java
@@ -81,6 +81,7 @@ public class DownloadJobService extends JobService {
@Override
public boolean onStopJob(JobParameters params) {
final int id = params.getJobId();
+ Log.d(TAG, "onStopJob id=" + id + ", reason=" + params.getStopReason());
final DownloadThread thread;
synchronized (mActiveThreads) {
diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java
index f8d5aae2..c68d702a 100644
--- a/src/com/android/providers/downloads/DownloadProvider.java
+++ b/src/com/android/providers/downloads/DownloadProvider.java
@@ -18,18 +18,27 @@ package com.android.providers.downloads;
import static android.provider.BaseColumns._ID;
import static android.provider.Downloads.Impl.COLUMN_DESTINATION;
+import static android.provider.Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI;
+import static android.provider.Downloads.Impl.COLUMN_MEDIASTORE_URI;
import static android.provider.Downloads.Impl.COLUMN_MEDIA_SCANNED;
-import static android.provider.Downloads.Impl.COLUMN_MIME_TYPE;
import static android.provider.Downloads.Impl.COLUMN_OTHER_UID;
+import static android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
+import static android.provider.Downloads.Impl.DESTINATION_FILE_URI;
import static android.provider.Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD;
+import static android.provider.Downloads.Impl.MEDIA_NOT_SCANNABLE;
+import static android.provider.Downloads.Impl.MEDIA_NOT_SCANNED;
+import static android.provider.Downloads.Impl.MEDIA_SCANNED;
import static android.provider.Downloads.Impl.PERMISSION_ACCESS_ALL;
import static android.provider.Downloads.Impl._DATA;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.AppOpsManager;
import android.app.DownloadManager;
import android.app.DownloadManager.Request;
import android.app.job.JobScheduler;
import android.content.ContentProvider;
+import android.content.ContentProviderClient;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
@@ -38,30 +47,42 @@ import android.content.Intent;
import android.content.UriMatcher;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
import android.database.Cursor;
import android.database.DatabaseUtils;
import android.database.SQLException;
+import android.database.TranslatingCursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;
import android.os.Binder;
+import android.os.Build;
+import android.os.Bundle;
+import android.os.Environment;
+import android.os.FileUtils;
import android.os.ParcelFileDescriptor;
import android.os.ParcelFileDescriptor.OnCloseListener;
import android.os.Process;
+import android.os.RemoteException;
+import android.os.storage.StorageManager;
import android.provider.BaseColumns;
import android.provider.Downloads;
+import android.provider.MediaStore;
import android.provider.OpenableColumns;
import android.text.TextUtils;
import android.text.format.DateUtils;
+import android.util.ArrayMap;
import android.util.Log;
+import android.util.LongArray;
+import android.util.LongSparseArray;
+import android.util.SparseArray;
+import com.android.internal.util.ArrayUtils;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
import libcore.io.IoUtils;
-import com.google.android.collect.Maps;
import com.google.common.annotations.VisibleForTesting;
import java.io.File;
@@ -74,7 +95,6 @@ import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
-import java.util.List;
import java.util.Map;
/**
@@ -84,7 +104,7 @@ public final class DownloadProvider extends ContentProvider {
/** Database filename */
private static final String DB_NAME = "downloads.db";
/** Current database version */
- private static final int DB_VERSION = 110;
+ private static final int DB_VERSION = 113;
/** Name of table in the database */
private static final String DB_TABLE = "downloads";
/** Memory optimization - close idle connections after 30s of inactivity */
@@ -134,48 +154,108 @@ public final class DownloadProvider extends ContentProvider {
Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
};
- private static final String[] sAppReadableColumnsArray = new String[] {
- Downloads.Impl._ID,
- Downloads.Impl.COLUMN_APP_DATA,
- Downloads.Impl._DATA,
- Downloads.Impl.COLUMN_MIME_TYPE,
- Downloads.Impl.COLUMN_VISIBILITY,
- Downloads.Impl.COLUMN_DESTINATION,
- Downloads.Impl.COLUMN_CONTROL,
- Downloads.Impl.COLUMN_STATUS,
- Downloads.Impl.COLUMN_LAST_MODIFICATION,
- Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE,
- Downloads.Impl.COLUMN_NOTIFICATION_CLASS,
- Downloads.Impl.COLUMN_TOTAL_BYTES,
- Downloads.Impl.COLUMN_CURRENT_BYTES,
- Downloads.Impl.COLUMN_TITLE,
- Downloads.Impl.COLUMN_DESCRIPTION,
- Downloads.Impl.COLUMN_URI,
- Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI,
- Downloads.Impl.COLUMN_FILE_NAME_HINT,
- Downloads.Impl.COLUMN_MEDIAPROVIDER_URI,
- Downloads.Impl.COLUMN_DELETED,
- OpenableColumns.DISPLAY_NAME,
- OpenableColumns.SIZE,
- };
+ private static void addMapping(Map<String, String> map, String column) {
+ if (!map.containsKey(column)) {
+ map.put(column, column);
+ }
+ }
- private static final HashSet<String> sAppReadableColumnsSet;
- private static final HashMap<String, String> sColumnsMap;
+ private static void addMapping(Map<String, String> map, String column, String rawColumn) {
+ if (!map.containsKey(column)) {
+ map.put(column, rawColumn + " AS " + column);
+ }
+ }
+ private static final Map<String, String> sDownloadsMap = new ArrayMap<>();
static {
- sAppReadableColumnsSet = new HashSet<String>();
- for (int i = 0; i < sAppReadableColumnsArray.length; ++i) {
- sAppReadableColumnsSet.add(sAppReadableColumnsArray[i]);
- }
+ final Map<String, String> map = sDownloadsMap;
+
+ // Columns defined by public API
+ addMapping(map, DownloadManager.COLUMN_ID,
+ Downloads.Impl._ID);
+ addMapping(map, DownloadManager.COLUMN_LOCAL_FILENAME,
+ Downloads.Impl._DATA);
+ addMapping(map, DownloadManager.COLUMN_MEDIAPROVIDER_URI);
+ addMapping(map, DownloadManager.COLUMN_DESTINATION);
+ addMapping(map, DownloadManager.COLUMN_TITLE);
+ addMapping(map, DownloadManager.COLUMN_DESCRIPTION);
+ addMapping(map, DownloadManager.COLUMN_URI);
+ addMapping(map, DownloadManager.COLUMN_STATUS);
+ addMapping(map, DownloadManager.COLUMN_FILE_NAME_HINT);
+ addMapping(map, DownloadManager.COLUMN_MEDIA_TYPE,
+ Downloads.Impl.COLUMN_MIME_TYPE);
+ addMapping(map, DownloadManager.COLUMN_TOTAL_SIZE_BYTES,
+ Downloads.Impl.COLUMN_TOTAL_BYTES);
+ addMapping(map, DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP,
+ Downloads.Impl.COLUMN_LAST_MODIFICATION);
+ addMapping(map, DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR,
+ Downloads.Impl.COLUMN_CURRENT_BYTES);
+ addMapping(map, DownloadManager.COLUMN_ALLOW_WRITE);
+ addMapping(map, DownloadManager.COLUMN_LOCAL_URI,
+ "'placeholder'");
+ addMapping(map, DownloadManager.COLUMN_REASON,
+ "'placeholder'");
+
+ // Columns defined by OpenableColumns
+ addMapping(map, OpenableColumns.DISPLAY_NAME,
+ Downloads.Impl.COLUMN_TITLE);
+ addMapping(map, OpenableColumns.SIZE,
+ Downloads.Impl.COLUMN_TOTAL_BYTES);
+
+ // Allow references to all other columns to support DownloadInfo.Reader;
+ // we're already using SQLiteQueryBuilder to block access to other rows
+ // that don't belong to the calling UID.
+ addMapping(map, Downloads.Impl._ID);
+ addMapping(map, Downloads.Impl._DATA);
+ addMapping(map, Downloads.Impl.COLUMN_ALLOWED_NETWORK_TYPES);
+ addMapping(map, Downloads.Impl.COLUMN_ALLOW_METERED);
+ addMapping(map, Downloads.Impl.COLUMN_ALLOW_ROAMING);
+ addMapping(map, Downloads.Impl.COLUMN_ALLOW_WRITE);
+ addMapping(map, Downloads.Impl.COLUMN_APP_DATA);
+ addMapping(map, Downloads.Impl.COLUMN_BYPASS_RECOMMENDED_SIZE_LIMIT);
+ addMapping(map, Downloads.Impl.COLUMN_CONTROL);
+ addMapping(map, Downloads.Impl.COLUMN_COOKIE_DATA);
+ addMapping(map, Downloads.Impl.COLUMN_CURRENT_BYTES);
+ addMapping(map, Downloads.Impl.COLUMN_DELETED);
+ addMapping(map, Downloads.Impl.COLUMN_DESCRIPTION);
+ addMapping(map, Downloads.Impl.COLUMN_DESTINATION);
+ addMapping(map, Downloads.Impl.COLUMN_ERROR_MSG);
+ addMapping(map, Downloads.Impl.COLUMN_FAILED_CONNECTIONS);
+ addMapping(map, Downloads.Impl.COLUMN_FILE_NAME_HINT);
+ addMapping(map, Downloads.Impl.COLUMN_FLAGS);
+ addMapping(map, Downloads.Impl.COLUMN_IS_PUBLIC_API);
+ addMapping(map, Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI);
+ addMapping(map, Downloads.Impl.COLUMN_LAST_MODIFICATION);
+ addMapping(map, Downloads.Impl.COLUMN_MEDIAPROVIDER_URI);
+ addMapping(map, Downloads.Impl.COLUMN_MEDIA_SCANNED);
+ addMapping(map, Downloads.Impl.COLUMN_MEDIASTORE_URI);
+ addMapping(map, Downloads.Impl.COLUMN_MIME_TYPE);
+ addMapping(map, Downloads.Impl.COLUMN_NO_INTEGRITY);
+ addMapping(map, Downloads.Impl.COLUMN_NOTIFICATION_CLASS);
+ addMapping(map, Downloads.Impl.COLUMN_NOTIFICATION_EXTRAS);
+ addMapping(map, Downloads.Impl.COLUMN_NOTIFICATION_PACKAGE);
+ addMapping(map, Downloads.Impl.COLUMN_OTHER_UID);
+ addMapping(map, Downloads.Impl.COLUMN_REFERER);
+ addMapping(map, Downloads.Impl.COLUMN_STATUS);
+ addMapping(map, Downloads.Impl.COLUMN_TITLE);
+ addMapping(map, Downloads.Impl.COLUMN_TOTAL_BYTES);
+ addMapping(map, Downloads.Impl.COLUMN_URI);
+ addMapping(map, Downloads.Impl.COLUMN_USER_AGENT);
+ addMapping(map, Downloads.Impl.COLUMN_VISIBILITY);
+
+ addMapping(map, Constants.ETAG);
+ addMapping(map, Constants.RETRY_AFTER_X_REDIRECT_COUNT);
+ addMapping(map, Constants.UID);
+ }
- sColumnsMap = Maps.newHashMap();
- sColumnsMap.put(OpenableColumns.DISPLAY_NAME,
- Downloads.Impl.COLUMN_TITLE + " AS " + OpenableColumns.DISPLAY_NAME);
- sColumnsMap.put(OpenableColumns.SIZE,
- Downloads.Impl.COLUMN_TOTAL_BYTES + " AS " + OpenableColumns.SIZE);
+ private static final Map<String, String> sHeadersMap = new ArrayMap<>();
+ static {
+ final Map<String, String> map = sHeadersMap;
+ addMapping(map, "id");
+ addMapping(map, Downloads.Impl.RequestHeaders.COLUMN_DOWNLOAD_ID);
+ addMapping(map, Downloads.Impl.RequestHeaders.COLUMN_HEADER);
+ addMapping(map, Downloads.Impl.RequestHeaders.COLUMN_VALUE);
}
- private static final List<String> downloadManagerColumnsList =
- Arrays.asList(DownloadManager.UNDERLYING_COLUMNS);
@VisibleForTesting
SystemFacade mSystemFacade;
@@ -185,7 +265,8 @@ public final class DownloadProvider extends ContentProvider {
/** List of uids that can access the downloads */
private int mSystemUid = -1;
- private int mDefContainerUid = -1;
+
+ private StorageManager mStorageManager;
/**
* Creates and updated database on demand when opening it.
@@ -303,6 +384,20 @@ public final class DownloadProvider extends ContentProvider {
"INTEGER NOT NULL DEFAULT 0");
break;
+ case 111:
+ addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_MEDIASTORE_URI,
+ "TEXT DEFAULT NULL");
+ addMediaStoreUris(db);
+ break;
+
+ case 112:
+ updateMediaStoreUrisFromFilesToDownloads(db);
+ break;
+
+ case 113:
+ canonicalizeDataPaths(db);
+ break;
+
default:
throw new IllegalStateException("Don't know how to upgrade to " + version);
}
@@ -342,6 +437,107 @@ public final class DownloadProvider extends ContentProvider {
}
/**
+ * Add {@link Downloads.Impl#COLUMN_MEDIASTORE_URI} for all successful downloads and
+ * add/update corresponding entries in MediaProvider.
+ */
+ private void addMediaStoreUris(@NonNull SQLiteDatabase db) {
+ final String[] selectionArgs = new String[] {
+ Integer.toString(Downloads.Impl.DESTINATION_EXTERNAL),
+ Integer.toString(Downloads.Impl.DESTINATION_FILE_URI),
+ Integer.toString(Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD),
+ };
+ final CallingIdentity token = clearCallingIdentity();
+ try (Cursor cursor = db.query(DB_TABLE, null,
+ "_data IS NOT NULL AND is_visible_in_downloads_ui != '0'"
+ + " AND (destination=? OR destination=? OR destination=?)",
+ selectionArgs, null, null, null);
+ ContentProviderClient client = getContext().getContentResolver()
+ .acquireContentProviderClient(MediaStore.AUTHORITY)) {
+ if (cursor.getCount() == 0) {
+ return;
+ }
+ final DownloadInfo.Reader reader
+ = new DownloadInfo.Reader(getContext().getContentResolver(), cursor);
+ final DownloadInfo info = new DownloadInfo(getContext());
+ final ContentValues updateValues = new ContentValues();
+ while (cursor.moveToNext()) {
+ reader.updateFromDatabase(info);
+ final ContentValues mediaValues;
+ try {
+ mediaValues = convertToMediaProviderValues(info);
+ } catch (IllegalArgumentException e) {
+ Log.e(Constants.TAG, "Error getting media content values from " + info, e);
+ continue;
+ }
+ final Uri mediaStoreUri = updateMediaProvider(client, mediaValues);
+ if (mediaStoreUri != null) {
+ updateValues.clear();
+ updateValues.put(Downloads.Impl.COLUMN_MEDIASTORE_URI,
+ mediaStoreUri.toString());
+ db.update(DB_TABLE, updateValues, Downloads.Impl._ID + "=?",
+ new String[] { Long.toString(info.mId) });
+ }
+ }
+ } finally {
+ restoreCallingIdentity(token);
+ }
+ }
+
+ /**
+ * DownloadProvider has been updated to use MediaStore.Downloads based uris
+ * for COLUMN_MEDIASTORE_URI but the existing entries would still have MediaStore.Files
+ * based uris. It's possible that in the future we might incorrectly assume that all the
+ * uris are MediaStore.DownloadColumns based and end up querying some
+ * MediaStore.Downloads specific columns. To avoid this, update the existing entries to
+ * use MediaStore.Downloads based uris only.
+ */
+ private void updateMediaStoreUrisFromFilesToDownloads(SQLiteDatabase db) {
+ try (Cursor cursor = db.query(DB_TABLE,
+ new String[] { Downloads.Impl._ID, COLUMN_MEDIASTORE_URI },
+ COLUMN_MEDIASTORE_URI + " IS NOT NULL", null, null, null, null)) {
+ final ContentValues updateValues = new ContentValues();
+ while (cursor.moveToNext()) {
+ final long id = cursor.getLong(0);
+ final Uri mediaStoreFilesUri = Uri.parse(cursor.getString(1));
+
+ final long mediaStoreId = ContentUris.parseId(mediaStoreFilesUri);
+ final String volumeName = MediaStore.getVolumeName(mediaStoreFilesUri);
+ final Uri mediaStoreDownloadsUri
+ = MediaStore.Downloads.getContentUri(volumeName, mediaStoreId);
+
+ updateValues.clear();
+ updateValues.put(COLUMN_MEDIASTORE_URI, mediaStoreDownloadsUri.toString());
+ db.update(DB_TABLE, updateValues, Downloads.Impl._ID + "=?",
+ new String[] { Long.toString(id) });
+ }
+ }
+ }
+
+ private void canonicalizeDataPaths(SQLiteDatabase db) {
+ try (Cursor cursor = db.query(DB_TABLE,
+ new String[] { Downloads.Impl._ID, Downloads.Impl._DATA},
+ Downloads.Impl._DATA + " IS NOT NULL", null, null, null, null)) {
+ final ContentValues updateValues = new ContentValues();
+ while (cursor.moveToNext()) {
+ final long id = cursor.getLong(0);
+ final String filePath = cursor.getString(1);
+ final String canonicalPath;
+ try {
+ canonicalPath = new File(filePath).getCanonicalPath();
+ } catch (IOException e) {
+ Log.e(Constants.TAG, "Found invalid path='" + filePath + "' for id=" + id);
+ continue;
+ }
+
+ updateValues.clear();
+ updateValues.put(Downloads.Impl._DATA, canonicalPath);
+ db.update(DB_TABLE, updateValues, Downloads.Impl._ID + "=?",
+ new String[] { Long.toString(id) });
+ }
+ }
+ }
+
+ /**
* Add a column to a table using ALTER TABLE.
* @param dbTable name of the table
* @param columnName name of the column to add
@@ -419,57 +615,44 @@ public final class DownloadProvider extends ContentProvider {
mOpenHelper = new DatabaseHelper(getContext());
// Initialize the system uid
mSystemUid = Process.SYSTEM_UID;
- // Initialize the default container uid. Package name hardcoded
- // for now.
- ApplicationInfo appInfo = null;
- try {
- appInfo = getContext().getPackageManager().
- getApplicationInfo("com.android.defcontainer", 0);
- } catch (NameNotFoundException e) {
- Log.wtf(Constants.TAG, "Could not get ApplicationInfo for com.android.defconatiner", e);
- }
- if (appInfo != null) {
- mDefContainerUid = appInfo.uid;
- }
- // Grant access permissions for all known downloads to the owning apps
- final SQLiteDatabase db = mOpenHelper.getReadableDatabase();
- final Cursor cursor = db.query(DB_TABLE, new String[] {
- Downloads.Impl._ID, Constants.UID }, null, null, null, null, null);
- final ArrayList<Long> idsToDelete = new ArrayList<>();
- try {
- while (cursor.moveToNext()) {
- final long downloadId = cursor.getLong(0);
- final int uid = cursor.getInt(1);
- final String ownerPackage = getPackageForUid(uid);
- if (ownerPackage == null) {
- idsToDelete.add(downloadId);
- } else {
- grantAllDownloadsPermission(ownerPackage, downloadId);
- }
- }
- } finally {
- cursor.close();
- }
- if (idsToDelete.size() > 0) {
- Log.i(Constants.TAG,
- "Deleting downloads with ids " + idsToDelete + " as owner package is missing");
- deleteDownloadsWithIds(idsToDelete);
- }
+ mStorageManager = getContext().getSystemService(StorageManager.class);
+
+ reconcileRemovedUidEntries();
return true;
}
- private void deleteDownloadsWithIds(ArrayList<Long> downloadIds) {
- final int N = downloadIds.size();
- if (N == 0) {
- return;
+ private void reconcileRemovedUidEntries() {
+ // Grant access permissions for all known downloads to the owning apps
+ final ArrayList<Long> idsToDelete = new ArrayList<>();
+ final ArrayList<Long> idsToOrphan = new ArrayList<>();
+ final LongSparseArray<String> idsToGrantPermission = new LongSparseArray<>();
+ final SQLiteDatabase db = mOpenHelper.getReadableDatabase();
+ try (Cursor cursor = db.query(DB_TABLE,
+ new String[] { Downloads.Impl._ID, Constants.UID, COLUMN_DESTINATION, _DATA },
+ Constants.UID + " IS NOT NULL", null, null, null, null)) {
+ Helpers.handleRemovedUidEntries(getContext(), cursor,
+ idsToDelete, idsToOrphan, idsToGrantPermission);
+ }
+ for (int i = 0; i < idsToGrantPermission.size(); ++i) {
+ final long downloadId = idsToGrantPermission.keyAt(i);
+ final String ownerPackageName = idsToGrantPermission.valueAt(i);
+ grantAllDownloadsPermission(ownerPackageName, downloadId);
+ }
+ if (idsToOrphan.size() > 0) {
+ Log.i(Constants.TAG, "Orphaning downloads with ids "
+ + Arrays.toString(idsToOrphan.toArray()) + " as owner package is missing");
+ final ContentValues values = new ContentValues();
+ values.putNull(Constants.UID);
+ update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
+ Helpers.buildQueryWithIds(idsToOrphan), null);
}
- final StringBuilder queryBuilder = new StringBuilder(Downloads.Impl._ID + " in (");
- for (int i = 0; i < N; i++) {
- queryBuilder.append(downloadIds.get(i));
- queryBuilder.append((i == N - 1) ? ")" : ",");
+ if (idsToDelete.size() > 0) {
+ Log.i(Constants.TAG, "Deleting downloads with ids "
+ + Arrays.toString(idsToDelete.toArray()) + " as owner package is missing");
+ delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
+ Helpers.buildQueryWithIds(idsToDelete), null);
}
- delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, queryBuilder.toString(), null);
}
/**
@@ -508,6 +691,46 @@ public final class DownloadProvider extends ContentProvider {
}
}
+ @Override
+ public Bundle call(String method, String arg, Bundle extras) {
+ switch (method) {
+ case Downloads.CALL_MEDIASTORE_DOWNLOADS_DELETED: {
+ Preconditions.checkArgument(Binder.getCallingUid() == Process.myUid(),
+ "Not allowed to call " + Downloads.CALL_MEDIASTORE_DOWNLOADS_DELETED);
+ final long[] deletedDownloadIds = extras.getLongArray(Downloads.EXTRA_IDS);
+ final String[] mimeTypes = extras.getStringArray(Downloads.EXTRA_MIME_TYPES);
+ DownloadStorageProvider.onMediaProviderDownloadsDelete(getContext(),
+ deletedDownloadIds, mimeTypes);
+ return null;
+ }
+ case Downloads.CALL_CREATE_EXTERNAL_PUBLIC_DIR: {
+ final String dirType = extras.getString(Downloads.DIR_TYPE);
+ if (!ArrayUtils.contains(Environment.STANDARD_DIRECTORIES, dirType)) {
+ throw new IllegalStateException("Not one of standard directories: " + dirType);
+ }
+ final File file = Environment.getExternalStoragePublicDirectory(dirType);
+ if (file.exists()) {
+ if (!file.isDirectory()) {
+ throw new IllegalStateException(file.getAbsolutePath() +
+ " already exists and is not a directory");
+ }
+ } else if (!file.mkdirs()) {
+ throw new IllegalStateException("Unable to create directory: " +
+ file.getAbsolutePath());
+ }
+ return null;
+ }
+ case Downloads.CALL_REVOKE_MEDIASTORE_URI_PERMS : {
+ Preconditions.checkArgument(Binder.getCallingUid() == Process.myUid(),
+ "Not allowed to call " + Downloads.CALL_REVOKE_MEDIASTORE_URI_PERMS);
+ DownloadStorageProvider.revokeAllMediaStoreUriPermissions(getContext());
+ return null;
+ }
+ default:
+ throw new UnsupportedOperationException("Unsupported call: " + method);
+ }
+ }
+
/**
* Inserts a row in the database
*/
@@ -523,14 +746,7 @@ public final class DownloadProvider extends ContentProvider {
throw new IllegalArgumentException("Unknown/Invalid URI " + uri);
}
- // copy some of the input values as it
ContentValues filteredValues = new ContentValues();
- copyString(Downloads.Impl.COLUMN_URI, values, filteredValues);
- copyString(Downloads.Impl.COLUMN_APP_DATA, values, filteredValues);
- copyBoolean(Downloads.Impl.COLUMN_NO_INTEGRITY, values, filteredValues);
- copyString(Downloads.Impl.COLUMN_FILE_NAME_HINT, values, filteredValues);
- copyString(Downloads.Impl.COLUMN_MIME_TYPE, values, filteredValues);
- copyBoolean(Downloads.Impl.COLUMN_IS_PUBLIC_API, values, filteredValues);
boolean isPublicApi =
values.getAsBoolean(Downloads.Impl.COLUMN_IS_PUBLIC_API) == Boolean.TRUE;
@@ -557,7 +773,8 @@ public final class DownloadProvider extends ContentProvider {
}
if (dest == Downloads.Impl.DESTINATION_FILE_URI) {
checkFileUriDestination(values);
-
+ } else if (dest == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD) {
+ checkDownloadedFilePath(values);
} else if (dest == Downloads.Impl.DESTINATION_EXTERNAL) {
getContext().enforceCallingOrSelfPermission(
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
@@ -569,9 +786,20 @@ public final class DownloadProvider extends ContentProvider {
throw new SecurityException("No permission to write");
}
}
+
filteredValues.put(Downloads.Impl.COLUMN_DESTINATION, dest);
}
+ ensureDefaultColumns(values);
+
+ // copy some of the input values as is
+ copyString(Downloads.Impl.COLUMN_URI, values, filteredValues);
+ copyString(Downloads.Impl.COLUMN_APP_DATA, values, filteredValues);
+ copyBoolean(Downloads.Impl.COLUMN_NO_INTEGRITY, values, filteredValues);
+ copyString(Downloads.Impl.COLUMN_FILE_NAME_HINT, values, filteredValues);
+ copyString(Downloads.Impl.COLUMN_MIME_TYPE, values, filteredValues);
+ copyBoolean(Downloads.Impl.COLUMN_IS_PUBLIC_API, values, filteredValues);
+
// validate the visibility column
Integer vis = values.getAsInteger(Downloads.Impl.COLUMN_VISIBILITY);
if (vis == null) {
@@ -600,7 +828,6 @@ public final class DownloadProvider extends ContentProvider {
filteredValues.put(Downloads.Impl.COLUMN_TOTAL_BYTES,
values.getAsLong(Downloads.Impl.COLUMN_TOTAL_BYTES));
filteredValues.put(Downloads.Impl.COLUMN_CURRENT_BYTES, 0);
- copyInteger(Downloads.Impl.COLUMN_MEDIA_SCANNED, values, filteredValues);
copyString(Downloads.Impl._DATA, values, filteredValues);
copyBoolean(Downloads.Impl.COLUMN_ALLOW_WRITE, values, filteredValues);
} else {
@@ -651,13 +878,7 @@ public final class DownloadProvider extends ContentProvider {
copyStringWithDefault(Downloads.Impl.COLUMN_DESCRIPTION, values, filteredValues, "");
// is_visible_in_downloads_ui column
- if (values.containsKey(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI)) {
- copyBoolean(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, values, filteredValues);
- } else {
- // by default, make external downloads visible in the UI
- boolean isExternal = (dest == null || dest == Downloads.Impl.DESTINATION_EXTERNAL);
- filteredValues.put(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, isExternal);
- }
+ copyBoolean(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, values, filteredValues);
// public api requests and networktypes/roaming columns
if (isPublicApi) {
@@ -667,6 +888,34 @@ public final class DownloadProvider extends ContentProvider {
copyInteger(Downloads.Impl.COLUMN_FLAGS, values, filteredValues);
}
+ final Integer mediaScanned = values.getAsInteger(Downloads.Impl.COLUMN_MEDIA_SCANNED);
+ filteredValues.put(COLUMN_MEDIA_SCANNED,
+ mediaScanned == null ? MEDIA_NOT_SCANNED : mediaScanned);
+
+ final boolean shouldBeVisibleToUser
+ = filteredValues.getAsBoolean(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI)
+ || filteredValues.getAsInteger(COLUMN_MEDIA_SCANNED) == MEDIA_NOT_SCANNED;
+ if (shouldBeVisibleToUser && filteredValues.getAsInteger(COLUMN_DESTINATION)
+ == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD) {
+ final CallingIdentity token = clearCallingIdentity();
+ try (ContentProviderClient client = getContext().getContentResolver()
+ .acquireContentProviderClient(MediaStore.AUTHORITY)) {
+ final Uri mediaStoreUri = updateMediaProvider(client,
+ convertToMediaProviderValues(filteredValues));
+ if (mediaStoreUri != null) {
+ filteredValues.put(Downloads.Impl.COLUMN_MEDIASTORE_URI,
+ mediaStoreUri.toString());
+ filteredValues.put(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI,
+ mediaStoreUri.toString());
+ filteredValues.put(COLUMN_MEDIA_SCANNED, MEDIA_SCANNED);
+ }
+ MediaStore.scanFile(getContext(),
+ new File(filteredValues.getAsString(Downloads.Impl._DATA)));
+ } finally {
+ restoreCallingIdentity(token);
+ }
+ }
+
if (Constants.LOGVV) {
Log.v(Constants.TAG, "initiating download with UID "
+ filteredValues.getAsInteger(Constants.UID));
@@ -684,7 +933,8 @@ public final class DownloadProvider extends ContentProvider {
insertRequestHeaders(db, rowID, values);
- final String callingPackage = getPackageForUid(Binder.getCallingUid());
+ final String callingPackage = Helpers.getPackageForUid(getContext(),
+ Binder.getCallingUid());
if (callingPackage == null) {
Log.e(Constants.TAG, "Package does not exist for calling uid");
return null;
@@ -699,22 +949,149 @@ public final class DownloadProvider extends ContentProvider {
Binder.restoreCallingIdentity(token);
}
- if (values.getAsInteger(COLUMN_DESTINATION) == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD
- && values.getAsInteger(COLUMN_MEDIA_SCANNED) == 0) {
- DownloadScanner.requestScanBlocking(getContext(), rowID, values.getAsString(_DATA),
- values.getAsString(COLUMN_MIME_TYPE));
+ return ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, rowID);
+ }
+
+ /**
+ * If an entry corresponding to given mediaValues doesn't already exist in MediaProvider,
+ * add it, otherwise update that entry with the given values.
+ */
+ private Uri updateMediaProvider(@NonNull ContentProviderClient mediaProvider,
+ @NonNull ContentValues mediaValues) {
+ final String filePath = mediaValues.getAsString(MediaStore.DownloadColumns.DATA);
+ Uri mediaStoreUri = getMediaStoreUri(mediaProvider, filePath);
+
+ try {
+ if (mediaStoreUri == null) {
+ mediaStoreUri = mediaProvider.insert(
+ MediaStore.Files.getContentUriForPath(filePath),
+ mediaValues);
+ if (mediaStoreUri == null) {
+ Log.e(Constants.TAG, "Error inserting into mediaProvider: " + mediaValues);
+ }
+ return mediaStoreUri;
+ } else {
+ if (mediaProvider.update(mediaStoreUri, mediaValues, null, null) != 1) {
+ Log.e(Constants.TAG, "Error updating MediaProvider, uri: " + mediaStoreUri
+ + ", values: " + mediaValues);
+ }
+ return mediaStoreUri;
+ }
+ } catch (RemoteException e) {
+ // Should not happen
+ }
+ return null;
+ }
+
+ private Uri getMediaStoreUri(@NonNull ContentProviderClient mediaProvider,
+ @NonNull String filePath) {
+ final Uri filesUri = MediaStore.setIncludePending(
+ MediaStore.Files.getContentUriForPath(filePath));
+ try (Cursor cursor = mediaProvider.query(filesUri,
+ new String[] { MediaStore.Files.FileColumns._ID },
+ MediaStore.Files.FileColumns.DATA + "=?", new String[] { filePath }, null, null)) {
+ if (cursor.moveToNext()) {
+ return ContentUris.withAppendedId(filesUri, cursor.getLong(0));
+ }
+ } catch (RemoteException e) {
+ // Should not happen
}
+ return null;
+ }
- return ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, rowID);
+ private ContentValues convertToMediaProviderValues(DownloadInfo info) {
+ final String filePath;
+ try {
+ filePath = new File(info.mFileName).getCanonicalPath();
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+ final ContentValues mediaValues = new ContentValues();
+ mediaValues.put(MediaStore.Downloads.DATA, filePath);
+ mediaValues.put(MediaStore.Downloads.SIZE, info.mTotalBytes);
+ mediaValues.put(MediaStore.Downloads.DOWNLOAD_URI, info.mUri);
+ mediaValues.put(MediaStore.Downloads.REFERER_URI, info.mReferer);
+ mediaValues.put(MediaStore.Downloads.MIME_TYPE, info.mMimeType);
+ mediaValues.put(MediaStore.Downloads.IS_PENDING,
+ Downloads.Impl.isStatusSuccess(info.mStatus) ? 0 : 1);
+ mediaValues.put(MediaStore.Downloads.OWNER_PACKAGE_NAME,
+ Helpers.getPackageForUid(getContext(), info.mUid));
+ mediaValues.put(MediaStore.Files.FileColumns.IS_DOWNLOAD, info.mIsVisibleInDownloadsUi);
+ return mediaValues;
}
- private String getPackageForUid(int uid) {
- String[] packages = getContext().getPackageManager().getPackagesForUid(uid);
- if (packages == null || packages.length == 0) {
- return null;
+ private ContentValues convertToMediaProviderValues(ContentValues downloadValues) {
+ final String filePath;
+ try {
+ filePath = new File(downloadValues.getAsString(Downloads.Impl._DATA))
+ .getCanonicalPath();
+ } catch (IOException e) {
+ throw new IllegalArgumentException(e);
+ }
+ final ContentValues mediaValues = new ContentValues();
+ mediaValues.put(MediaStore.Downloads.DATA, filePath);
+ mediaValues.put(MediaStore.Downloads.SIZE,
+ downloadValues.getAsLong(Downloads.Impl.COLUMN_TOTAL_BYTES));
+ mediaValues.put(MediaStore.Downloads.DOWNLOAD_URI,
+ downloadValues.getAsString(Downloads.Impl.COLUMN_URI));
+ mediaValues.put(MediaStore.Downloads.REFERER_URI,
+ downloadValues.getAsString(Downloads.Impl.COLUMN_REFERER));
+ mediaValues.put(MediaStore.Downloads.MIME_TYPE,
+ downloadValues.getAsString(Downloads.Impl.COLUMN_MIME_TYPE));
+ final boolean isPending = downloadValues.getAsInteger(Downloads.Impl.COLUMN_STATUS)
+ != Downloads.Impl.STATUS_SUCCESS;
+ mediaValues.put(MediaStore.Downloads.IS_PENDING, isPending ? 1 : 0);
+ mediaValues.put(MediaStore.Downloads.OWNER_PACKAGE_NAME,
+ Helpers.getPackageForUid(getContext(), downloadValues.getAsInteger(Constants.UID)));
+ mediaValues.put(MediaStore.Files.FileColumns.IS_DOWNLOAD,
+ downloadValues.getAsBoolean(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI));
+ return mediaValues;
+ }
+
+ private static Uri getFileUri(String uriString) {
+ final Uri uri = Uri.parse(uriString);
+ return TextUtils.equals(uri.getScheme(), ContentResolver.SCHEME_FILE) ? uri : null;
+ }
+
+ private void ensureDefaultColumns(ContentValues values) {
+ final Integer dest = values.getAsInteger(COLUMN_DESTINATION);
+ if (dest != null) {
+ final int mediaScannable;
+ final boolean visibleInDownloadsUi;
+ if (dest == Downloads.Impl.DESTINATION_EXTERNAL) {
+ mediaScannable = MEDIA_NOT_SCANNED;
+ visibleInDownloadsUi = true;
+ } else if (dest != DESTINATION_FILE_URI
+ && dest != DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD) {
+ mediaScannable = MEDIA_NOT_SCANNABLE;
+ visibleInDownloadsUi = false;
+ } else {
+ final File file;
+ if (dest == Downloads.Impl.DESTINATION_FILE_URI) {
+ final String fileUri = values.getAsString(Downloads.Impl.COLUMN_FILE_NAME_HINT);
+ file = new File(getFileUri(fileUri).getPath());
+ } else {
+ file = new File(values.getAsString(Downloads.Impl._DATA));
+ }
+
+ if (Helpers.isFileInExternalAndroidDirs(file.getAbsolutePath())) {
+ mediaScannable = MEDIA_NOT_SCANNABLE;
+ visibleInDownloadsUi = false;
+ } else if (Helpers.isFilenameValidInPublicDownloadsDir(file)) {
+ mediaScannable = MEDIA_NOT_SCANNED;
+ visibleInDownloadsUi = true;
+ } else {
+ mediaScannable = MEDIA_NOT_SCANNED;
+ visibleInDownloadsUi = false;
+ }
+ }
+ values.put(COLUMN_MEDIA_SCANNED, mediaScannable);
+ values.put(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, visibleInDownloadsUi);
+ } else {
+ if (!values.containsKey(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI)) {
+ values.put(COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI, true);
+ }
}
- // For permission related purposes, any package belonging to the given uid should work.
- return packages[0];
}
/**
@@ -726,27 +1103,32 @@ public final class DownloadProvider extends ContentProvider {
throw new IllegalArgumentException(
"DESTINATION_FILE_URI must include a file URI under COLUMN_FILE_NAME_HINT");
}
- Uri uri = Uri.parse(fileUri);
- String scheme = uri.getScheme();
- if (scheme == null || !scheme.equals("file")) {
+ final Uri uri = getFileUri(fileUri);
+ if (uri == null) {
throw new IllegalArgumentException("Not a file URI: " + uri);
}
final String path = uri.getPath();
- if (path == null) {
+ if (path == null || path.contains("..")) {
throw new IllegalArgumentException("Invalid file URI: " + uri);
}
final File file;
try {
file = new File(path).getCanonicalFile();
+ values.put(Downloads.Impl.COLUMN_FILE_NAME_HINT, Uri.fromFile(file).toString());
} catch (IOException e) {
throw new SecurityException(e);
}
- if (Helpers.isFilenameValidInExternalPackage(getContext(), file, getCallingPackage())) {
- // No permissions required for paths belonging to calling package
+ final int targetSdkVersion = getCallingPackageTargetSdkVersion();
+
+ if (Helpers.isFilenameValidInExternalPackage(getContext(), file, getCallingPackage())
+ || Helpers.isFilenameValidInKnownPublicDir(file.getAbsolutePath())) {
+ // No permissions required for paths belonging to calling package or
+ // public downloads dir.
return;
- } else if (Helpers.isFilenameValidInExternal(getContext(), file)) {
+ } else if (targetSdkVersion < Build.VERSION_CODES.Q
+ && Helpers.isFilenameValidInExternal(getContext(), file)) {
// Otherwise we require write permission
getContext().enforceCallingOrSelfPermission(
android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
@@ -757,12 +1139,74 @@ public final class DownloadProvider extends ContentProvider {
getCallingPackage()) != AppOpsManager.MODE_ALLOWED) {
throw new SecurityException("No permission to write to " + file);
}
+ } else {
+ throw new SecurityException("Unsupported path " + file);
+ }
+ }
+
+ private void checkDownloadedFilePath(ContentValues values) {
+ final String path = values.getAsString(Downloads.Impl._DATA);
+ if (path == null || path.contains("..")) {
+ throw new IllegalArgumentException("Invalid file path: "
+ + (path == null ? "null" : path));
+ }
+ final File file;
+ try {
+ file = new File(path).getCanonicalFile();
+ values.put(Downloads.Impl._DATA, file.getPath());
+ } catch (IOException e) {
+ throw new SecurityException(e);
+ }
+
+ if (!file.exists()) {
+ throw new IllegalArgumentException("File doesn't exist: " + file);
+ }
+
+ final int targetSdkVersion = getCallingPackageTargetSdkVersion();
+ final AppOpsManager appOpsManager = getContext().getSystemService(AppOpsManager.class);
+ final boolean runningLegacyMode = appOpsManager.checkOp(AppOpsManager.OP_LEGACY_STORAGE,
+ Binder.getCallingUid(), getCallingPackage()) == AppOpsManager.MODE_ALLOWED;
+
+ if (Binder.getCallingPid() == Process.myPid()) {
+ return;
+ } else if (Helpers.isFilenameValidInExternalPackage(getContext(), file, getCallingPackage())) {
+ // No permissions required for paths belonging to calling package.
+ return;
+ } else if ((runningLegacyMode && Helpers.isFilenameValidInPublicDownloadsDir(file))
+ || (targetSdkVersion < Build.VERSION_CODES.Q
+ && Helpers.isFilenameValidInExternal(getContext(), file))) {
+ // Otherwise we require write permission
+ getContext().enforceCallingOrSelfPermission(
+ android.Manifest.permission.WRITE_EXTERNAL_STORAGE,
+ "No permission to write to " + file);
+
+ final AppOpsManager appOps = getContext().getSystemService(AppOpsManager.class);
+ if (appOps.noteProxyOp(AppOpsManager.OP_WRITE_EXTERNAL_STORAGE,
+ getCallingPackage()) != AppOpsManager.MODE_ALLOWED) {
+ throw new SecurityException("No permission to write to " + file);
+ }
} else {
throw new SecurityException("Unsupported path " + file);
}
}
+ private int getCallingPackageTargetSdkVersion() {
+ final String callingPackage = getCallingPackage();
+ if (callingPackage != null) {
+ ApplicationInfo ai = null;
+ try {
+ ai = getContext().getPackageManager()
+ .getApplicationInfo(callingPackage, 0);
+ } catch (PackageManager.NameNotFoundException ignored) {
+ }
+ if (ai != null) {
+ return ai.targetSdkVersion;
+ }
+ }
+ return Build.VERSION_CODES.CUR_DEVELOPMENT;
+ }
+
/**
* Apps with the ACCESS_DOWNLOAD_MANAGER permission can access this provider freely, subject to
* constraints in the rest of the code. Apps without that may still access this provider through
@@ -918,33 +1362,12 @@ public final class DownloadProvider extends ContentProvider {
return qb.query(db, projection, null, null, null, null, null);
}
- if (shouldRestrictVisibility()) {
- if (projection == null) {
- projection = sAppReadableColumnsArray.clone();
- } else {
- // check the validity of the columns in projection
- for (int i = 0; i < projection.length; ++i) {
- if (!sAppReadableColumnsSet.contains(projection[i]) &&
- !downloadManagerColumnsList.contains(projection[i])) {
- throw new IllegalArgumentException(
- "column " + projection[i] + " is not allowed in queries");
- }
- }
- }
-
- for (int i = 0; i < projection.length; i++) {
- final String newColumn = sColumnsMap.get(projection[i]);
- if (newColumn != null) {
- projection[i] = newColumn;
- }
- }
- }
-
if (Constants.LOGVV) {
logVerboseQueryInfo(projection, selection, selectionArgs, sort, db);
}
final SQLiteQueryBuilder qb = getQueryBuilder(uri, match);
+
final Cursor ret = qb.query(db, projection, selection, selectionArgs, null, null, sort);
if (ret != null) {
@@ -1031,25 +1454,11 @@ public final class DownloadProvider extends ContentProvider {
}
/**
- * @return true if we should restrict the columns readable by this caller
- */
- private boolean shouldRestrictVisibility() {
- int callingUid = Binder.getCallingUid();
- return Binder.getCallingPid() != Process.myPid() &&
- callingUid != mSystemUid &&
- callingUid != mDefContainerUid;
- }
-
- /**
* Updates a row in the database
*/
@Override
public int update(final Uri uri, final ContentValues values,
final String where, final String[] whereArgs) {
- if (shouldRestrictVisibility()) {
- Helpers.validateSelection(where, sAppReadableColumnsSet);
- }
-
final Context context = getContext();
final ContentResolver resolver = context.getContentResolver();
@@ -1079,6 +1488,12 @@ public final class DownloadProvider extends ContentProvider {
filteredValues = values;
String filename = values.getAsString(Downloads.Impl._DATA);
if (filename != null) {
+ try {
+ filteredValues.put(Downloads.Impl._DATA, new File(filename).getCanonicalPath());
+ } catch (IOException e) {
+ throw new IllegalStateException("Invalid path: " + filename);
+ }
+
Cursor c = null;
try {
c = query(uri, new String[]
@@ -1114,24 +1529,64 @@ public final class DownloadProvider extends ContentProvider {
final SQLiteQueryBuilder qb = getQueryBuilder(uri, match);
count = qb.update(db, filteredValues, where, whereArgs);
- if (updateSchedule || isCompleting) {
- final long token = Binder.clearCallingIdentity();
- try (Cursor cursor = qb.query(db, null, where, whereArgs, null, null, null)) {
- final DownloadInfo.Reader reader = new DownloadInfo.Reader(resolver,
- cursor);
- final DownloadInfo info = new DownloadInfo(context);
- while (cursor.moveToNext()) {
- reader.updateFromDatabase(info);
- if (updateSchedule) {
- Helpers.scheduleJob(context, info);
+ final CallingIdentity token = clearCallingIdentity();
+ try (Cursor cursor = qb.query(db, null, where, whereArgs, null, null, null);
+ ContentProviderClient client = getContext().getContentResolver()
+ .acquireContentProviderClient(MediaStore.AUTHORITY)) {
+ final DownloadInfo.Reader reader = new DownloadInfo.Reader(resolver,
+ cursor);
+ final DownloadInfo info = new DownloadInfo(context);
+ final ContentValues updateValues = new ContentValues();
+ while (cursor.moveToNext()) {
+ reader.updateFromDatabase(info);
+ final boolean visibleToUser = info.mIsVisibleInDownloadsUi
+ || (info.mMediaScanned != MEDIA_NOT_SCANNABLE);
+ if (info.mFileName == null) {
+ if (info.mMediaStoreUri != null) {
+ // If there was a mediastore entry, it would be deleted in it's
+ // next idle pass.
+ updateValues.clear();
+ updateValues.putNull(Downloads.Impl.COLUMN_MEDIASTORE_URI);
+ qb.update(db, updateValues, Downloads.Impl._ID + "=?",
+ new String[] { Long.toString(info.mId) });
}
- if (isCompleting) {
- info.sendIntentIfRequested();
+ } else if ((info.mDestination == Downloads.Impl.DESTINATION_EXTERNAL
+ || info.mDestination == Downloads.Impl.DESTINATION_FILE_URI
+ || info.mDestination == Downloads.Impl
+ .DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD)
+ && visibleToUser) {
+ final Uri mediaStoreUri = updateMediaProvider(client,
+ convertToMediaProviderValues(info));
+ if (!TextUtils.equals(info.mMediaStoreUri,
+ mediaStoreUri == null ? null : mediaStoreUri.toString())) {
+ updateValues.clear();
+ if (mediaStoreUri == null) {
+ updateValues.putNull(Downloads.Impl.COLUMN_MEDIASTORE_URI);
+ updateValues.putNull(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI);
+ updateValues.put(COLUMN_MEDIA_SCANNED, MEDIA_NOT_SCANNED);
+ } else {
+ updateValues.put(Downloads.Impl.COLUMN_MEDIASTORE_URI,
+ mediaStoreUri.toString());
+ updateValues.put(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI,
+ mediaStoreUri.toString());
+ updateValues.put(COLUMN_MEDIA_SCANNED, MEDIA_SCANNED);
+ }
+ qb.update(db, updateValues, Downloads.Impl._ID + "=?",
+ new String[] { Long.toString(info.mId) });
+ }
+ if (Downloads.Impl.isStatusSuccess(info.mStatus)) {
+ MediaStore.scanFile(getContext(), new File(info.mFileName));
}
}
- } finally {
- Binder.restoreCallingIdentity(token);
+ if (updateSchedule) {
+ Helpers.scheduleJob(context, info);
+ }
+ if (isCompleting) {
+ info.sendIntentIfRequested();
+ }
}
+ } finally {
+ restoreCallingIdentity(token);
}
break;
@@ -1168,6 +1623,8 @@ public final class DownloadProvider extends ContentProvider {
*/
private SQLiteQueryBuilder getQueryBuilder(final Uri uri, int match) {
final String table;
+ final Map<String, String> projectionMap;
+
final StringBuilder where = new StringBuilder();
switch (match) {
// The "my_downloads" view normally limits the caller to operating
@@ -1178,6 +1635,7 @@ public final class DownloadProvider extends ContentProvider {
// fall-through
case MY_DOWNLOADS:
table = DB_TABLE;
+ projectionMap = sDownloadsMap;
if (getContext().checkCallingOrSelfPermission(
PERMISSION_ACCESS_ALL) != PackageManager.PERMISSION_GRANTED) {
appendWhereExpression(where, Constants.UID + "=" + Binder.getCallingUid()
@@ -1193,6 +1651,7 @@ public final class DownloadProvider extends ContentProvider {
// fall-through
case ALL_DOWNLOADS:
table = DB_TABLE;
+ projectionMap = sDownloadsMap;
break;
// Headers are limited to callers holding the ACCESS_ALL_DOWNLOADS
@@ -1200,6 +1659,7 @@ public final class DownloadProvider extends ContentProvider {
case MY_DOWNLOADS_ID_HEADERS:
case ALL_DOWNLOADS_ID_HEADERS:
table = Downloads.Impl.RequestHeaders.HEADERS_DB_TABLE;
+ projectionMap = sHeadersMap;
appendWhereExpression(where, Downloads.Impl.RequestHeaders.COLUMN_DOWNLOAD_ID + "="
+ getDownloadIdFromUri(uri));
break;
@@ -1209,8 +1669,11 @@ public final class DownloadProvider extends ContentProvider {
}
final SQLiteQueryBuilder qb = new SQLiteQueryBuilder();
- qb.setStrict(true);
qb.setTables(table);
+ qb.setProjectionMap(projectionMap);
+ qb.setStrict(true);
+ qb.setStrictColumns(true);
+ qb.setStrictGrammar(true);
qb.appendWhere(where);
return qb;
}
@@ -1227,10 +1690,6 @@ public final class DownloadProvider extends ContentProvider {
*/
@Override
public int delete(final Uri uri, final String where, final String[] whereArgs) {
- if (shouldRestrictVisibility()) {
- Helpers.validateSelection(where, sAppReadableColumnsSet);
- }
-
final Context context = getContext();
final ContentResolver resolver = context.getContentResolver();
final JobScheduler scheduler = context.getSystemService(JobScheduler.class);
@@ -1262,21 +1721,12 @@ public final class DownloadProvider extends ContentProvider {
Log.v(Constants.TAG,
"Deleting " + file + " via provider delete");
file.delete();
+ deleteMediaStoreEntry(file);
+ } else {
+ Log.d(Constants.TAG, "Ignoring invalid file: " + file);
}
- } catch (IOException ignored) {
- }
- }
-
- final String mediaUri = info.mMediaProviderUri;
- if (!TextUtils.isEmpty(mediaUri)) {
- final long token = Binder.clearCallingIdentity();
- try {
- getContext().getContentResolver().delete(Uri.parse(mediaUri), null,
- null);
- } catch (Exception e) {
- Log.w(Constants.TAG, "Failed to delete media entry: " + e);
- } finally {
- Binder.restoreCallingIdentity(token);
+ } catch (IOException e) {
+ Log.e(Constants.TAG, "Couldn't delete file: " + path, e);
}
}
@@ -1311,6 +1761,24 @@ public final class DownloadProvider extends ContentProvider {
return count;
}
+ private void deleteMediaStoreEntry(File file) {
+ final long token = Binder.clearCallingIdentity();
+ try {
+ final String path = file.getAbsolutePath();
+ final Uri.Builder builder = MediaStore.setIncludePending(
+ MediaStore.Files.getContentUriForPath(path).buildUpon());
+ builder.appendQueryParameter(MediaStore.PARAM_DELETE_DATA, "false");
+
+ final Uri filesUri = builder.build();
+ getContext().getContentResolver().delete(filesUri,
+ MediaStore.Files.FileColumns.DATA + "=?", new String[] { path });
+ } catch (Exception e) {
+ Log.d(Constants.TAG, "Failed to delete mediastore entry for file:" + file, e);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
/**
* Remotely opens a file
*/
@@ -1359,7 +1827,7 @@ public final class DownloadProvider extends ContentProvider {
destination == Downloads.Impl.DESTINATION_EXTERNAL
|| destination == Downloads.Impl.DESTINATION_FILE_URI
|| destination == Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD)
- && mediaScanned != 2;
+ && mediaScanned != Downloads.Impl.MEDIA_NOT_SCANNABLE;
} else {
throw new FileNotFoundException("Failed moveToFirst");
}
diff --git a/src/com/android/providers/downloads/DownloadReceiver.java b/src/com/android/providers/downloads/DownloadReceiver.java
index 92d0bad4..40b5e093 100644
--- a/src/com/android/providers/downloads/DownloadReceiver.java
+++ b/src/com/android/providers/downloads/DownloadReceiver.java
@@ -18,6 +18,8 @@ package com.android.providers.downloads;
import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED;
import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION;
+import static android.provider.Downloads.Impl.COLUMN_DESTINATION;
+import static android.provider.Downloads.Impl._DATA;
import static com.android.providers.downloads.Constants.TAG;
import static com.android.providers.downloads.Helpers.getAsyncHandler;
@@ -26,6 +28,7 @@ import static com.android.providers.downloads.Helpers.getInt;
import static com.android.providers.downloads.Helpers.getString;
import static com.android.providers.downloads.Helpers.getSystemFacade;
+import android.app.BroadcastOptions;
import android.app.DownloadManager;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
@@ -37,11 +40,16 @@ import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.provider.Downloads;
+import android.provider.MediaStore;
import android.text.TextUtils;
import android.util.Log;
import android.util.Slog;
import android.widget.Toast;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.regex.Pattern;
+
/**
* Receives system broadcasts (boot, network connectivity)
*/
@@ -141,22 +149,27 @@ public class DownloadReceiver extends BroadcastReceiver {
final ContentResolver resolver = context.getContentResolver();
final int uid = intent.getIntExtra(Intent.EXTRA_UID, -1);
- // First, disown any downloads that live in shared storage
- final ContentValues values = new ContentValues();
- values.putNull(Constants.UID);
- final int disowned = resolver.update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
- Constants.UID + "=" + uid + " AND " + Downloads.Impl.COLUMN_DESTINATION + " IN ("
- + Downloads.Impl.DESTINATION_EXTERNAL + ","
- + Downloads.Impl.DESTINATION_FILE_URI + ")",
- null);
-
- // Finally, delete any remaining downloads owned by UID
- final int deleted = resolver.delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
- Constants.UID + "=" + uid, null);
-
- if ((disowned + deleted) > 0) {
- Slog.d(TAG, "Disowned " + disowned + " and deleted " + deleted
- + " downloads owned by UID " + uid);
+ final ArrayList<Long> idsToDelete = new ArrayList<>();
+ final ArrayList<Long> idsToOrphan = new ArrayList<>();
+ try (Cursor cursor = resolver.query(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
+ new String[] { Downloads.Impl._ID, Constants.UID, COLUMN_DESTINATION, _DATA },
+ Constants.UID + "=" + uid, null, null)) {
+ Helpers.handleRemovedUidEntries(context, cursor, idsToDelete, idsToOrphan, null);
+ }
+
+ if (idsToOrphan.size() > 0) {
+ Log.i(Constants.TAG, "Orphaning downloads with ids "
+ + Arrays.toString(idsToOrphan.toArray()) + " as owner package is removed");
+ final ContentValues values = new ContentValues();
+ values.putNull(Constants.UID);
+ resolver.update(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, values,
+ Helpers.buildQueryWithIds(idsToOrphan), null);
+ }
+ if (idsToDelete.size() > 0) {
+ Log.i(Constants.TAG, "Deleting downloads with ids "
+ + Arrays.toString(idsToDelete.toArray()) + " as owner package is removed");
+ resolver.delete(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI,
+ Helpers.buildQueryWithIds(idsToDelete), null);
}
}
@@ -276,6 +289,8 @@ public class DownloadReceiver extends BroadcastReceiver {
}
}
- getSystemFacade(context).sendBroadcast(appIntent);
+ final BroadcastOptions options = BroadcastOptions.makeBasic();
+ options.setBackgroundActivityStartsAllowed(true);
+ getSystemFacade(context).sendBroadcast(appIntent, null, options.toBundle());
}
}
diff --git a/src/com/android/providers/downloads/DownloadScanner.java b/src/com/android/providers/downloads/DownloadScanner.java
index 4a5ba87e..a4ec0ba8 100644
--- a/src/com/android/providers/downloads/DownloadScanner.java
+++ b/src/com/android/providers/downloads/DownloadScanner.java
@@ -156,13 +156,19 @@ public class DownloadScanner implements MediaScannerConnectionClient {
return;
}
+ // File got deleted while waiting for it to be mediascanned.
+ if (uri == null) {
+ if (mLatch != null) {
+ mLatch.countDown();
+ }
+ return;
+ }
+
// Update scanned column, which will kick off a database update pass,
// eventually deciding if overall service is ready for teardown.
final ContentValues values = new ContentValues();
values.put(Downloads.Impl.COLUMN_MEDIA_SCANNED, 1);
- if (uri != null) {
- values.put(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI, uri.toString());
- }
+ values.put(Downloads.Impl.COLUMN_MEDIAPROVIDER_URI, uri.toString());
final ContentResolver resolver = mContext.getContentResolver();
final Uri downloadUri = ContentUris.withAppendedId(
diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java
index afcba961..fc7dd5ed 100644
--- a/src/com/android/providers/downloads/DownloadStorageProvider.java
+++ b/src/com/android/providers/downloads/DownloadStorageProvider.java
@@ -16,17 +16,28 @@
package com.android.providers.downloads;
+import static com.android.providers.downloads.MediaStoreDownloadsHelper.getDocIdForMediaStoreDownload;
+import static com.android.providers.downloads.MediaStoreDownloadsHelper.getMediaStoreIdString;
+import static com.android.providers.downloads.MediaStoreDownloadsHelper.getMediaStoreUri;
+import static com.android.providers.downloads.MediaStoreDownloadsHelper.isMediaStoreDownload;
+import static com.android.providers.downloads.MediaStoreDownloadsHelper.isMediaStoreDownloadDir;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.DownloadManager;
import android.app.DownloadManager.Query;
import android.content.ContentResolver;
+import android.content.ContentUris;
+import android.content.ContentValues;
import android.content.Context;
-import android.content.res.AssetFileDescriptor;
+import android.content.UriPermission;
import android.database.Cursor;
import android.database.MatrixCursor;
import android.database.MatrixCursor.RowBuilder;
-import android.graphics.Point;
+import android.media.MediaFile;
import android.net.Uri;
import android.os.Binder;
+import android.os.Bundle;
import android.os.CancellationSignal;
import android.os.Environment;
import android.os.FileObserver;
@@ -37,9 +48,13 @@ import android.provider.DocumentsContract.Document;
import android.provider.DocumentsContract.Path;
import android.provider.DocumentsContract.Root;
import android.provider.Downloads;
+import android.provider.MediaStore;
+import android.provider.MediaStore.DownloadColumns;
import android.text.TextUtils;
import android.util.Log;
+import android.util.Pair;
+import com.android.internal.annotations.GuardedBy;
import com.android.internal.content.FileSystemProvider;
import libcore.io.IoUtils;
@@ -47,12 +62,13 @@ import libcore.io.IoUtils;
import java.io.File;
import java.io.FileNotFoundException;
import java.text.NumberFormat;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
import java.util.HashSet;
+import java.util.List;
import java.util.Set;
-import javax.annotation.Nullable;
-import javax.annotation.concurrent.GuardedBy;
-
/**
* Presents files located in {@link Environment#DIRECTORY_DOWNLOADS} and contents from
* {@link DownloadManager}. {@link DownloadManager} contents include active downloads and completed
@@ -69,7 +85,7 @@ public class DownloadStorageProvider extends FileSystemProvider {
private static final String[] DEFAULT_ROOT_PROJECTION = new String[] {
Root.COLUMN_ROOT_ID, Root.COLUMN_FLAGS, Root.COLUMN_ICON,
- Root.COLUMN_TITLE, Root.COLUMN_DOCUMENT_ID,
+ Root.COLUMN_TITLE, Root.COLUMN_DOCUMENT_ID, Root.COLUMN_QUERY_ARGS
};
private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] {
@@ -80,6 +96,8 @@ public class DownloadStorageProvider extends FileSystemProvider {
private DownloadManager mDm;
+ private static final int NO_LIMIT = -1;
+
@Override
public boolean onCreate() {
super.onCreate(DEFAULT_DOCUMENT_PROJECTION);
@@ -111,12 +129,37 @@ public class DownloadStorageProvider extends FileSystemProvider {
context.revokeUriPermission(uri, ~0);
}
+ static void onMediaProviderDownloadsDelete(Context context, long[] ids, String[] mimeTypes) {
+ for (int i = 0; i < ids.length; ++i) {
+ final boolean isDir = mimeTypes[i] == null;
+ final Uri uri = DocumentsContract.buildDocumentUri(AUTHORITY,
+ MediaStoreDownloadsHelper.getDocIdForMediaStoreDownload(ids[i], isDir));
+ context.revokeUriPermission(uri, ~0);
+ }
+ }
+
+ static void revokeAllMediaStoreUriPermissions(Context context) {
+ final List<UriPermission> uriPermissions =
+ context.getContentResolver().getOutgoingUriPermissions();
+ final int size = uriPermissions.size();
+ final StringBuilder sb = new StringBuilder("Revoking permissions for uris: ");
+ for (int i = 0; i < size; ++i) {
+ final Uri uri = uriPermissions.get(i).getUri();
+ if (AUTHORITY.equals(uri.getAuthority())
+ && isMediaStoreDownload(DocumentsContract.getDocumentId(uri))) {
+ context.revokeUriPermission(uri, ~0);
+ sb.append(uri + ",");
+ }
+ }
+ Log.d(TAG, sb.toString());
+ }
+
@Override
public Cursor queryRoots(String[] projection) throws FileNotFoundException {
// It's possible that the folder does not exist on disk, so we will create the folder if
// that is the case. If user decides to delete the folder later, then it's OK to fail on
// subsequent queries.
- getDownloadsDirectory().mkdirs();
+ getPublicDownloadsDirectory().mkdirs();
final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection));
final RowBuilder row = result.newRow();
@@ -127,6 +170,7 @@ public class DownloadStorageProvider extends FileSystemProvider {
row.add(Root.COLUMN_ICON, R.mipmap.ic_launcher_download);
row.add(Root.COLUMN_TITLE, getContext().getString(R.string.root_downloads));
row.add(Root.COLUMN_DOCUMENT_ID, DOC_ID_ROOT);
+ row.add(Root.COLUMN_QUERY_ARGS, SUPPORTED_QUERY_ARGS);
return result;
}
@@ -160,7 +204,8 @@ public class DownloadStorageProvider extends FileSystemProvider {
try {
String newDocumentId = super.createDocument(parentDocId, mimeType, displayName);
if (!Document.MIME_TYPE_DIR.equals(mimeType)
- && !RawDocumentsHelper.isRawDocId(parentDocId)) {
+ && !RawDocumentsHelper.isRawDocId(parentDocId)
+ && !isMediaStoreDownload(parentDocId)) {
File newFile = getFileForDocId(newDocumentId);
newDocumentId = Long.toString(mDm.addCompletedDownload(
newFile.getName(), newFile.getName(), true, mimeType,
@@ -178,10 +223,11 @@ public class DownloadStorageProvider extends FileSystemProvider {
// Delegate to real provider
final long token = Binder.clearCallingIdentity();
try {
- if (RawDocumentsHelper.isRawDocId(docId)) {
+ if (RawDocumentsHelper.isRawDocId(docId) || isMediaStoreDownload(docId)) {
super.deleteDocument(docId);
return;
}
+
if (mDm.remove(Long.parseLong(docId)) != 1) {
throw new IllegalStateException("Failed to delete " + docId);
}
@@ -196,15 +242,20 @@ public class DownloadStorageProvider extends FileSystemProvider {
final long token = Binder.clearCallingIdentity();
try {
- if (RawDocumentsHelper.isRawDocId(docId)) {
+ if (RawDocumentsHelper.isRawDocId(docId)
+ || isMediaStoreDownloadDir(docId)) {
return super.renameDocument(docId, displayName);
}
displayName = FileUtils.buildValidFatFilename(displayName);
- final long id = Long.parseLong(docId);
- if (!mDm.rename(getContext(), id, displayName)) {
- throw new IllegalStateException(
- "Failed to rename to " + displayName + " in downloadsManager");
+ if (isMediaStoreDownload(docId)) {
+ renameMediaStoreDownload(docId, displayName);
+ } else {
+ final long id = Long.parseLong(docId);
+ if (!mDm.rename(getContext(), id, displayName)) {
+ throw new IllegalStateException(
+ "Failed to rename to " + displayName + " in downloadsManager");
+ }
}
return null;
} finally {
@@ -227,14 +278,21 @@ public class DownloadStorageProvider extends FileSystemProvider {
if (DOC_ID_ROOT.equals(docId)) {
includeDefaultDocument(result);
+ } else if (isMediaStoreDownload(docId)) {
+ cursor = getContext().getContentResolver().query(getMediaStoreUri(docId),
+ null, null, null);
+ copyNotificationUri(result, cursor);
+ if (cursor.moveToFirst()) {
+ includeDownloadFromMediaStore(result, cursor, null /* filePaths */);
+ }
} else {
cursor = mDm.query(new Query().setFilterById(Long.parseLong(docId)));
copyNotificationUri(result, cursor);
- Set<String> filePaths = new HashSet<>();
if (cursor.moveToFirst()) {
// We don't know if this queryDocument() call is from Downloads (manage)
// or Files. Safely assume it's Files.
- includeDownloadFromCursor(result, cursor, filePaths);
+ includeDownloadFromCursor(result, cursor, null /* filePaths */,
+ null /* queryArgs */);
}
}
result.start();
@@ -269,24 +327,34 @@ public class DownloadStorageProvider extends FileSystemProvider {
return super.queryChildDocuments(parentDocId, projection, sortOrder);
}
- assert (DOC_ID_ROOT.equals(parentDocId));
final DownloadsCursor result = new DownloadsCursor(projection,
getContext().getContentResolver());
- if (manage) {
- cursor = mDm.query(
- new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true));
+ final ArrayList<Uri> notificationUris = new ArrayList<>();
+ if (isMediaStoreDownloadDir(parentDocId)) {
+ includeDownloadsFromMediaStore(result, null /* queryArgs */,
+ null /* filePaths */, notificationUris,
+ getMediaStoreIdString(parentDocId), NO_LIMIT, manage);
} else {
- cursor = mDm
- .query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true)
- .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL));
- }
- copyNotificationUri(result, cursor);
- Set<String> filePaths = new HashSet<>();
- while (cursor.moveToNext()) {
- includeDownloadFromCursor(result, cursor, filePaths);
+ assert (DOC_ID_ROOT.equals(parentDocId));
+ if (manage) {
+ cursor = mDm.query(
+ new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true));
+ } else {
+ cursor = mDm.query(
+ new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true)
+ .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL));
+ }
+ final Set<String> filePaths = new HashSet<>();
+ while (cursor.moveToNext()) {
+ includeDownloadFromCursor(result, cursor, filePaths, null /* queryArgs */);
+ }
+ notificationUris.add(cursor.getNotificationUri());
+ includeDownloadsFromMediaStore(result, null /* queryArgs */,
+ filePaths, notificationUris,
+ null /* parentId */, NO_LIMIT, manage);
+ includeFilesFromSharedStorage(result, filePaths, null);
}
- includeFilesFromSharedStorage(result, filePaths, null);
-
+ result.setNotificationUris(getContext().getContentResolver(), notificationUris);
result.start();
return result;
} finally {
@@ -296,75 +364,139 @@ public class DownloadStorageProvider extends FileSystemProvider {
}
@Override
- public Cursor queryRecentDocuments(String rootId, String[] projection)
+ public Cursor queryRecentDocuments(String rootId, String[] projection,
+ @Nullable Bundle queryArgs, @Nullable CancellationSignal signal)
throws FileNotFoundException {
final DownloadsCursor result =
new DownloadsCursor(projection, getContext().getContentResolver());
// Delegate to real provider
final long token = Binder.clearCallingIdentity();
+
+ int limit = 12;
+ if (queryArgs != null) {
+ limit = queryArgs.getInt(ContentResolver.QUERY_ARG_LIMIT, -1);
+
+ if (limit < 0) {
+ // Use default value, and no QUERY_ARG* is honored.
+ limit = 12;
+ } else {
+ // We are honoring the QUERY_ARG_LIMIT.
+ Bundle extras = new Bundle();
+ result.setExtras(extras);
+ extras.putStringArray(ContentResolver.EXTRA_HONORED_ARGS, new String[]{
+ ContentResolver.QUERY_ARG_LIMIT
+ });
+ }
+ }
+
Cursor cursor = null;
+ final ArrayList<Uri> notificationUris = new ArrayList<>();
try {
cursor = mDm.query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true)
.setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL));
- copyNotificationUri(result, cursor);
- while (cursor.moveToNext() && result.getCount() < 12) {
+ final Set<String> filePaths = new HashSet<>();
+ while (cursor.moveToNext() && result.getCount() < limit) {
final String mimeType = cursor.getString(
cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE));
final String uri = cursor.getString(
cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIAPROVIDER_URI));
- // Skip images that have been inserted into the MediaStore so we
- // don't duplicate them in the recents list.
- if (mimeType == null
- || (mimeType.startsWith("image/") && !TextUtils.isEmpty(uri))) {
+ // Skip images and videos that have been inserted into the MediaStore so we
+ // don't duplicate them in the recent list. The audio root of
+ // MediaDocumentsProvider doesn't support recent, we add it into recent list.
+ if (mimeType == null || (MediaFile.isImageMimeType(mimeType)
+ || MediaFile.isVideoMimeType(mimeType)) && !TextUtils.isEmpty(uri)) {
continue;
}
+ includeDownloadFromCursor(result, cursor, filePaths,
+ null /* queryArgs */);
}
+ notificationUris.add(cursor.getNotificationUri());
+
+ // Skip media files that have been inserted into the MediaStore so we
+ // don't duplicate them in the recent list.
+ final Bundle args = new Bundle();
+ args.putBoolean(DocumentsContract.QUERY_ARG_EXCLUDE_MEDIA, true);
+
+ includeDownloadsFromMediaStore(result, args, filePaths,
+ notificationUris, null /* parentId */, (limit - result.getCount()),
+ false /* includePending */);
} finally {
IoUtils.closeQuietly(cursor);
Binder.restoreCallingIdentity(token);
}
+ result.setNotificationUris(getContext().getContentResolver(), notificationUris);
result.start();
return result;
}
@Override
- public Cursor querySearchDocuments(String rootId, String query, String[] projection)
+ public Cursor querySearchDocuments(String rootId, String[] projection, Bundle queryArgs)
throws FileNotFoundException {
final DownloadsCursor result =
new DownloadsCursor(projection, getContext().getContentResolver());
+ final ArrayList<Uri> notificationUris = new ArrayList<>();
// Delegate to real provider
final long token = Binder.clearCallingIdentity();
Cursor cursor = null;
try {
cursor = mDm.query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true)
- .setFilterByString(query));
- copyNotificationUri(result, cursor);
- Set<String> filePaths = new HashSet<>();
+ .setFilterByString(DocumentsContract.getSearchDocumentsQuery(queryArgs)));
+ final Set<String> filePaths = new HashSet<>();
while (cursor.moveToNext()) {
- includeDownloadFromCursor(result, cursor, filePaths);
- }
- Cursor rawFilesCursor = super.querySearchDocuments(getDownloadsDirectory(), query,
- projection, filePaths);
- while (rawFilesCursor.moveToNext()) {
- String docId = rawFilesCursor.getString(
- rawFilesCursor.getColumnIndexOrThrow(Document.COLUMN_DOCUMENT_ID));
- File rawFile = getFileForDocId(docId);
- includeFileFromSharedStorage(result, rawFile);
+ includeDownloadFromCursor(result, cursor, filePaths, queryArgs);
}
+ notificationUris.add(cursor.getNotificationUri());
+ includeDownloadsFromMediaStore(result, queryArgs, filePaths,
+ notificationUris, null /* parentId */, NO_LIMIT, true /* includePending */);
+
+ includeSearchFilesFromSharedStorage(result, projection, filePaths, queryArgs);
} finally {
IoUtils.closeQuietly(cursor);
Binder.restoreCallingIdentity(token);
}
+ final String[] handledQueryArgs = DocumentsContract.getHandledQueryArguments(queryArgs);
+ if (handledQueryArgs.length > 0) {
+ final Bundle extras = new Bundle();
+ extras.putStringArray(ContentResolver.EXTRA_HONORED_ARGS, handledQueryArgs);
+ result.setExtras(extras);
+ }
+
+ result.setNotificationUris(getContext().getContentResolver(), notificationUris);
result.start();
return result;
}
+ private void includeSearchFilesFromSharedStorage(DownloadsCursor result,
+ String[] projection, Set<String> filePaths,
+ Bundle queryArgs) throws FileNotFoundException {
+ final File downloadDir = getPublicDownloadsDirectory();
+ try (Cursor rawFilesCursor = super.querySearchDocuments(downloadDir,
+ projection, filePaths, queryArgs)) {
+
+ final boolean shouldExcludeMedia = queryArgs.getBoolean(
+ DocumentsContract.QUERY_ARG_EXCLUDE_MEDIA, false /* defaultValue */);
+ while (rawFilesCursor.moveToNext()) {
+ final String mimeType = rawFilesCursor.getString(
+ rawFilesCursor.getColumnIndexOrThrow(Document.COLUMN_MIME_TYPE));
+ // When the value of shouldExcludeMedia is true, don't add media files into
+ // the result to avoid duplicated files. MediaScanner will scan the files
+ // into MediaStore. If the behavior is changed, we need to add the files back.
+ if (!shouldExcludeMedia || !isMediaMimeType(mimeType)) {
+ String docId = rawFilesCursor.getString(
+ rawFilesCursor.getColumnIndexOrThrow(Document.COLUMN_DOCUMENT_ID));
+ File rawFile = getFileForDocId(docId);
+ includeFileFromSharedStorage(result, rawFile);
+ }
+ }
+ }
+ }
+
@Override
public String getDocumentType(String docId) throws FileNotFoundException {
// Delegate to real provider
@@ -374,9 +506,15 @@ public class DownloadStorageProvider extends FileSystemProvider {
return super.getDocumentType(docId);
}
- final long id = Long.parseLong(docId);
final ContentResolver resolver = getContext().getContentResolver();
- return resolver.getType(mDm.getDownloadUri(id));
+ final Uri contentUri;
+ if (isMediaStoreDownload(docId)) {
+ contentUri = getMediaStoreUri(docId);
+ } else {
+ final long id = Long.parseLong(docId);
+ contentUri = mDm.getDownloadUri(id);
+ }
+ return resolver.getType(contentUri);
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -392,9 +530,15 @@ public class DownloadStorageProvider extends FileSystemProvider {
return super.openDocument(docId, mode, signal);
}
- final long id = Long.parseLong(docId);
final ContentResolver resolver = getContext().getContentResolver();
- return resolver.openFileDescriptor(mDm.getDownloadUri(id), mode, signal);
+ final Uri contentUri;
+ if (isMediaStoreDownload(docId)) {
+ contentUri = getMediaStoreUri(docId);
+ } else {
+ final long id = Long.parseLong(docId);
+ contentUri = mDm.getDownloadUri(id);
+ }
+ return resolver.openFileDescriptor(contentUri, mode, signal);
} finally {
Binder.restoreCallingIdentity(token);
}
@@ -406,8 +550,12 @@ public class DownloadStorageProvider extends FileSystemProvider {
return new File(RawDocumentsHelper.getAbsoluteFilePath(docId));
}
+ if (isMediaStoreDownload(docId)) {
+ return getFileForMediaStoreDownload(docId);
+ }
+
if (DOC_ID_ROOT.equals(docId)) {
- return getDownloadsDirectory();
+ return getPublicDownloadsDirectory();
}
final long token = Binder.clearCallingIdentity();
@@ -440,6 +588,11 @@ public class DownloadStorageProvider extends FileSystemProvider {
return DocumentsContract.buildChildDocumentsUri(AUTHORITY, docId);
}
+ private static boolean isMediaMimeType(String mimeType) {
+ return MediaFile.isImageMimeType(mimeType) || MediaFile.isVideoMimeType(mimeType)
+ || MediaFile.isAudioMimeType(mimeType);
+ }
+
private void includeDefaultDocument(MatrixCursor result) {
final RowBuilder row = result.newRow();
row.add(Document.COLUMN_DOCUMENT_ID, DOC_ID_ROOT);
@@ -456,7 +609,7 @@ public class DownloadStorageProvider extends FileSystemProvider {
* if the file exists in the file system.
*/
private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor,
- Set<String> filePaths) {
+ Set<String> filePaths, Bundle queryArgs) {
final long id = cursor.getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ID));
final String docId = String.valueOf(id);
@@ -470,11 +623,26 @@ public class DownloadStorageProvider extends FileSystemProvider {
// Provide fake MIME type so it's openable
mimeType = "vnd.android.document/file";
}
- Long size = cursor.getLong(
- cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
- if (size == -1) {
- size = null;
+
+ if (queryArgs != null) {
+ final boolean shouldExcludeMedia = queryArgs.getBoolean(
+ DocumentsContract.QUERY_ARG_EXCLUDE_MEDIA, false /* defaultValue */);
+ if (shouldExcludeMedia) {
+ final String uri = cursor.getString(
+ cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIAPROVIDER_URI));
+
+ // Skip media files that have been inserted into the MediaStore so we
+ // don't duplicate them in the search list.
+ if (isMediaMimeType(mimeType) && !TextUtils.isEmpty(uri)) {
+ return;
+ }
+ }
}
+
+ // size could be -1 which indicates that download hasn't started.
+ final long size = cursor.getLong(
+ cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES));
+
String localFilePath = cursor.getString(
cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LOCAL_FILENAME));
@@ -500,7 +668,7 @@ public class DownloadStorageProvider extends FileSystemProvider {
case DownloadManager.STATUS_RUNNING:
final long progress = cursor.getLong(cursor.getColumnIndexOrThrow(
DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR));
- if (size != null) {
+ if (size > 0) {
String percent =
NumberFormat.getPercentInstance().format((double) progress / size);
summary = getContext().getString(R.string.download_running_percent, percent);
@@ -514,6 +682,25 @@ public class DownloadStorageProvider extends FileSystemProvider {
break;
}
+ final long lastModified = cursor.getLong(
+ cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP));
+
+ if (!DocumentsContract.matchSearchQueryArguments(queryArgs, displayName, mimeType,
+ lastModified, size)) {
+ return;
+ }
+
+ includeDownload(result, docId, displayName, summary, size, mimeType,
+ lastModified, extraFlags, status == DownloadManager.STATUS_RUNNING);
+ if (filePaths != null && localFilePath != null) {
+ filePaths.add(localFilePath);
+ }
+ }
+
+ private void includeDownload(MatrixCursor result,
+ String docId, String displayName, String summary, long size,
+ String mimeType, long lastModifiedMs, int extraFlags, boolean isPending) {
+
int flags = Document.FLAG_SUPPORTS_DELETE | Document.FLAG_SUPPORTS_WRITE | extraFlags;
if (mimeType.startsWith("image/")) {
flags |= Document.FLAG_SUPPORTS_THUMBNAIL;
@@ -523,22 +710,18 @@ public class DownloadStorageProvider extends FileSystemProvider {
flags |= Document.FLAG_SUPPORTS_METADATA;
}
- final long lastModified = cursor.getLong(
- cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP));
-
final RowBuilder row = result.newRow();
row.add(Document.COLUMN_DOCUMENT_ID, docId);
row.add(Document.COLUMN_DISPLAY_NAME, displayName);
row.add(Document.COLUMN_SUMMARY, summary);
- row.add(Document.COLUMN_SIZE, size);
+ row.add(Document.COLUMN_SIZE, size == -1 ? null : size);
row.add(Document.COLUMN_MIME_TYPE, mimeType);
row.add(Document.COLUMN_FLAGS, flags);
// Incomplete downloads get a null timestamp. This prevents thrashy UI when a bunch of
// active downloads get sorted by mod time.
- if (status != DownloadManager.STATUS_RUNNING) {
- row.add(Document.COLUMN_LAST_MODIFIED, lastModified);
+ if (!isPending) {
+ row.add(Document.COLUMN_LAST_MODIFIED, lastModifiedMs);
}
- filePaths.add(localFilePath);
}
/**
@@ -549,15 +732,16 @@ public class DownloadStorageProvider extends FileSystemProvider {
* @param downloadedFilePaths The absolute file paths of all the files in the result Cursor.
* @param searchString query used to filter out unwanted results.
*/
- private void includeFilesFromSharedStorage(MatrixCursor result,
+ private void includeFilesFromSharedStorage(DownloadsCursor result,
Set<String> downloadedFilePaths, @Nullable String searchString)
throws FileNotFoundException {
- File downloadsDir = getDownloadsDirectory();
+ final File downloadsDir = getPublicDownloadsDirectory();
// Add every file from the Downloads directory to the result cursor. Ignore files that
// were in the supplied downloaded file paths.
- for (File file : downloadsDir.listFiles()) {
+ for (File file : FileUtils.listFilesOrEmpty(downloadsDir)) {
boolean inResultsAlready = downloadedFilePaths.contains(file.getAbsolutePath());
- boolean containsQuery = searchString == null || file.getName().contains(searchString);
+ boolean containsQuery = searchString == null || file.getName().contains(
+ searchString);
if (!inResultsAlready && containsQuery) {
includeFileFromSharedStorage(result, file);
}
@@ -577,10 +761,270 @@ public class DownloadStorageProvider extends FileSystemProvider {
includeFile(result, null, file);
}
- private static File getDownloadsDirectory() {
+ private static File getPublicDownloadsDirectory() {
return Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
}
+ private void renameMediaStoreDownload(String docId, String displayName) {
+ final File before = getFileForMediaStoreDownload(docId);
+ final File after = new File(before.getParentFile(), displayName);
+
+ if (after.exists()) {
+ throw new IllegalStateException("Already exists " + after);
+ }
+ if (!before.renameTo(after)) {
+ throw new IllegalStateException("Failed to rename from " + before + " to " + after);
+ }
+
+ final long token = Binder.clearCallingIdentity();
+ try {
+ final Uri mediaStoreUri = getMediaStoreUri(docId);
+ final ContentValues values = new ContentValues();
+ values.put(DownloadColumns.DATA, after.getAbsolutePath());
+ values.put(DownloadColumns.DISPLAY_NAME, displayName);
+ final int count = getContext().getContentResolver().update(mediaStoreUri, values,
+ null, null);
+ if (count != 1) {
+ throw new IllegalStateException("Failed to update " + mediaStoreUri
+ + ", values=" + values);
+ }
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private File getFileForMediaStoreDownload(String docId) {
+ final Uri mediaStoreUri = getMediaStoreUri(docId);
+ final long token = Binder.clearCallingIdentity();
+ try (Cursor cursor = queryForSingleItem(mediaStoreUri,
+ new String[] { DownloadColumns.DATA }, null, null, null)) {
+ final String filePath = cursor.getString(0);
+ if (filePath == null) {
+ throw new IllegalStateException("Missing _data for " + mediaStoreUri);
+ }
+ return new File(filePath);
+ } catch (FileNotFoundException e) {
+ throw new IllegalStateException(e);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private Pair<String, String> getRelativePathAndDisplayNameForDownload(long id) {
+ final Uri mediaStoreUri = ContentUris.withAppendedId(
+ MediaStore.Downloads.EXTERNAL_CONTENT_URI, id);
+ final long token = Binder.clearCallingIdentity();
+ try (Cursor cursor = queryForSingleItem(mediaStoreUri,
+ new String[] { DownloadColumns.RELATIVE_PATH, DownloadColumns.DISPLAY_NAME },
+ null, null, null)) {
+ final String relativePath = cursor.getString(0);
+ final String displayName = cursor.getString(1);
+ if (relativePath == null || displayName == null) {
+ throw new IllegalStateException(
+ "relative_path and _display_name should not be null for " + mediaStoreUri);
+ }
+ return Pair.create(relativePath, displayName);
+ } catch (FileNotFoundException e) {
+ throw new IllegalStateException(e);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ /**
+ * Copied from MediaProvider.java
+ *
+ * Query the given {@link Uri}, expecting only a single item to be found.
+ *
+ * @throws FileNotFoundException if no items were found, or multiple items
+ * were found, or there was trouble reading the data.
+ */
+ private Cursor queryForSingleItem(Uri uri, String[] projection,
+ String selection, String[] selectionArgs, CancellationSignal signal)
+ throws FileNotFoundException {
+ final Cursor c = getContext().getContentResolver().query(uri, projection,
+ ContentResolver.createSqlQueryBundle(selection, selectionArgs, null), signal);
+ if (c == null) {
+ throw new FileNotFoundException("Missing cursor for " + uri);
+ } else if (c.getCount() < 1) {
+ IoUtils.closeQuietly(c);
+ throw new FileNotFoundException("No item at " + uri);
+ } else if (c.getCount() > 1) {
+ IoUtils.closeQuietly(c);
+ throw new FileNotFoundException("Multiple items at " + uri);
+ }
+
+ if (c.moveToFirst()) {
+ return c;
+ } else {
+ IoUtils.closeQuietly(c);
+ throw new FileNotFoundException("Failed to read row from " + uri);
+ }
+ }
+
+ private void includeDownloadsFromMediaStore(@NonNull MatrixCursor result,
+ @Nullable Bundle queryArgs,
+ @Nullable Set<String> filePaths, @NonNull ArrayList<Uri> notificationUris,
+ @Nullable String parentId, int limit, boolean includePending) {
+ if (limit == 0) {
+ return;
+ }
+
+ final long token = Binder.clearCallingIdentity();
+ final Pair<String, String[]> selectionPair
+ = buildSearchSelection(queryArgs, filePaths, parentId);
+ final Uri.Builder queryUriBuilder = MediaStore.Downloads.EXTERNAL_CONTENT_URI.buildUpon();
+ if (limit != NO_LIMIT) {
+ queryUriBuilder.appendQueryParameter(MediaStore.PARAM_LIMIT, String.valueOf(limit));
+ }
+ if (includePending) {
+ MediaStore.setIncludePending(queryUriBuilder);
+ }
+ try (Cursor cursor = getContext().getContentResolver().query(
+ queryUriBuilder.build(), null,
+ selectionPair.first, selectionPair.second, null)) {
+ while (cursor.moveToNext()) {
+ includeDownloadFromMediaStore(result, cursor, filePaths);
+ }
+ notificationUris.add(MediaStore.Files.EXTERNAL_CONTENT_URI);
+ notificationUris.add(MediaStore.Downloads.EXTERNAL_CONTENT_URI);
+ } finally {
+ Binder.restoreCallingIdentity(token);
+ }
+ }
+
+ private void includeDownloadFromMediaStore(@NonNull MatrixCursor result,
+ @NonNull Cursor mediaCursor, @Nullable Set<String> filePaths) {
+ final String mimeType = getMimeType(mediaCursor);
+ final boolean isDir = Document.MIME_TYPE_DIR.equals(mimeType);
+ final String docId = getDocIdForMediaStoreDownload(
+ mediaCursor.getLong(mediaCursor.getColumnIndex(DownloadColumns._ID)), isDir);
+ final String displayName = mediaCursor.getString(
+ mediaCursor.getColumnIndex(DownloadColumns.DISPLAY_NAME));
+ final long size = mediaCursor.getLong(
+ mediaCursor.getColumnIndex(DownloadColumns.SIZE));
+ final long lastModifiedMs = mediaCursor.getLong(
+ mediaCursor.getColumnIndex(DownloadColumns.DATE_MODIFIED)) * 1000;
+ final boolean isPending = mediaCursor.getInt(
+ mediaCursor.getColumnIndex(DownloadColumns.IS_PENDING)) == 1;
+
+ int extraFlags = isPending ? Document.FLAG_PARTIAL : 0;
+ if (Document.MIME_TYPE_DIR.equals(mimeType)) {
+ extraFlags |= Document.FLAG_DIR_SUPPORTS_CREATE;
+ }
+ if (!isPending) {
+ extraFlags |= Document.FLAG_SUPPORTS_RENAME;
+ }
+
+ includeDownload(result, docId, displayName, null /* description */, size, mimeType,
+ lastModifiedMs, extraFlags, isPending);
+ if (filePaths != null) {
+ filePaths.add(mediaCursor.getString(
+ mediaCursor.getColumnIndex(DownloadColumns.DATA)));
+ }
+ }
+
+ private String getMimeType(@NonNull Cursor mediaCursor) {
+ final String mimeType = mediaCursor.getString(
+ mediaCursor.getColumnIndex(DownloadColumns.MIME_TYPE));
+ if (mimeType == null) {
+ return Document.MIME_TYPE_DIR;
+ }
+ return mimeType;
+ }
+
+ // Copied from MediaDocumentsProvider with some tweaks
+ private Pair<String, String[]> buildSearchSelection(@Nullable Bundle queryArgs,
+ @Nullable Set<String> filePaths, @Nullable String parentId) {
+ final StringBuilder selection = new StringBuilder();
+ final ArrayList<String> selectionArgs = new ArrayList<>();
+
+ if (parentId == null && filePaths != null && filePaths.size() > 0) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.DATA + " NOT IN (");
+ selection.append(TextUtils.join(",", Collections.nCopies(filePaths.size(), "?")));
+ selection.append(")");
+ selectionArgs.addAll(filePaths);
+ }
+
+ if (parentId != null) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.RELATIVE_PATH + "=?");
+ final Pair<String, String> data = getRelativePathAndDisplayNameForDownload(
+ Long.parseLong(parentId));
+ selectionArgs.add(data.first + data.second + "/");
+ } else {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.RELATIVE_PATH + "=?");
+ selectionArgs.add(Environment.DIRECTORY_DOWNLOADS + "/");
+ }
+
+ if (queryArgs != null) {
+ final boolean shouldExcludeMedia = queryArgs.getBoolean(
+ DocumentsContract.QUERY_ARG_EXCLUDE_MEDIA, false /* defaultValue */);
+ if (shouldExcludeMedia) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.MIME_TYPE + " NOT LIKE \"image/%\"");
+ selection.append(" AND ");
+ selection.append(DownloadColumns.MIME_TYPE + " NOT LIKE \"audio/%\"");
+ selection.append(" AND ");
+ selection.append(DownloadColumns.MIME_TYPE + " NOT LIKE \"video/%\"");
+ }
+
+ final String displayName = queryArgs.getString(
+ DocumentsContract.QUERY_ARG_DISPLAY_NAME);
+ if (!TextUtils.isEmpty(displayName)) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.DISPLAY_NAME + " LIKE ?");
+ selectionArgs.add("%" + displayName + "%");
+ }
+
+ final long lastModifiedAfter = queryArgs.getLong(
+ DocumentsContract.QUERY_ARG_LAST_MODIFIED_AFTER, -1 /* defaultValue */);
+ if (lastModifiedAfter != -1) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.DATE_MODIFIED
+ + " > " + lastModifiedAfter / 1000);
+ }
+
+ final long fileSizeOver = queryArgs.getLong(
+ DocumentsContract.QUERY_ARG_FILE_SIZE_OVER, -1 /* defaultValue */);
+ if (fileSizeOver != -1) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.SIZE + " > " + fileSizeOver);
+ }
+
+ final String[] mimeTypes = queryArgs.getStringArray(
+ DocumentsContract.QUERY_ARG_MIME_TYPES);
+ if (mimeTypes != null && mimeTypes.length > 0) {
+ if (selection.length() > 0) {
+ selection.append(" AND ");
+ }
+ selection.append(DownloadColumns.MIME_TYPE + " IN (");
+ for (int i = 0; i < mimeTypes.length; ++i) {
+ selection.append("?").append((i == mimeTypes.length - 1) ? ")" : ",");
+ selectionArgs.add(mimeTypes[i]);
+ }
+ }
+ }
+
+ return new Pair<>(selection.toString(), selectionArgs.toArray(new String[0]));
+ }
+
/**
* A MatrixCursor that spins up a file observer when the first instance is
* started ({@link #start()}, and stops the file observer when the last instance
@@ -612,7 +1056,8 @@ public class DownloadStorageProvider extends FileSystemProvider {
void start() {
synchronized (mLock) {
if (mOpenCursorCount++ == 0) {
- mFileWatcher = new ContentChangedRelay(mResolver);
+ mFileWatcher = new ContentChangedRelay(mResolver,
+ Arrays.asList(getPublicDownloadsDirectory()));
mFileWatcher.startWatching();
}
}
@@ -638,30 +1083,33 @@ public class DownloadStorageProvider extends FileSystemProvider {
private static final int NOTIFY_EVENTS = ATTRIB | CLOSE_WRITE | MOVED_FROM | MOVED_TO
| CREATE | DELETE | DELETE_SELF | MOVE_SELF;
- private static final String DOWNLOADS_PATH = getDownloadsDirectory().getAbsolutePath();
+ private File[] mDownloadDirs;
private final ContentResolver mResolver;
- public ContentChangedRelay(ContentResolver resolver) {
- super(DOWNLOADS_PATH, NOTIFY_EVENTS);
+ public ContentChangedRelay(ContentResolver resolver, List<File> downloadDirs) {
+ super(downloadDirs, NOTIFY_EVENTS);
+ mDownloadDirs = downloadDirs.toArray(new File[0]);
mResolver = resolver;
}
@Override
public void startWatching() {
super.startWatching();
- if (DEBUG) Log.d(TAG, "Started watching for file changes in: " + DOWNLOADS_PATH);
+ if (DEBUG) Log.d(TAG, "Started watching for file changes in: "
+ + Arrays.toString(mDownloadDirs));
}
@Override
public void stopWatching() {
super.stopWatching();
- if (DEBUG) Log.d(TAG, "Stopped watching for file changes in: " + DOWNLOADS_PATH);
+ if (DEBUG) Log.d(TAG, "Stopped watching for file changes in: "
+ + Arrays.toString(mDownloadDirs));
}
@Override
public void onEvent(int event, String path) {
if ((event & NOTIFY_EVENTS) != 0) {
- if (DEBUG) Log.v(TAG, "Change detected at path: " + DOWNLOADS_PATH);
+ if (DEBUG) Log.v(TAG, "Change detected at path: " + path);
mResolver.notifyChange(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, null, false);
mResolver.notifyChange(Downloads.Impl.CONTENT_URI, null, false);
}
diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java
index 54cc1a5d..bc7997f6 100644
--- a/src/com/android/providers/downloads/DownloadThread.java
+++ b/src/com/android/providers/downloads/DownloadThread.java
@@ -388,12 +388,7 @@ public class DownloadThread extends Thread {
}
boolean needsReschedule = false;
- if (Downloads.Impl.isStatusCompleted(mInfoDelta.mStatus)) {
- if (mInfo.shouldScanFile(mInfoDelta.mStatus)) {
- DownloadScanner.requestScanBlocking(mContext, mInfo.mId, mInfoDelta.mFileName,
- mInfoDelta.mMimeType);
- }
- } else if (mInfoDelta.mStatus == STATUS_WAITING_TO_RETRY
+ if (mInfoDelta.mStatus == STATUS_WAITING_TO_RETRY
|| mInfoDelta.mStatus == STATUS_WAITING_FOR_NETWORK
|| mInfoDelta.mStatus == STATUS_QUEUED_FOR_WIFI) {
needsReschedule = true;
diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java
index 963ca9da..226fb481 100644
--- a/src/com/android/providers/downloads/Helpers.java
+++ b/src/com/android/providers/downloads/Helpers.java
@@ -16,15 +16,20 @@
package com.android.providers.downloads;
-import static android.os.Environment.buildExternalStorageAppCacheDirs;
-import static android.os.Environment.buildExternalStorageAppFilesDirs;
+import static android.os.Environment.buildExternalStorageAppDataDirs;
import static android.os.Environment.buildExternalStorageAppMediaDirs;
import static android.os.Environment.buildExternalStorageAppObbDirs;
+import static android.os.Environment.buildExternalStoragePublicDirs;
+import static android.provider.Downloads.Impl.DESTINATION_EXTERNAL;
+import static android.provider.Downloads.Impl.DESTINATION_FILE_URI;
+import static android.provider.Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD;
import static android.provider.Downloads.Impl.FLAG_REQUIRES_CHARGING;
import static android.provider.Downloads.Impl.FLAG_REQUIRES_DEVICE_IDLE;
import static com.android.providers.downloads.Constants.TAG;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.job.JobInfo;
import android.app.job.JobScheduler;
import android.content.ComponentName;
@@ -43,14 +48,21 @@ import android.os.storage.StorageVolume;
import android.provider.Downloads;
import android.text.TextUtils;
import android.util.Log;
+import android.util.LongSparseArray;
+import android.util.SparseArray;
+import android.util.SparseBooleanArray;
import android.webkit.MimeTypeMap;
+import com.android.internal.util.ArrayUtils;
+
import com.google.common.annotations.VisibleForTesting;
import java.io.File;
import java.io.IOException;
+import java.util.ArrayList;
import java.util.Random;
import java.util.Set;
+import java.util.function.BiConsumer;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -64,6 +76,12 @@ public class Helpers {
private static final Pattern CONTENT_DISPOSITION_PATTERN =
Pattern.compile("attachment;\\s*filename\\s*=\\s*\"([^\"]*)\"");
+ private static final Pattern PATTERN_ANDROID_DIRS =
+ Pattern.compile("(?i)^/storage/[^/]+(?:/[0-9]+)?/Android/(?:data|obb|media)/.+");
+
+ private static final Pattern PATTERN_PUBLIC_DIRS =
+ Pattern.compile("(?i)^/storage/[^/]+(?:/[0-9]+)?/([^/]+)/.+");
+
private static final Object sUniqueLock = new Object();
private static HandlerThread sAsyncHandlerThread;
@@ -144,7 +162,7 @@ public class Helpers {
// When this download will show a notification, run with a higher
// priority, since it's effectively a foreground service
if (info.isVisible()) {
- builder.setPriority(JobInfo.PRIORITY_FOREGROUND_APP);
+ builder.setPriority(JobInfo.PRIORITY_FOREGROUND_SERVICE);
builder.setFlags(JobInfo.FLAG_WILL_BE_FOREGROUND);
}
@@ -472,6 +490,10 @@ public class Helpers {
throw new IOException("Failed to generate an available filename");
}
+ public static boolean isFileInExternalAndroidDirs(String filePath) {
+ return PATTERN_ANDROID_DIRS.matcher(filePath).matches();
+ }
+
static boolean isFilenameValid(Context context, File file) {
return isFilenameValid(context, file, true);
}
@@ -488,9 +510,8 @@ public class Helpers {
static boolean isFilenameValidInExternalPackage(Context context, File file,
String packageName) {
try {
- if (containsCanonical(buildExternalStorageAppFilesDirs(packageName), file) ||
+ if (containsCanonical(buildExternalStorageAppDataDirs(packageName), file) ||
containsCanonical(buildExternalStorageAppObbDirs(packageName), file) ||
- containsCanonical(buildExternalStorageAppCacheDirs(packageName), file) ||
containsCanonical(buildExternalStorageAppMediaDirs(packageName), file)) {
return true;
}
@@ -499,7 +520,33 @@ public class Helpers {
return false;
}
- Log.w(TAG, "Path appears to be invalid: " + file);
+ return false;
+ }
+
+ static boolean isFilenameValidInPublicDownloadsDir(File file) {
+ try {
+ if (containsCanonical(buildExternalStoragePublicDirs(
+ Environment.DIRECTORY_DOWNLOADS), file)) {
+ return true;
+ }
+ } catch (IOException e) {
+ Log.w(TAG, "Failed to resolve canonical path: " + e);
+ return false;
+ }
+
+ return false;
+ }
+
+ @com.android.internal.annotations.VisibleForTesting
+ public static boolean isFilenameValidInKnownPublicDir(@Nullable String filePath) {
+ if (filePath == null) {
+ return false;
+ }
+ final Matcher matcher = PATTERN_PUBLIC_DIRS.matcher(filePath);
+ if (matcher.matches()) {
+ final String publicDir = matcher.group(1);
+ return ArrayUtils.contains(Environment.STANDARD_DIRECTORIES, publicDir);
+ }
return false;
}
@@ -529,7 +576,6 @@ public class Helpers {
return false;
}
- Log.w(TAG, "Path appears to be invalid: " + file);
return false;
}
@@ -581,264 +627,57 @@ public class Helpers {
}
}
- /**
- * Checks whether this looks like a legitimate selection parameter
- */
- public static void validateSelection(String selection, Set<String> allowedColumns) {
- try {
- if (selection == null || selection.isEmpty()) {
- return;
- }
- Lexer lexer = new Lexer(selection, allowedColumns);
- parseExpression(lexer);
- if (lexer.currentToken() != Lexer.TOKEN_END) {
- throw new IllegalArgumentException("syntax error");
- }
- } catch (RuntimeException ex) {
- if (Constants.LOGV) {
- Log.d(Constants.TAG, "invalid selection [" + selection + "] triggered " + ex);
- } else if (false) {
- Log.d(Constants.TAG, "invalid selection triggered " + ex);
+ public static void handleRemovedUidEntries(@NonNull Context context, @NonNull Cursor cursor,
+ @NonNull ArrayList<Long> idsToDelete, @NonNull ArrayList<Long> idsToOrphan,
+ @Nullable LongSparseArray<String> idsToGrantPermission) {
+ final SparseArray<String> knownUids = new SparseArray<>();
+ while (cursor.moveToNext()) {
+ final long downloadId = cursor.getLong(0);
+ final int uid = cursor.getInt(1);
+
+ final String ownerPackageName;
+ final int index = knownUids.indexOfKey(uid);
+ if (index >= 0) {
+ ownerPackageName = knownUids.valueAt(index);
+ } else {
+ ownerPackageName = getPackageForUid(context, uid);
+ knownUids.put(uid, ownerPackageName);
}
- throw ex;
- }
- }
+ if (ownerPackageName == null) {
+ final int destination = cursor.getInt(2);
+ final String filePath = cursor.getString(3);
- // expression <- ( expression ) | statement [AND_OR ( expression ) | statement] *
- // | statement [AND_OR expression]*
- private static void parseExpression(Lexer lexer) {
- for (;;) {
- // ( expression )
- if (lexer.currentToken() == Lexer.TOKEN_OPEN_PAREN) {
- lexer.advance();
- parseExpression(lexer);
- if (lexer.currentToken() != Lexer.TOKEN_CLOSE_PAREN) {
- throw new IllegalArgumentException("syntax error, unmatched parenthese");
+ if ((destination == DESTINATION_EXTERNAL
+ || destination == DESTINATION_FILE_URI
+ || destination == DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD)
+ && isFilenameValidInKnownPublicDir(filePath)) {
+ idsToOrphan.add(downloadId);
+ } else {
+ idsToDelete.add(downloadId);
}
- lexer.advance();
- } else {
- // statement
- parseStatement(lexer);
- }
- if (lexer.currentToken() != Lexer.TOKEN_AND_OR) {
- break;
+ } else if (idsToGrantPermission != null) {
+ idsToGrantPermission.put(downloadId, ownerPackageName);
}
- lexer.advance();
}
}
- // statement <- COLUMN COMPARE VALUE
- // | COLUMN IS NULL
- private static void parseStatement(Lexer lexer) {
- // both possibilities start with COLUMN
- if (lexer.currentToken() != Lexer.TOKEN_COLUMN) {
- throw new IllegalArgumentException("syntax error, expected column name");
- }
- lexer.advance();
-
- // statement <- COLUMN COMPARE VALUE
- if (lexer.currentToken() == Lexer.TOKEN_COMPARE) {
- lexer.advance();
- if (lexer.currentToken() != Lexer.TOKEN_VALUE) {
- throw new IllegalArgumentException("syntax error, expected quoted string");
- }
- lexer.advance();
- return;
- }
-
- // statement <- COLUMN IS NULL
- if (lexer.currentToken() == Lexer.TOKEN_IS) {
- lexer.advance();
- if (lexer.currentToken() != Lexer.TOKEN_NULL) {
- throw new IllegalArgumentException("syntax error, expected NULL");
- }
- lexer.advance();
- return;
+ public static String buildQueryWithIds(ArrayList<Long> downloadIds) {
+ final StringBuilder queryBuilder = new StringBuilder(Downloads.Impl._ID + " in (");
+ final int size = downloadIds.size();
+ for (int i = 0; i < size; i++) {
+ queryBuilder.append(downloadIds.get(i));
+ queryBuilder.append((i == size - 1) ? ")" : ",");
}
-
- // didn't get anything good after COLUMN
- throw new IllegalArgumentException("syntax error after column name");
+ return queryBuilder.toString();
}
- /**
- * A simple lexer that recognizes the words of our restricted subset of SQL where clauses
- */
- private static class Lexer {
- public static final int TOKEN_START = 0;
- public static final int TOKEN_OPEN_PAREN = 1;
- public static final int TOKEN_CLOSE_PAREN = 2;
- public static final int TOKEN_AND_OR = 3;
- public static final int TOKEN_COLUMN = 4;
- public static final int TOKEN_COMPARE = 5;
- public static final int TOKEN_VALUE = 6;
- public static final int TOKEN_IS = 7;
- public static final int TOKEN_NULL = 8;
- public static final int TOKEN_END = 9;
-
- private final String mSelection;
- private final Set<String> mAllowedColumns;
- private int mOffset = 0;
- private int mCurrentToken = TOKEN_START;
- private final char[] mChars;
-
- public Lexer(String selection, Set<String> allowedColumns) {
- mSelection = selection;
- mAllowedColumns = allowedColumns;
- mChars = new char[mSelection.length()];
- mSelection.getChars(0, mChars.length, mChars, 0);
- advance();
- }
-
- public int currentToken() {
- return mCurrentToken;
- }
-
- public void advance() {
- char[] chars = mChars;
-
- // consume whitespace
- while (mOffset < chars.length && chars[mOffset] == ' ') {
- ++mOffset;
- }
-
- // end of input
- if (mOffset == chars.length) {
- mCurrentToken = TOKEN_END;
- return;
- }
-
- // "("
- if (chars[mOffset] == '(') {
- ++mOffset;
- mCurrentToken = TOKEN_OPEN_PAREN;
- return;
- }
-
- // ")"
- if (chars[mOffset] == ')') {
- ++mOffset;
- mCurrentToken = TOKEN_CLOSE_PAREN;
- return;
- }
-
- // "?"
- if (chars[mOffset] == '?') {
- ++mOffset;
- mCurrentToken = TOKEN_VALUE;
- return;
- }
-
- // "=" and "=="
- if (chars[mOffset] == '=') {
- ++mOffset;
- mCurrentToken = TOKEN_COMPARE;
- if (mOffset < chars.length && chars[mOffset] == '=') {
- ++mOffset;
- }
- return;
- }
-
- // ">" and ">="
- if (chars[mOffset] == '>') {
- ++mOffset;
- mCurrentToken = TOKEN_COMPARE;
- if (mOffset < chars.length && chars[mOffset] == '=') {
- ++mOffset;
- }
- return;
- }
-
- // "<", "<=" and "<>"
- if (chars[mOffset] == '<') {
- ++mOffset;
- mCurrentToken = TOKEN_COMPARE;
- if (mOffset < chars.length && (chars[mOffset] == '=' || chars[mOffset] == '>')) {
- ++mOffset;
- }
- return;
- }
-
- // "!="
- if (chars[mOffset] == '!') {
- ++mOffset;
- mCurrentToken = TOKEN_COMPARE;
- if (mOffset < chars.length && chars[mOffset] == '=') {
- ++mOffset;
- return;
- }
- throw new IllegalArgumentException("Unexpected character after !");
- }
-
- // columns and keywords
- // first look for anything that looks like an identifier or a keyword
- // and then recognize the individual words.
- // no attempt is made at discarding sequences of underscores with no alphanumeric
- // characters, even though it's not clear that they'd be legal column names.
- if (isIdentifierStart(chars[mOffset])) {
- int startOffset = mOffset;
- ++mOffset;
- while (mOffset < chars.length && isIdentifierChar(chars[mOffset])) {
- ++mOffset;
- }
- String word = mSelection.substring(startOffset, mOffset);
- if (mOffset - startOffset <= 4) {
- if (word.equals("IS")) {
- mCurrentToken = TOKEN_IS;
- return;
- }
- if (word.equals("OR") || word.equals("AND")) {
- mCurrentToken = TOKEN_AND_OR;
- return;
- }
- if (word.equals("NULL")) {
- mCurrentToken = TOKEN_NULL;
- return;
- }
- }
- if (mAllowedColumns.contains(word)) {
- mCurrentToken = TOKEN_COLUMN;
- return;
- }
- throw new IllegalArgumentException("unrecognized column or keyword: " + word);
- }
-
- // quoted strings
- if (chars[mOffset] == '\'') {
- ++mOffset;
- while (mOffset < chars.length) {
- if (chars[mOffset] == '\'') {
- if (mOffset + 1 < chars.length && chars[mOffset + 1] == '\'') {
- ++mOffset;
- } else {
- break;
- }
- }
- ++mOffset;
- }
- if (mOffset == chars.length) {
- throw new IllegalArgumentException("unterminated string");
- }
- ++mOffset;
- mCurrentToken = TOKEN_VALUE;
- return;
- }
-
- // anything we don't recognize
- throw new IllegalArgumentException("illegal character: " + chars[mOffset]);
- }
-
- private static final boolean isIdentifierStart(char c) {
- return c == '_' ||
- (c >= 'A' && c <= 'Z') ||
- (c >= 'a' && c <= 'z');
- }
-
- private static final boolean isIdentifierChar(char c) {
- return c == '_' ||
- (c >= 'A' && c <= 'Z') ||
- (c >= 'a' && c <= 'z') ||
- (c >= '0' && c <= '9');
+ public static String getPackageForUid(Context context, int uid) {
+ String[] packages = context.getPackageManager().getPackagesForUid(uid);
+ if (packages == null || packages.length == 0) {
+ return null;
}
+ // For permission related purposes, any package belonging to the given uid should work.
+ return packages[0];
}
}
diff --git a/src/com/android/providers/downloads/MediaStoreDownloadsHelper.java b/src/com/android/providers/downloads/MediaStoreDownloadsHelper.java
new file mode 100644
index 00000000..c4f347cb
--- /dev/null
+++ b/src/com/android/providers/downloads/MediaStoreDownloadsHelper.java
@@ -0,0 +1,54 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.providers.downloads;
+
+import android.content.ContentUris;
+import android.net.Uri;
+import android.provider.MediaStore;
+
+public class MediaStoreDownloadsHelper {
+
+ private static final String MEDIASTORE_DOWNLOAD_FILE_PREFIX = "msf:";
+ private static final String MEDIASTORE_DOWNLOAD_DIR_PREFIX = "msd:";
+
+ public static String getDocIdForMediaStoreDownload(long id, boolean isDir) {
+ return (isDir ? MEDIASTORE_DOWNLOAD_DIR_PREFIX : MEDIASTORE_DOWNLOAD_FILE_PREFIX) + id;
+ }
+
+ public static boolean isMediaStoreDownload(String docId) {
+ return docId != null && (docId.startsWith(MEDIASTORE_DOWNLOAD_FILE_PREFIX)
+ || docId.startsWith(MEDIASTORE_DOWNLOAD_DIR_PREFIX));
+ }
+
+ public static long getMediaStoreId(String docId) {
+ return Long.parseLong(getMediaStoreIdString(docId));
+ }
+
+
+ public static String getMediaStoreIdString(String docId) {
+ final int index = docId.indexOf(":");
+ return docId.substring(index + 1);
+ }
+
+ public static boolean isMediaStoreDownloadDir(String docId) {
+ return docId != null && docId.startsWith(MEDIASTORE_DOWNLOAD_DIR_PREFIX);
+ }
+
+ public static Uri getMediaStoreUri(String docId) {
+ return ContentUris.withAppendedId(MediaStore.Downloads.EXTERNAL_CONTENT_URI,
+ getMediaStoreId(docId));
+ }
+}
diff --git a/src/com/android/providers/downloads/OpenHelper.java b/src/com/android/providers/downloads/OpenHelper.java
index c88902b7..19cfee95 100644
--- a/src/com/android/providers/downloads/OpenHelper.java
+++ b/src/com/android/providers/downloads/OpenHelper.java
@@ -29,11 +29,13 @@ import android.content.ContentUris;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInstaller;
+import android.content.pm.PackageManager;
import android.database.Cursor;
import android.net.Uri;
import android.os.Process;
import android.provider.DocumentsContract;
import android.provider.Downloads.Impl.RequestHeaders;
+import android.provider.MediaStore;
import android.util.Log;
import java.io.File;
@@ -51,6 +53,10 @@ public class OpenHelper {
}
intent.addFlags(intentFlags);
+ return startViewIntent(context, intent);
+ }
+
+ public static boolean startViewIntent(Context context, Intent intent) {
try {
context.startActivity(intent);
return true;
@@ -60,6 +66,42 @@ public class OpenHelper {
}
}
+ public static Intent buildViewIntentForMediaStoreDownload(Context context,
+ Uri documentUri) {
+ final long mediaStoreId = MediaStoreDownloadsHelper.getMediaStoreId(
+ DocumentsContract.getDocumentId(documentUri));
+ final Uri queryUri = ContentUris.withAppendedId(
+ MediaStore.Downloads.EXTERNAL_CONTENT_URI, mediaStoreId);
+ try (Cursor cursor = context.getContentResolver().query(
+ queryUri, null, null, null)) {
+ if (cursor.moveToFirst()) {
+ final String mimeType = cursor.getString(
+ cursor.getColumnIndex(MediaStore.Downloads.MIME_TYPE));
+
+ final Intent intent = new Intent(Intent.ACTION_VIEW);
+ intent.setDataAndType(documentUri, mimeType);
+ intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION
+ | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
+
+ if ("application/vnd.android.package-archive".equals(mimeType)) {
+ // Also splice in details about where it came from
+ intent.putExtra(Intent.EXTRA_ORIGINATING_URI,
+ getCursorUri(cursor, MediaStore.Downloads.DOWNLOAD_URI));
+ intent.putExtra(Intent.EXTRA_REFERRER,
+ getCursorUri(cursor, MediaStore.Downloads.REFERER_URI));
+ final String ownerPackageName = getCursorString(cursor,
+ MediaStore.Downloads.OWNER_PACKAGE_NAME);
+ final int ownerUid = getPackageUid(context, ownerPackageName);
+ if (ownerUid > 0) {
+ intent.putExtra(Intent.EXTRA_ORIGINATING_UID, ownerUid);
+ }
+ }
+ return intent;
+ }
+ }
+ return null;
+ }
+
/**
* Build an {@link Intent} to view the download with given ID, handling
* subtleties around installing packages.
@@ -140,12 +182,25 @@ public class OpenHelper {
return PackageInstaller.SessionParams.UID_UNKNOWN;
}
+ private static int getPackageUid(Context context, String packageName) {
+ if (packageName == null) {
+ return -1;
+ }
+ try {
+ return context.getPackageManager().getPackageUid(packageName, 0);
+ } catch (PackageManager.NameNotFoundException e) {
+ Log.e(TAG, "Couldn't get uid for " + packageName, e);
+ return -1;
+ }
+ }
+
private static String getCursorString(Cursor cursor, String column) {
return cursor.getString(cursor.getColumnIndexOrThrow(column));
}
private static Uri getCursorUri(Cursor cursor, String column) {
- return Uri.parse(getCursorString(cursor, column));
+ final String uriString = cursor.getString(cursor.getColumnIndexOrThrow(column));
+ return uriString == null ? null : Uri.parse(uriString);
}
private static File getCursorFile(Cursor cursor, String column) {
diff --git a/src/com/android/providers/downloads/RealSystemFacade.java b/src/com/android/providers/downloads/RealSystemFacade.java
index a0ce92c3..94461a68 100644
--- a/src/com/android/providers/downloads/RealSystemFacade.java
+++ b/src/com/android/providers/downloads/RealSystemFacade.java
@@ -28,6 +28,7 @@ import android.net.ConnectivityManager;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
+import android.os.Bundle;
import android.security.NetworkSecurityPolicy;
import android.security.net.config.ApplicationConfig;
@@ -85,6 +86,11 @@ class RealSystemFacade implements SystemFacade {
}
@Override
+ public void sendBroadcast(Intent intent, String receiverPermission, Bundle options) {
+ mContext.sendBroadcast(intent, receiverPermission, options);
+ }
+
+ @Override
public boolean userOwnsPackage(int uid, String packageName) throws NameNotFoundException {
return mContext.getPackageManager().getApplicationInfo(packageName, 0).uid == uid;
}
diff --git a/src/com/android/providers/downloads/SystemFacade.java b/src/com/android/providers/downloads/SystemFacade.java
index 14002a15..d73fe117 100644
--- a/src/com/android/providers/downloads/SystemFacade.java
+++ b/src/com/android/providers/downloads/SystemFacade.java
@@ -23,6 +23,7 @@ import android.content.pm.PackageManager.NameNotFoundException;
import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
+import android.os.Bundle;
import java.security.GeneralSecurityException;
@@ -58,6 +59,11 @@ interface SystemFacade {
public void sendBroadcast(Intent intent);
/**
+ * Send a broadcast intent with options.
+ */
+ public void sendBroadcast(Intent intent, String receiverPermission, Bundle options);
+
+ /**
* Returns true if the specified UID owns the specified package name.
*/
public boolean userOwnsPackage(int uid, String pckg) throws NameNotFoundException;
diff --git a/tests/Android.bp b/tests/Android.bp
new file mode 100644
index 00000000..3c03c82d
--- /dev/null
+++ b/tests/Android.bp
@@ -0,0 +1,41 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+ name: "DownloadProviderTests",
+
+ srcs: [
+ "src/**/*.java",
+ ],
+
+ libs: [
+ "android.test.base",
+ "android.test.mock",
+ "android.test.runner",
+ ],
+
+ static_libs: [
+ "mockito-target",
+ "mockwebserver",
+ ],
+
+ platform_apis: true,
+
+ instrumentation_for: "DownloadProvider",
+
+ test_suites: ["device-tests"],
+
+ certificate: "media",
+}
diff --git a/tests/Android.mk b/tests/Android.mk
deleted file mode 100644
index c3d9bcb7..00000000
--- a/tests/Android.mk
+++ /dev/null
@@ -1,22 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# We only want this apk build for tests.
-LOCAL_MODULE_TAGS := tests
-
-# Include all test java files.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-LOCAL_INSTRUMENTATION_FOR := DownloadProvider
-LOCAL_JAVA_LIBRARIES := android.test.runner android.test.base android.test.mock
-LOCAL_STATIC_JAVA_LIBRARIES := \
- mockwebserver \
- mockito-target
-LOCAL_PACKAGE_NAME := DownloadProviderTests
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_COMPATIBILITY_SUITE := device-tests
-LOCAL_CERTIFICATE := media
-
-include $(BUILD_PACKAGE)
-
-# additionally, build sub-tests in a separate .apk
-include $(call all-makefiles-under,$(LOCAL_PATH))
diff --git a/tests/AndroidTest.xml b/tests/AndroidTest.xml
index 6a09909f..7421f0ef 100644
--- a/tests/AndroidTest.xml
+++ b/tests/AndroidTest.xml
@@ -20,7 +20,7 @@
<option name="test-suite-tag" value="apct" />
<option name="test-tag" value="DownloadProviderTests" />
- <test class="com.android.tradefed.testtype.InstrumentationTest" >
+ <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
<option name="package" value="com.android.providers.downloads.tests" />
<option name="runner" value="android.test.InstrumentationTestRunner" />
<option name="hidden-api-checks" value="false"/>
diff --git a/tests/permission/Android.bp b/tests/permission/Android.bp
new file mode 100644
index 00000000..c3767e16
--- /dev/null
+++ b/tests/permission/Android.bp
@@ -0,0 +1,34 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+ name: "DownloadProviderPermissionTests",
+
+ srcs: [
+ "src/**/*.java",
+ ],
+
+ libs: [
+ "android.test.base",
+ "android.test.runner",
+ ],
+
+ static_libs: [
+ "junit",
+ ],
+
+ platform_apis: true,
+
+}
diff --git a/tests/permission/Android.mk b/tests/permission/Android.mk
deleted file mode 100644
index ae96b5cd..00000000
--- a/tests/permission/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# We only want this apk build for tests.
-LOCAL_MODULE_TAGS := tests
-
-# Include all test java files.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner android.test.base
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-LOCAL_PACKAGE_NAME := DownloadProviderPermissionTests
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_PACKAGE)
-
diff --git a/tests/permission/AndroidTest.xml b/tests/permission/AndroidTest.xml
new file mode 100644
index 00000000..e6375ab3
--- /dev/null
+++ b/tests/permission/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Run tests for download provider permission.">
+ <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+ <option name="test-file-name" value="DownloadProviderPermissionTests.apk" />
+ </target_preparer>
+
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-tag" value="DownloadProviderPermissionTests" />
+ <test class="com.android.tradefed.testtype.InstrumentationTest" >
+ <option name="package" value="com.android.providers.downloads.permission.tests" />
+ <option name="runner" value="android.test.InstrumentationTestRunner" />
+ <option name="hidden-api-checks" value="false"/>
+ </test>
+</configuration>
diff --git a/tests/public_api_access/Android.bp b/tests/public_api_access/Android.bp
new file mode 100644
index 00000000..0845bfa9
--- /dev/null
+++ b/tests/public_api_access/Android.bp
@@ -0,0 +1,33 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_test {
+ name: "DownloadPublicApiAccessTests",
+
+ srcs: [
+ "src/**/*.java",
+ ],
+
+ libs: [
+ "android.test.base",
+ "android.test.runner",
+ ],
+
+ static_libs: [
+ "junit",
+ ],
+
+ platform_apis: true,
+}
diff --git a/tests/public_api_access/Android.mk b/tests/public_api_access/Android.mk
deleted file mode 100644
index 3bc2e8e8..00000000
--- a/tests/public_api_access/Android.mk
+++ /dev/null
@@ -1,16 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-# We only want this apk build for tests.
-LOCAL_MODULE_TAGS := tests
-
-# Include all test java files.
-LOCAL_SRC_FILES := $(call all-java-files-under, src)
-
-LOCAL_JAVA_LIBRARIES := android.test.runner android.test.base
-LOCAL_STATIC_JAVA_LIBRARIES := junit
-LOCAL_PACKAGE_NAME := DownloadPublicApiAccessTests
-LOCAL_PRIVATE_PLATFORM_APIS := true
-
-include $(BUILD_PACKAGE)
-
diff --git a/tests/public_api_access/AndroidTest.xml b/tests/public_api_access/AndroidTest.xml
new file mode 100644
index 00000000..abd1dec9
--- /dev/null
+++ b/tests/public_api_access/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2018 The Android Open Source Project
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<configuration description="Run tests for download public API.">
+ <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
+ <option name="test-file-name" value="DownloadPublicApiAccessTests.apk" />
+ </target_preparer>
+
+ <option name="test-suite-tag" value="apct" />
+ <option name="test-tag" value="DownloadPublicApiAccessTests" />
+ <test class="com.android.tradefed.testtype.InstrumentationTest" >
+ <option name="package" value="com.android.providers.downloads.public_api_access_tests" />
+ <option name="runner" value="android.test.InstrumentationTestRunner" />
+ <option name="hidden-api-checks" value="false"/>
+ </test>
+</configuration>
diff --git a/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java b/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java
index 13d2c36e..6acdfed5 100644
--- a/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java
@@ -24,15 +24,23 @@ import android.app.NotificationManager;
import android.app.job.JobParameters;
import android.app.job.JobScheduler;
import android.content.ContentResolver;
+import android.content.ContentValues;
import android.content.Context;
import android.content.pm.ProviderInfo;
import android.database.ContentObserver;
import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.MatrixCursor;
import android.net.Uri;
+import android.os.Binder;
+import android.os.Bundle;
+import android.os.IBinder;
import android.provider.Downloads;
+import android.provider.MediaStore;
import android.test.MoreAsserts;
import android.test.RenamingDelegatingContext;
import android.test.ServiceTestCase;
+import android.test.mock.MockContentProvider;
import android.test.mock.MockContentResolver;
import android.util.Log;
@@ -92,6 +100,40 @@ public abstract class AbstractDownloadProviderFunctionalTest extends
}
}
+ static class MockMediaProvider extends MockContentProvider {
+ private static final Uri TEST_URI = Uri.parse("content://media/external/11111111");
+ @Override
+ public int delete(Uri uri, String selection, String[] selectionArgs) {
+ return 0;
+ }
+
+ @Override
+ public Uri insert(Uri uri, ContentValues values) {
+ return TEST_URI;
+ }
+
+ @Override
+ public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+ String sortOrder) {
+ return new MatrixCursor(new String[0], 0);
+ }
+
+ @Override
+ public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {
+ return 1;
+ }
+
+ @Override
+ public Bundle call(String method, String request, Bundle args) {
+ return new Bundle();
+ }
+
+ @Override
+ public IBinder getIContentProviderBinder() {
+ return new Binder();
+ }
+ }
+
/**
* Context passed to the provider and the service. Allows most methods to pass through to the
* real Context (this is a LargeTest), with a few exceptions, including renaming file operations
@@ -165,6 +207,7 @@ public abstract class AbstractDownloadProviderFunctionalTest extends
provider.attachInfo(mTestContext, info);
mResolver.addProvider(PROVIDER_AUTHORITY, provider);
+ mResolver.addProvider(MediaStore.AUTHORITY, new MockMediaProvider());
setContext(mTestContext);
setupService();
diff --git a/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java b/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java
index 3a585b47..bb89b6f6 100644
--- a/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java
+++ b/tests/src/com/android/providers/downloads/AbstractPublicApiTest.java
@@ -26,6 +26,7 @@ import android.content.ContentResolver;
import android.content.ContextWrapper;
import android.database.Cursor;
import android.net.Uri;
+import android.os.Environment;
import android.os.ParcelFileDescriptor;
import android.os.SystemClock;
import android.util.Log;
@@ -238,6 +239,13 @@ public abstract class AbstractPublicApiTest extends AbstractDownloadProviderFunc
return getRequest(getServerUri(REQUEST_PATH));
}
+ protected DownloadManager.Request getRequestWithDestinationDownloadsDir()
+ throws MalformedURLException, UnknownHostException {
+ final DownloadManager.Request request = getRequest();
+ request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "testfile.txt");
+ return request;
+ }
+
protected DownloadManager.Request getRequest(String path) {
return new DownloadManager.Request(Uri.parse(path));
}
diff --git a/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java b/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
index 9a4e6444..07d18a1a 100644
--- a/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/DownloadProviderFunctionalTest.java
@@ -76,7 +76,7 @@ public class DownloadProviderFunctionalTest extends AbstractDownloadProviderFunc
Integer.toString(Downloads.Impl.DESTINATION_CACHE_PARTITION));
runUntilStatus(downloadUri, Downloads.Impl.STATUS_SUCCESS);
assertEquals(FILE_CONTENT, getDownloadContents(downloadUri));
- assertStartsWith(getContext().getCacheDir().getAbsolutePath(),
+ assertStartsWith(getContext().getCacheDir().getCanonicalPath(),
getDownloadFilename(downloadUri));
}
diff --git a/tests/src/com/android/providers/downloads/FakeInputStream.java b/tests/src/com/android/providers/downloads/FakeInputStream.java
index 179ae6e9..3f68e310 100644
--- a/tests/src/com/android/providers/downloads/FakeInputStream.java
+++ b/tests/src/com/android/providers/downloads/FakeInputStream.java
@@ -16,8 +16,9 @@
package com.android.providers.downloads;
+import libcore.util.ArrayUtils;
+
import java.io.InputStream;
-import java.util.Arrays;
/**
* Provides fake data for large transfers.
@@ -42,7 +43,7 @@ public class FakeInputStream extends InputStream {
@Override
public int read(byte[] buffer, int offset, int length) {
- Arrays.checkOffsetAndCount(buffer.length, offset, length);
+ ArrayUtils.throwsIfOutOfBounds(buffer.length, offset, length);
if (length > mRemaining) {
length = (int) mRemaining;
diff --git a/tests/src/com/android/providers/downloads/FakeSystemFacade.java b/tests/src/com/android/providers/downloads/FakeSystemFacade.java
index f381bd8a..d11e0ac4 100644
--- a/tests/src/com/android/providers/downloads/FakeSystemFacade.java
+++ b/tests/src/com/android/providers/downloads/FakeSystemFacade.java
@@ -16,6 +16,7 @@ import android.net.Network;
import android.net.NetworkCapabilities;
import android.net.NetworkInfo;
import android.net.NetworkInfo.DetailedState;
+import android.os.Bundle;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
@@ -37,6 +38,7 @@ public class FakeSystemFacade implements SystemFacade {
long mMaxBytesOverMobile = Long.MAX_VALUE;
long mRecommendedMaxBytesOverMobile = Long.MAX_VALUE;
List<Intent> mBroadcastsSent = new ArrayList<Intent>();
+ Bundle mLastBroadcastOptions;
boolean mCleartextTrafficPermitted = true;
private boolean mReturnActualTime = false;
private SSLContext mSSLContext = null;
@@ -49,6 +51,7 @@ public class FakeSystemFacade implements SystemFacade {
mMaxBytesOverMobile = Long.MAX_VALUE;
mRecommendedMaxBytesOverMobile = Long.MAX_VALUE;
mBroadcastsSent.clear();
+ mLastBroadcastOptions = null;
mReturnActualTime = false;
try {
mSSLContext = SSLContext.getDefault();
@@ -125,6 +128,13 @@ public class FakeSystemFacade implements SystemFacade {
@Override
public void sendBroadcast(Intent intent) {
mBroadcastsSent.add(intent);
+ mLastBroadcastOptions = null;
+ }
+
+ @Override
+ public void sendBroadcast(Intent intent, String receiverPermission, Bundle options) {
+ mBroadcastsSent.add(intent);
+ mLastBroadcastOptions = options;
}
@Override
diff --git a/tests/src/com/android/providers/downloads/HelpersTest.java b/tests/src/com/android/providers/downloads/HelpersTest.java
index 121b7cda..65c5d368 100644
--- a/tests/src/com/android/providers/downloads/HelpersTest.java
+++ b/tests/src/com/android/providers/downloads/HelpersTest.java
@@ -85,4 +85,36 @@ public class HelpersTest extends AndroidTestCase {
null, "video/mp4", Downloads.Impl.DESTINATION_CACHE_PARTITION);
assertEquals(expected.getAbsolutePath(), actual);
}
+
+ public void testIsFileInExternalAndroidDirs() throws Exception {
+ assertTrue(Helpers.isFileInExternalAndroidDirs(
+ "/storage/emulated/0/Android/data/com.example"));
+ assertTrue(Helpers.isFileInExternalAndroidDirs(
+ "/storage/emulated/0/Android/data/com.example/colors.txt"));
+ assertTrue(Helpers.isFileInExternalAndroidDirs(
+ "/storage/emulated/0/Android/media/com.example/file.mp4"));
+ assertTrue(Helpers.isFileInExternalAndroidDirs(
+ "/storage/AAAA-FFFF/Android/media/com.example/file.mp4"));
+ assertFalse(Helpers.isFileInExternalAndroidDirs(
+ "/storage/emulated/0/Download/foo.pdf"));
+ assertFalse(Helpers.isFileInExternalAndroidDirs(
+ "/storage/emulated/0/Download/dir/bar.html"));
+ assertFalse(Helpers.isFileInExternalAndroidDirs(
+ "/storage/AAAA-FFFF/Download/dir/bar.html"));
+ }
+
+ public void testIsFilenameValidinKnownPublicDir() throws Exception {
+ assertTrue(Helpers.isFilenameValidInKnownPublicDir(
+ "/storage/emulated/0/Download/dir/file.txt"));
+ assertTrue(Helpers.isFilenameValidInKnownPublicDir(
+ "/storage/emulated/0/Music/foo.mp4"));
+ assertTrue(Helpers.isFilenameValidInKnownPublicDir(
+ "/storage/emulated/0/DCIM/vacation/bar.jpg"));
+ assertFalse(Helpers.isFilenameValidInKnownPublicDir(
+ "/storage/emulated/0/Testing/foo.mp4"));
+ assertFalse(Helpers.isFilenameValidInKnownPublicDir(
+ "/storage/emulated/0/Misc/Download/bar.jpg"));
+ assertFalse(Helpers.isFilenameValidInKnownPublicDir(
+ "/storage/emulated/0/Android/data/com.example/bar.jpg"));
+ }
}
diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
index 97bc4a22..0652f245 100644
--- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
+++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java
@@ -36,6 +36,7 @@ import static java.net.HttpURLConnection.HTTP_PARTIAL;
import static java.net.HttpURLConnection.HTTP_PRECON_FAILED;
import static java.net.HttpURLConnection.HTTP_UNAVAILABLE;
+import android.app.BroadcastOptions;
import android.app.DownloadManager;
import android.app.Notification;
import android.app.NotificationManager;
@@ -43,6 +44,7 @@ import android.content.Intent;
import android.database.Cursor;
import android.net.ConnectivityManager;
import android.net.Uri;
+import android.os.Bundle;
import android.os.Environment;
import android.os.SystemClock;
import android.provider.Downloads;
@@ -85,8 +87,9 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
mNotifManager = getContext().getSystemService(NotificationManager.class);
mDownloadManager = getContext().getSystemService(DownloadManager.class);
- mTestDirectory = new File(Environment.getExternalStorageDirectory() + File.separator
- + "download_manager_functional_test");
+ mTestDirectory = new File(Environment.getExternalStoragePublicDirectory(
+ Environment.DIRECTORY_DOWNLOADS)
+ + File.separator + "download_manager_functional_test");
if (mTestDirectory.exists()) {
IoUtils.deleteContents(mTestDirectory);
} else {
@@ -249,15 +252,15 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
enqueueResponse(buildEmptyResponse(HTTP_OK));
enqueueResponse(buildEmptyResponse(HTTP_NOT_FOUND));
- Download download1 = enqueueRequest(getRequest());
+ Download download1 = enqueueRequest(getRequestWithDestinationDownloadsDir());
download1.runUntilStatus(DownloadManager.STATUS_SUCCESSFUL);
mSystemFacade.incrementTimeMillis(1); // ensure downloads are correctly ordered by time
- Download download2 = enqueueRequest(getRequest());
+ Download download2 = enqueueRequest(getRequestWithDestinationDownloadsDir());
download2.runUntilStatus(DownloadManager.STATUS_FAILED);
mSystemFacade.incrementTimeMillis(1);
- Download download3 = enqueueRequest(getRequest());
+ Download download3 = enqueueRequest(getRequestWithDestinationDownloadsDir());
Cursor cursor = mManager.query(new DownloadManager.Query());
checkAndCloseCursor(cursor, download3, download2, download1);
@@ -554,6 +557,11 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest {
Intent broadcast = mSystemFacade.mBroadcastsSent.get(0);
assertEquals(DownloadManager.ACTION_NOTIFICATION_CLICKED, broadcast.getAction());
assertEquals(PACKAGE_NAME, broadcast.getPackage());
+
+ Bundle bOptions = mSystemFacade.mLastBroadcastOptions;
+ assertNotNull(bOptions);
+ BroadcastOptions brOptions = new BroadcastOptions(bOptions);
+ assertTrue(brOptions.allowsBackgroundActivityStarts());
}
public void testNotificationCancelDownloadClicked() throws Exception {
diff --git a/ui/Android.bp b/ui/Android.bp
new file mode 100644
index 00000000..5192eadb
--- /dev/null
+++ b/ui/Android.bp
@@ -0,0 +1,35 @@
+// Copyright (C) 2018 The Android Open Source Project
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+android_app {
+ name: "DownloadProviderUi",
+
+ manifest: "AndroidManifest.xml",
+
+ srcs: [
+ ":download_provider-files",
+ "src/**/*.java",
+ ],
+
+ resource_dirs: [
+ "res",
+ ],
+
+ platform_apis: true,
+
+ certificate: "media",
+
+ privileged: true,
+}
diff --git a/ui/Android.mk b/ui/Android.mk
deleted file mode 100644
index f63d7e3f..00000000
--- a/ui/Android.mk
+++ /dev/null
@@ -1,17 +0,0 @@
-LOCAL_PATH:= $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_TAGS := optional
-
-LOCAL_SRC_FILES := $(call all-java-files-under, src) \
- ../src/com/android/providers/downloads/OpenHelper.java \
- ../src/com/android/providers/downloads/Constants.java \
- ../src/com/android/providers/downloads/DownloadDrmHelper.java \
- ../src/com/android/providers/downloads/RawDocumentsHelper.java
-
-LOCAL_PACKAGE_NAME := DownloadProviderUi
-LOCAL_PRIVATE_PLATFORM_APIS := true
-LOCAL_CERTIFICATE := media
-LOCAL_PRIVILEGED_MODULE := true
-
-include $(BUILD_PACKAGE)
diff --git a/ui/res/values-vi/strings.xml b/ui/res/values-vi/strings.xml
index 77597861..287fccd1 100644
--- a/ui/res/values-vi/strings.xml
+++ b/ui/res/values-vi/strings.xml
@@ -16,7 +16,7 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="app_label" msgid="3070921713463294774">"Nội dung tải xuống"</string>
+ <string name="app_label" msgid="3070921713463294774">"Tệp đã tải xuống"</string>
<string name="download_title_sorted_by_date" msgid="5898014492155434221">"Tải xuống - Sắp xếp theo ngày"</string>
<string name="download_title_sorted_by_size" msgid="1417193166677094813">"Tải xuống - Sắp xếp theo kích thước"</string>
<string name="no_downloads" msgid="1029667411186146836">"Không có bản tải xuống nào."</string>
diff --git a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java
index 41d7187a..b3c08131 100644
--- a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java
+++ b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java
@@ -23,7 +23,6 @@ import android.app.DialogFragment;
import android.app.DownloadManager;
import android.app.DownloadManager.Query;
import android.app.FragmentManager;
-import android.content.ActivityNotFoundException;
import android.content.ContentUris;
import android.content.Context;
import android.content.DialogInterface;
@@ -36,6 +35,7 @@ import android.util.Log;
import android.widget.Toast;
import com.android.providers.downloads.Constants;
+import com.android.providers.downloads.MediaStoreDownloadsHelper;
import com.android.providers.downloads.OpenHelper;
import com.android.providers.downloads.RawDocumentsHelper;
@@ -67,6 +67,18 @@ public class TrampolineActivity extends Activity {
return;
}
+ if (MediaStoreDownloadsHelper.isMediaStoreDownload(
+ DocumentsContract.getDocumentId(documentUri))) {
+ final Intent intent = OpenHelper.buildViewIntentForMediaStoreDownload(
+ this, documentUri);
+ if (intent == null || !OpenHelper.startViewIntent(this, intent)) {
+ Toast.makeText(this, R.string.download_no_application_title, Toast.LENGTH_SHORT)
+ .show();
+ }
+ finish();
+ return;
+ }
+
final long id = ContentUris.parseId(documentUri);
final DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE);
dm.setAccessAllDownloads(true);
@@ -221,7 +233,7 @@ public class TrampolineActivity extends Activity {
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);