From 35c63e22881a6dccbd350923f9a1d3e71023cc3f Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 18 Mar 2013 12:39:09 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Ie12c6aedd5024af5642dd67208a24ec5452ecf11 Auto-generated-cl: translation import --- ui/res/values-ro/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/res/values-ro/strings.xml b/ui/res/values-ro/strings.xml index 0cf015d1..21c96272 100644 --- a/ui/res/values-ro/strings.xml +++ b/ui/res/values-ro/strings.xml @@ -39,7 +39,7 @@ "Nu se poate descărca. Nu este disponibil un mediu de stocare extern." "Fişierul nu poate fi deschis" "Eliminaţi" - "Ştergeţi" + "Ștergeţi" "Păstraţi" "Anulaţi" "Reîncercaţi" -- cgit v1.2.3 From 323f5ae0cafdc72f61defefaa5ba938f1b4d0dda Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 3 Apr 2013 10:13:32 -0700 Subject: Follow MockWebServer API changes. Change-Id: Icaba016bc6e098745e56a3b6367a8a6af0151158 --- .../providers/downloads/AbstractDownloadProviderFunctionalTest.java | 5 ----- .../src/com/android/providers/downloads/PublicApiFunctionalTest.java | 3 +-- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java b/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java index e59aff08..3b937389 100644 --- a/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java +++ b/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java @@ -34,7 +34,6 @@ import android.test.mock.MockContentResolver; import android.util.Log; import com.google.mockwebserver.MockResponse; -import com.google.mockwebserver.MockStreamResponse; import com.google.mockwebserver.MockWebServer; import com.google.mockwebserver.RecordedRequest; import com.google.mockwebserver.SocketPolicy; @@ -221,10 +220,6 @@ public abstract class AbstractDownloadProviderFunctionalTest extends mServer.enqueue(resp); } - void enqueueResponse(MockStreamResponse resp) { - mServer.enqueue(resp); - } - MockResponse buildResponse(int status, String body) { return new MockResponse().setResponseCode(status).setBody(body) .setHeader("Content-type", "text/plain") diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java index b6fd611e..bde95815 100644 --- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java +++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java @@ -50,7 +50,6 @@ import android.test.suitebuilder.annotation.Suppress; import android.text.format.DateUtils; import com.google.mockwebserver.MockResponse; -import com.google.mockwebserver.MockStreamResponse; import com.google.mockwebserver.RecordedRequest; import com.google.mockwebserver.SocketPolicy; @@ -141,7 +140,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest { final long length = 3 * GB_IN_BYTES; final InputStream body = new FakeInputStream(length); - enqueueResponse(new MockStreamResponse().setResponseCode(HTTP_OK).setBody(body, length) + enqueueResponse(new MockResponse().setResponseCode(HTTP_OK).setBody(body, length) .setHeader("Content-type", "text/plain") .setSocketPolicy(SocketPolicy.DISCONNECT_AT_END)); -- cgit v1.2.3 From 445b908259dac16f32664521c77d94959db7ded3 Mon Sep 17 00:00:00 2001 From: Geremy Condra Date: Wed, 3 Apr 2013 19:07:45 -0700 Subject: Restore the appropriate SELinux context to the downloads dir. Change-Id: I4839fd07abdd1c6b866f1d94dc36567df047e30c --- src/com/android/providers/downloads/DownloadProvider.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index 2d0c807a..e0b5842d 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -37,6 +37,7 @@ import android.os.Binder; import android.os.Environment; import android.os.ParcelFileDescriptor; import android.os.Process; +import android.os.SELinux; import android.provider.BaseColumns; import android.provider.Downloads; import android.provider.OpenableColumns; @@ -441,8 +442,7 @@ public final class DownloadProvider extends ContentProvider { appInfo = getContext().getPackageManager(). getApplicationInfo("com.android.defcontainer", 0); } catch (NameNotFoundException e) { - // TODO Auto-generated catch block - e.printStackTrace(); + Log.wtf(Constants.TAG, "Could not get ApplicationInfo for com.android.defconatiner", e); } if (appInfo != null) { mDefContainerUid = appInfo.uid; @@ -452,6 +452,11 @@ public final class DownloadProvider extends ContentProvider { Context context = getContext(); context.startService(new Intent(context, DownloadService.class)); mDownloadsDataDir = StorageManager.getDownloadDataDirectory(getContext()); + try { + SELinux.restorecon(mDownloadsDataDir.getCanonicalPath()); + } catch (IOException e) { + Log.wtf(Constants.TAG, "Could not get canonical path for download directory", e); + } return true; } -- cgit v1.2.3 From 606590999542bcd3ac7d9e95022396503133920c Mon Sep 17 00:00:00 2001 From: Danny Baumann Date: Wed, 3 Apr 2013 14:36:21 +0200 Subject: Fix download notification click behaviour. PendingIntent.getBroadcast() doesn't update the intent extras if not explicitly given something to distinguish the intents. This caused the notification on-click to do nothing on everything but the first download. Change-Id: I29544ae5b04f8304cbbe720066a26ff90e422107 --- src/com/android/providers/downloads/DownloadNotifier.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadNotifier.java b/src/com/android/providers/downloads/DownloadNotifier.java index daae7831..f3878654 100644 --- a/src/com/android/providers/downloads/DownloadNotifier.java +++ b/src/com/android/providers/downloads/DownloadNotifier.java @@ -126,11 +126,14 @@ public class DownloadNotifier { // Build action intents if (type == TYPE_ACTIVE || type == TYPE_WAITING) { + // build a synthetic uri for intent identification purposes + final Uri uri = new Uri.Builder().scheme("active-dl").appendPath(tag).build(); final Intent intent = new Intent(Constants.ACTION_LIST, - null, mContext, DownloadReceiver.class); + uri, mContext, DownloadReceiver.class); intent.putExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS, getDownloadIds(cluster)); - builder.setContentIntent(PendingIntent.getBroadcast(mContext, 0, intent, 0)); + builder.setContentIntent(PendingIntent.getBroadcast(mContext, + 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); builder.setOngoing(true); } else if (type == TYPE_COMPLETE) { @@ -152,7 +155,8 @@ public class DownloadNotifier { final Intent intent = new Intent(action, uri, mContext, DownloadReceiver.class); intent.putExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS, getDownloadIds(cluster)); - builder.setContentIntent(PendingIntent.getBroadcast(mContext, 0, intent, 0)); + builder.setContentIntent(PendingIntent.getBroadcast(mContext, + 0, intent, PendingIntent.FLAG_UPDATE_CURRENT)); final Intent hideIntent = new Intent(Constants.ACTION_HIDE, uri, mContext, DownloadReceiver.class); -- cgit v1.2.3 From a541ec35842d040321ada63c357d9fb511bc1d7b Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 12 Apr 2013 12:06:22 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Ifa35c199e12c3bbd73895583c0947dba45345290 Auto-generated-cl: translation import --- ui/res/values-am/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ui/res/values-am/strings.xml b/ui/res/values-am/strings.xml index 34b2c39c..42626740 100644 --- a/ui/res/values-am/strings.xml +++ b/ui/res/values-am/strings.xml @@ -36,7 +36,7 @@ "ማውረድመጨረስ አይችልም። በውጪ ማህደረ መረጃ ማከማቻ ላይ በቂ ቦታ የለም።" "አውርድ ተስተጓጉሏል። መቀጠል አልተቻለም፡፡" "ማውረድ አይችልም። መድረሻ ፋይል አስቀድሞ አለ።" - "ማውረድ አይችልም። የውጪ ማህደረመረጃ የለም።" + "ማውረድ አይችልም። የውጪ ማህደረ መረጃ የለም።" "ፋይል መክፈት አይቻልም" "አስወግድ" "ሰርዝ" -- cgit v1.2.3 From e29f12803f02c7726008127ad0a2a5a8ae786ce6 Mon Sep 17 00:00:00 2001 From: Jaekyun Seok Date: Mon, 15 Apr 2013 12:35:13 +0900 Subject: Hide the sorting button when download list is empty Bug: 8515801 Change-Id: Id5ff6d56eb07de6b76bdb6bc3fa75af6ddd59a39 --- ui/src/com/android/providers/downloads/ui/DownloadList.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index ed369932..29ea60eb 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -431,8 +431,10 @@ public class DownloadList extends Activity { if (mDateSortedCursor == null || mDateSortedCursor.getCount() == 0) { mEmptyView.setVisibility(View.VISIBLE); + mSortOption.setVisibility(View.GONE); } else { mEmptyView.setVisibility(View.GONE); + mSortOption.setVisibility(View.VISIBLE); ListView lv = activeListView(); lv.setVisibility(View.VISIBLE); lv.invalidateViews(); // ensure checkboxes get updated -- cgit v1.2.3 From 750b09725825c5da021063db87d92a6180897cca Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 22 Apr 2013 12:20:49 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I3162d21b74c9fcc7e6ae2ff5e3b312bb7ce31c67 Auto-generated-cl: translation import --- res/values-sw/strings.xml | 10 +++++----- res/values-tr/strings.xml | 2 +- res/values-zu/strings.xml | 6 +++--- ui/res/values-sw/strings.xml | 2 +- ui/res/values-zu/strings.xml | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 89ea1a11..d754ecb9 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -16,15 +16,15 @@ - "Kidhibiti Vipakuzi" - "Fikia kidhibiti cha vipakuzi" + "Kidhibiti Vipakuliwa" + "Fikia kidhibiti cha vipakuliwa." "Inaruhusu programu kufikia kidhibiti vipakuzi na kukitumia ili kupakua faili. Programu hasidi zinaweza kutumia hii ili kutatiza vipakuzi na kufikia maelezo ya kibinafsi." - "Vitendaji mahiri vya kisimamizi vipakuzi." + "Hatua za kina zinazoweza kufanywa na kidhibiti vipakuliwa." "Inaruhusu programu kufikia vitendaji mahiri vya kidhibiti vipakuzi. Programu hasidi zinaweza kutumia hii ili kutatiza vipakuzi na kufikia maelezo ya kibinafsi." - "Tuma arifa za vipakuzi." + "Tuma arifa za vipakuliwa." "Inaruhusu programu kutuma notisi kuhusu vipakuzi vilivyokamilika. Programu hasidi zinaweza kutumia hii kuchanganya programu zingine ambazo hupakua faili." "Angalia vipakuzi vyote kwa hifadhi ya USB" - "Tazama vipakuzi vyote kwa kadi ya SD" + "Tazama vipakuliwa vyote vilivyoenda kwenye kadi ya SD" "Inaruhusu programu kuona vipakuzi vyote kwenye kadi ya SD, pasi kuzingatia ni programu gani iliyozipakuwa." "Geuza nafasi katika kache ya kupakua" "Inaruhusu programu kupakua faili kwa kache ya vipakuzi ambayo haiwezi kufutwa kiotomatiki wakati kidhibiti upakuaji kinahitaji nafasi zaidi." diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 915eb758..c70220fe 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -28,7 +28,7 @@ "Uygulamaya, indiren uygulamadan bağımsız olarak, SD karta yapılan tüm indirme işlemlerini görme izni verir." "İndirme önbelleğinde alan ayır" "Uygulamaya, dosyaları indirme önbelleğine indirme izni verir. İndirme önbelleği indirme yöneticisine daha fazla alan gerektiğinde otomatik olarak silinemez." - "dosyaları bildirimde bulunmadan indir" + "dosyaları bildirimde bulunmadan indirme" "Uygulamaya, kullanıcıya herhangi bir bildirim göstermeden, dosyaları indirme yöneticisi ile indirme izni verir." "Tüm sistem indirmelerine erişim" "Uygulamaya, sistemdeki herhangi bir uygulama tarafından başlatılan tüm indirme işlemlerini görüntüleme ve değiştirme izni verir." diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 07bec1c7..13ec7ecc 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -25,13 +25,13 @@ "Ivumela insiza ukuthi ithumele izaziso yelana nokulayishwa okuqediwe. Izinsiza ezinobungozi zingakusebenzisa lokhu ukudida ezinye izinsiz ezilayisha amafayel." "Bona konke ukulanda kwisitoreji se-USB" "Bona konke ukulanda ekhadini le-SD" - "Ivumela insiza ukuthi ibone konke okulayishiwe ekhadini le-SD ngale kokubona ukuthi iyiphi insiza ekulayishile." + "Ivumela uhlelo lokusebenza ukuthi ibone konke okulandiwe ekhadini le-SD ngale kokubona ukuthi iluphi uhlelo lokusebenza elulandile." "Igcina isikhala ekulondolozeni kwesikhashana kokulanda" "Ivumela uhlelo lokusebenza ukulanda amafayela okulondoloza kwesikhashana angakwazi ukususwa ngokuzenzakalelayo lapho imeneja yokulanda idinga esikhala esengeziwe." "landa amafayela ngaphandle kwesaziso" "Ivumela uhlelo lokusebenza ukulanda amafayela ngomeneja wokulanda ngaphandle kokuba isaziso siboniswe umsebenzisi." "Finyelela kuko konke ukulanda kwesistimu" - "vumela insiza ukuthi ibone iphinde iguqule konke okulayishiwe okuqalwe insiza ekwisistimu." + "Vumela uhlelo lokusebenza ukuthi libone liphinde liguqule konke okulandiwe okuqalwe uhlelo lwesistimu." "<Akunasihloko>" "Ukulayisha ungenisa kuqedile" "Ukulayisha akuphumelelanga" @@ -53,6 +53,6 @@ "1 ifayela elilindiwe" "%d amafayela alindile" - "%s esisele" + "%s asele" "Ayikwazi ukuvula ifayela" diff --git a/ui/res/values-sw/strings.xml b/ui/res/values-sw/strings.xml index 2132378b..1ec18116 100644 --- a/ui/res/values-sw/strings.xml +++ b/ui/res/values-sw/strings.xml @@ -16,7 +16,7 @@ - "Vipakuzi" + "Vipakuliwa" "Vipakuzi - Vimepangwa kwa tarehe" "Vipakuzi - Vimepangwa kwa ukubwa" "Hakuna vipakuzi" diff --git a/ui/res/values-zu/strings.xml b/ui/res/values-zu/strings.xml index 893529c0..510bcc6a 100644 --- a/ui/res/values-zu/strings.xml +++ b/ui/res/values-zu/strings.xml @@ -16,9 +16,9 @@ - "Okulayishiwe" - "Okulayishiwe - Kuhlungwe ngedethi" - "Okulayishiwe - Kuhlungwe ngosayizi" + "Okulandiwe" + "Okulandiwe - Kuhlungwe ngedethi" + "Okulandiwe - Kuhlungwe ngosayizi" "Akukho okulandiwe." "<Akwaziwa>" "Hlunga ngosayizi" -- cgit v1.2.3 From b1bf9a2a0cd929130ee75a29b5f7a9f01901a0d7 Mon Sep 17 00:00:00 2001 From: Mattias Falk Date: Thu, 3 Jan 2013 12:49:09 +0100 Subject: Avoid NullPointerException A crash will occur when a user share more than one file and the mime type of any of the files to share is null. Avoid crash by not adding the mime type to the mime type list if the value is null. Change-Id: Ia06f3389da6ce34e11ffcf349a10fdbe64cfc9bd --- ui/src/com/android/providers/downloads/ui/DownloadList.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index 29ea60eb..db86ab7e 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -765,7 +765,9 @@ public class DownloadList extends Activity { // are all prefixes of the given mimetypes the same? ArrayList mimeTypePrefixes = new ArrayList(); for (String s : mimeTypes) { - mimeTypePrefixes.add(s.substring(0, s.indexOf('/'))); + if (s != null) { + mimeTypePrefixes.add(s.substring(0, s.indexOf('/'))); + } } str = findCommonString(mimeTypePrefixes); if (str != null) { -- cgit v1.2.3 From d71fe1d63171f378711b579f4c0a258df6ea74c3 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Wed, 8 May 2013 12:26:49 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Ic1a45fc3383cfe390ef4204432b9a77eccd1fa73 Auto-generated-cl: translation import --- res/values-zu/strings.xml | 4 ++-- ui/res/values-zu/strings.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 13ec7ecc..7fb75822 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -18,9 +18,9 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Umphathi wokulayisha" "Finyelela kumphathi wokulayisha" - "Ivuela insiza ukuthi ifinyelele izintweni ezijulile zomphathi wokulayisha. Izinsiza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulayisha ziphinde zifinyelele emininingwaneni eyimfihlo." + "Ivuela insiza ukuthi ifinyelele izintweni ezijulile zomphathi wokulayisha. Izinsiza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo." "Izici zomphathi wokulayisha othuthukisiwe." - "Ivuela insiz ukuthi ifinyelele izinto ezijulile zomphathi wokulayisha. Izinsiza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulayisha ziphinde zifinyelele emininingwaneni eyimfihlo." + "Ivuela insiz ukuthi ifinyelele izinto ezijulile zomphathi wokulayisha. Izinsiza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo." "Thumela izaziso zokulayisha" "Ivumela insiza ukuthi ithumele izaziso yelana nokulayishwa okuqediwe. Izinsiza ezinobungozi zingakusebenzisa lokhu ukudida ezinye izinsiz ezilayisha amafayel." "Bona konke ukulanda kwisitoreji se-USB" diff --git a/ui/res/values-zu/strings.xml b/ui/res/values-zu/strings.xml index 510bcc6a..52347ae9 100644 --- a/ui/res/values-zu/strings.xml +++ b/ui/res/values-zu/strings.xml @@ -27,7 +27,7 @@ "Kuyaqhubeka" "Qedile" "Akuphumelelanga" - "Ayikwazanga ukulayisha." + "Ayikwazanga ukulanda." "Ufuna ukuzama futhi ukulanda ifayela emva kwesikhathi noma ukuyisusa emugqeni?" "Ifayela elimugqeni" "Leli fayela lifakwe emugqeni ekulandweni kokulandelayo ngakho-ke alitholakali manje." -- cgit v1.2.3 From ccdd40c7230a1e82394e73d8f4c265f58095530d Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 3 Apr 2013 10:13:32 -0700 Subject: Follow MockWebServer API changes. (cherry picked from commit 323f5ae0cafdc72f61defefaa5ba938f1b4d0dda) Change-Id: I11627a5efebddf7b832bb63e6a7588accbc04fe8 --- .../providers/downloads/AbstractDownloadProviderFunctionalTest.java | 5 ----- .../src/com/android/providers/downloads/PublicApiFunctionalTest.java | 3 +-- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java b/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java index e59aff08..3b937389 100644 --- a/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java +++ b/tests/src/com/android/providers/downloads/AbstractDownloadProviderFunctionalTest.java @@ -34,7 +34,6 @@ import android.test.mock.MockContentResolver; import android.util.Log; import com.google.mockwebserver.MockResponse; -import com.google.mockwebserver.MockStreamResponse; import com.google.mockwebserver.MockWebServer; import com.google.mockwebserver.RecordedRequest; import com.google.mockwebserver.SocketPolicy; @@ -221,10 +220,6 @@ public abstract class AbstractDownloadProviderFunctionalTest extends mServer.enqueue(resp); } - void enqueueResponse(MockStreamResponse resp) { - mServer.enqueue(resp); - } - MockResponse buildResponse(int status, String body) { return new MockResponse().setResponseCode(status).setBody(body) .setHeader("Content-type", "text/plain") diff --git a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java index b6fd611e..bde95815 100644 --- a/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java +++ b/tests/src/com/android/providers/downloads/PublicApiFunctionalTest.java @@ -50,7 +50,6 @@ import android.test.suitebuilder.annotation.Suppress; import android.text.format.DateUtils; import com.google.mockwebserver.MockResponse; -import com.google.mockwebserver.MockStreamResponse; import com.google.mockwebserver.RecordedRequest; import com.google.mockwebserver.SocketPolicy; @@ -141,7 +140,7 @@ public class PublicApiFunctionalTest extends AbstractPublicApiTest { final long length = 3 * GB_IN_BYTES; final InputStream body = new FakeInputStream(length); - enqueueResponse(new MockStreamResponse().setResponseCode(HTTP_OK).setBody(body, length) + enqueueResponse(new MockResponse().setResponseCode(HTTP_OK).setBody(body, length) .setHeader("Content-type", "text/plain") .setSocketPolicy(SocketPolicy.DISCONNECT_AT_END)); -- cgit v1.2.3 From 7bef37e8158502889ad400319a8c458adaa14d2b Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 10 May 2013 16:08:40 -0700 Subject: Increment operation counts to track downloads. Bug: 8850035 Change-Id: If506ea21f0c823f9da4b7ae14d611fdbfbac8042 --- src/com/android/providers/downloads/DownloadThread.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index 6a0eb47e..28bbf498 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -20,6 +20,7 @@ import static android.provider.Downloads.Impl.STATUS_BAD_REQUEST; import static android.provider.Downloads.Impl.STATUS_CANNOT_RESUME; import static android.provider.Downloads.Impl.STATUS_FILE_ERROR; import static android.provider.Downloads.Impl.STATUS_HTTP_DATA_ERROR; +import static android.provider.Downloads.Impl.STATUS_SUCCESS; import static android.provider.Downloads.Impl.STATUS_TOO_MANY_REDIRECTS; import static android.provider.Downloads.Impl.STATUS_WAITING_FOR_NETWORK; import static android.provider.Downloads.Impl.STATUS_WAITING_TO_RETRY; @@ -54,6 +55,8 @@ import android.util.Pair; import com.android.providers.downloads.DownloadInfo.NetworkState; +import libcore.io.IoUtils; + import java.io.File; import java.io.FileDescriptor; import java.io.FileOutputStream; @@ -66,8 +69,6 @@ import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; -import libcore.io.IoUtils; - /** * Task which executes a given {@link DownloadInfo}: making network requests, * persisting data to disk, and updating {@link DownloadProvider}. @@ -263,6 +264,10 @@ public class DownloadThread implements Runnable { finalStatus = Downloads.Impl.STATUS_UNKNOWN_ERROR; // falls through to the code that reports an error } finally { + if (finalStatus == STATUS_SUCCESS) { + TrafficStats.incrementOperationCount(1); + } + TrafficStats.clearThreadStatsTag(); TrafficStats.clearThreadStatsUid(); -- cgit v1.2.3 From 740ec106ea8a28906cdd3da0d680953698515e28 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 13 May 2013 10:52:04 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I606fe32db0ae76e2f1242913caacf326a3e30380 Auto-generated-cl: translation import --- res/values-uk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 94b4a71a..ae9b698d 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -35,12 +35,12 @@ "<Без назви>" "Завантаження закінчено." "Завантаження не виконано." - "Для завант.потрібен WiFi" + "Для завант.потрібен Wi-Fi" "Призупинено у фонов.реж." "Завантаження завелике для мережі оператора" "Для цього завантаження розміром %s потрібне з’єднання з Wi-Fi. "\n\n"Торкніться опції %s , щоб виконати це завантаження під час наступного з’єднання з мережею Wi-Fi." "Поставити в чергу, щоб завантажити пізніше?" - "Зараз це завантаження %s може зменшити заряд акумулятора і/чи спричинити надмірне мобільне передавання даних, за що оператор може стягувати плату залежно від тарифного плану."\n\n" Виберіть %s, щоб завантажити, коли з’явиться з’єднання WiFi." + "Зараз це завантаження %s може зменшити заряд акумулятора і/чи спричинити надмірне мобільне передавання даних, за що оператор може стягувати плату залежно від тарифного плану."\n\n" Виберіть %s, щоб завантажити, коли з’явиться з’єднання Wi-Fi." "У чергу" "Скасувати" "Почати зараз" -- cgit v1.2.3 From 9984ae7ae8937a7351793cfbe80e0975295c8d65 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 17 May 2013 13:31:16 -0700 Subject: Import translations. DO NOT MERGE Change-Id: If161ee627f140b79b37cf3893f0ef03f7aa2298b Auto-generated-cl: translation import --- res/values-ar/strings.xml | 2 +- res/values-hr/strings.xml | 2 +- res/values-pt-rPT/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 9b29f6b7..73d4c05b 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -40,7 +40,7 @@ "حجم التنزيل كبير جدًا بالنسبة إلى مشغّل الشبكة" "يجب استخدام Wi-Fi لإكمال هذا التنزيل البالغ حجمه %s . "\n\n"المس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi." "هل تريد وضعه في قائمة الانتظار للتنزيل لاحقًا؟" - "قد يؤدي بدء هذا التنزيل البالغ حجمه %s الآن إلى إنقاص عمر البطارية و/أو ينتج عنه استخدام زائد لاتصال بيانات الجوال، وهو ما يمكنه أن يؤدي إلى تحصيل مشغّل شبكة الجوال بعض الرسوم بناء على خطة البيانات الخاصة بك."\n\n" المس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة WiFi." + "قد يؤدي بدء هذا التنزيل البالغ حجمه %s الآن إلى إنقاص عمر البطارية و/أو ينتج عنه استخدام زائد لاتصال بيانات الجوال، وهو ما يمكنه أن يؤدي إلى تحصيل مشغّل شبكة الجوال بعض الرسوم بناء على خطة البيانات الخاصة بك."\n\n" المس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi." "قائمة انتظار" "إلغاء" "البدء الآن" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index d436c1a3..9348d874 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -40,7 +40,7 @@ "Preuzimanje je preveliko za mrežu operatora" "Morate upotrijebiti Wi-Fi da biste dovršili ovo preuzimanje veličine %s . "\n\n"Dodirnite tekst %s da biste pokrenuli preuzimanje sljedeći put kada se povežete s Wi-Fi mrežom." "Staviti na čekanje za kasnije preuzimanje?" - "Pokretanje ovog preuzimanja od %s može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove."\n\n" Dodirnite %s da biste preuzeli pri sljedećem spajanju s WiFi mrežom." + "Pokretanje ovog preuzimanja od %s može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove."\n\n" Dodirnite %s da biste preuzeli pri sljedećem spajanju s Wi-Fi mrežom." "Red čekanja" "Odustani" "Započni sad" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 9f9869dc..c77c6c77 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -35,7 +35,7 @@ "<Sem nome>" "Transferência concluída." "Falha na transferência." - "Tam. transf. exige wifi" + "Tam. transf. exige Wi-Fi" "Interrompida em 2º plano" "Transf. demasiado grande para a rede do operador" "Deve utilizar uma rede Wi-Fi para concluir esta transferência de %s . "\n\n"Toque em %s para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi." -- cgit v1.2.3 From 029aef418bbef6cfad95b85ed654f3800f71dc8b Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Wed, 29 May 2013 20:48:43 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I6a79e7b754cde9762a32f7b967c4322f0e6d9145 Auto-generated-cl: translation import --- res/values-zh-rCN/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 8345823d..5dc821e9 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -35,12 +35,12 @@ "<未命名>" "下载已完成。" "下载失败。" - "文件过大,需要通过 Wi-Fi 下载。" + "文件过大,需要通过 WLAN 下载。" "已在后台暂停。" "文件太大,不适于通过运营商网络下载" - "您必须使用 Wi-Fi 完成此内容 (%s ) 的下载。"\n\n"触摸“%s ”可在下次连接到 Wi-Fi 网络时开始下载此内容。" + "您必须使用 WLAN 完成此内容 (%s ) 的下载。"\n\n"触摸“%s ”可在下次连接到 WLAN 网络时开始下载此内容。" "稍后再加入下载队列吗?" - "立即开始下载此内容 (%s ) 可能会缩短电池的使用时间并/或导致过量使用移动数据连接流量(这可能导致移动运营商向您收费,具体取决于您的流量套餐)。"\n\n"触摸“%s”可在下次连接到 Wi-Fi 网络时开始下载此内容。" + "立即开始下载此内容 (%s ) 可能会缩短电池的使用时间并/或导致过量使用移动数据连接流量(这可能导致移动运营商向您收费,具体取决于您的流量套餐)。"\n\n"触摸“%s”可在下次连接到 WLAN 网络时开始下载此内容。" "排队" "取消" "立即开始" -- cgit v1.2.3 From 724817b1884584aaba4c99a6a1d4cf8cb8d2f7a3 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 6 Jun 2013 15:07:06 -0700 Subject: Count download WakeLocks against requesting app. This matches how network usage is already counted against the app making the request. Change-Id: I6a862e096f2f99441925a101268235615000355a --- src/com/android/providers/downloads/DownloadThread.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index 28bbf498..def4d7fe 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -48,6 +48,7 @@ import android.os.FileUtils; import android.os.PowerManager; import android.os.Process; import android.os.SystemClock; +import android.os.WorkSource; import android.provider.Downloads; import android.text.TextUtils; import android.util.Log; @@ -189,6 +190,7 @@ public class DownloadThread implements Runnable { try { wakeLock = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, Constants.TAG); + wakeLock.setWorkSource(new WorkSource(mInfo.mUid)); wakeLock.acquire(); // while performing download, register for rules updates -- cgit v1.2.3 From 7f2e8e35d243b819cfe78352acbb194744d3535f Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 17 Jun 2013 10:37:56 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Ia73441b5baf7d26c57c2dba950f5fa48686d7969 Auto-generated-cl: translation import --- res/values-sw/strings.xml | 6 +++--- ui/res/values-sw/strings.xml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index d754ecb9..7af52aae 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -23,14 +23,14 @@ "Inaruhusu programu kufikia vitendaji mahiri vya kidhibiti vipakuzi. Programu hasidi zinaweza kutumia hii ili kutatiza vipakuzi na kufikia maelezo ya kibinafsi." "Tuma arifa za vipakuliwa." "Inaruhusu programu kutuma notisi kuhusu vipakuzi vilivyokamilika. Programu hasidi zinaweza kutumia hii kuchanganya programu zingine ambazo hupakua faili." - "Angalia vipakuzi vyote kwa hifadhi ya USB" + "Angalia vipakuliwa vyote vilivyowekwa kwenye hifadhi ya USB" "Tazama vipakuliwa vyote vilivyoenda kwenye kadi ya SD" "Inaruhusu programu kuona vipakuzi vyote kwenye kadi ya SD, pasi kuzingatia ni programu gani iliyozipakuwa." "Geuza nafasi katika kache ya kupakua" "Inaruhusu programu kupakua faili kwa kache ya vipakuzi ambayo haiwezi kufutwa kiotomatiki wakati kidhibiti upakuaji kinahitaji nafasi zaidi." "Pakua faili bila kutoa arifa" - "Inaruhusu programu kupakua faili kupitia kidhibiti vipakuzi bila notisi yoyote kuonyeshwa kwa mtumiaji." - "Fikia vipakuzi vyote vya mfumo" + "Huruhusu programu kupakua faili kupitia kidhibiti vipakuliwa bila mtumiaji kuonyeshwa arifa yoyote." + "Fikia vipakuliwa vyote vya mfumo" "Inaruhusu programu kuona na kurekebisha vipakuzi vyote vilivyoanzishwa na programu yoyote kwenye mfumo." "<Haina Kichwa>" "Upakuaji umekamilika" diff --git a/ui/res/values-sw/strings.xml b/ui/res/values-sw/strings.xml index 1ec18116..3e09e8fe 100644 --- a/ui/res/values-sw/strings.xml +++ b/ui/res/values-sw/strings.xml @@ -17,9 +17,9 @@ "Vipakuliwa" - "Vipakuzi - Vimepangwa kwa tarehe" - "Vipakuzi - Vimepangwa kwa ukubwa" - "Hakuna vipakuzi" + "Vipakuliwa - Vimepangwa kulingana na tarehe" + "Vipakuliwa - Vimepangwa kulingana na ukubwa" + "Hakuna vipakuliwa." "<Haijulikani>" "Panga kwa ukubwa" "Panga kwa tarehe" -- cgit v1.2.3 From 38a69a6c099207f2a16dfa91209ea67302632635 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Fri, 10 May 2013 14:12:17 -0700 Subject: DownloadProvider needs to be a privileged APK Bug 8765951 Change-Id: Id2ec25b90e5d08595af282969395450ca5496742 --- Android.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/Android.mk b/Android.mk index 2218fe2b..a2f1e961 100644 --- a/Android.mk +++ b/Android.mk @@ -8,6 +8,7 @@ LOCAL_SRC_FILES := $(call all-java-files-under, src) LOCAL_PACKAGE_NAME := DownloadProvider LOCAL_CERTIFICATE := media +LOCAL_PRIVILEGED_MODULE := true LOCAL_STATIC_JAVA_LIBRARIES := guava include $(BUILD_PACKAGE) -- cgit v1.2.3 From ac45035ea083b87a71285b584c439520f28406b0 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Thu, 1 Aug 2013 15:21:38 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I01cd1eefd3eadc99487b5b3bc436671db8f4c3ba Auto-generated-cl: translation import --- res/values-af/strings.xml | 4 ++-- res/values-am/strings.xml | 4 ++-- res/values-ar/strings.xml | 4 ++-- res/values-be/strings.xml | 4 ++-- res/values-bg/strings.xml | 4 ++-- res/values-ca/strings.xml | 4 ++-- res/values-cs/strings.xml | 4 ++-- res/values-da/strings.xml | 4 ++-- res/values-de/strings.xml | 4 ++-- res/values-el/strings.xml | 4 ++-- res/values-en-rGB/strings.xml | 4 ++-- res/values-es-rUS/strings.xml | 4 ++-- res/values-es/strings.xml | 4 ++-- res/values-et/strings.xml | 4 ++-- res/values-fa/strings.xml | 4 ++-- res/values-fi/strings.xml | 4 ++-- res/values-fr/strings.xml | 4 ++-- res/values-hi/strings.xml | 4 ++-- res/values-hr/strings.xml | 4 ++-- res/values-hu/strings.xml | 4 ++-- res/values-in/strings.xml | 4 ++-- res/values-it/strings.xml | 4 ++-- res/values-iw/strings.xml | 4 ++-- res/values-ja/strings.xml | 4 ++-- res/values-ko/strings.xml | 4 ++-- res/values-lt/strings.xml | 4 ++-- res/values-lv/strings.xml | 4 ++-- res/values-ms/strings.xml | 4 ++-- res/values-nb/strings.xml | 4 ++-- res/values-nl/strings.xml | 4 ++-- res/values-pl/strings.xml | 4 ++-- res/values-pt-rPT/strings.xml | 4 ++-- res/values-pt/strings.xml | 4 ++-- res/values-ro/strings.xml | 4 ++-- res/values-ru/strings.xml | 4 ++-- res/values-sk/strings.xml | 4 ++-- res/values-sl/strings.xml | 4 ++-- res/values-sr/strings.xml | 4 ++-- res/values-sv/strings.xml | 4 ++-- res/values-sw/strings.xml | 4 ++-- res/values-th/strings.xml | 4 ++-- res/values-tl/strings.xml | 4 ++-- res/values-tr/strings.xml | 4 ++-- res/values-uk/strings.xml | 4 ++-- res/values-vi/strings.xml | 4 ++-- res/values-zh-rCN/strings.xml | 4 ++-- res/values-zh-rTW/strings.xml | 4 ++-- res/values-zu/strings.xml | 4 ++-- 48 files changed, 96 insertions(+), 96 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 5d6d6ead..baf0e464 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -38,9 +38,9 @@ "Aflaaiselgrootte vereis Wi-Fi." "Laat wag op agtergrond." "Aflaaisel te groot vir bedryfsnetwerk" - "Jy moet Wi-Fi gebruik om hierdie %s -aflaaisel te voltooi. "\n\n"Raak %s om hierdie aflaai te begin die volgende keer as jy gekoppel is aan \'n Wi-Fi-netwerk." + "Jy moet Wi-Fi gebruik om hierdie %s -aflaaisel te voltooi. \n\nRaak %s om hierdie aflaai te begin die volgende keer as jy gekoppel is aan \'n Wi-Fi-netwerk." "Plaas in waglys om later af te laai?" - "As jy nou hierdie %s -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 %s om hierdie aflaaisel te begin die volgende keer wat jy gekoppel is aan \'n Wi-Fi-netwerk." + "As jy nou hierdie %s -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 %s om hierdie aflaaisel te begin die volgende keer wat jy gekoppel is aan \'n Wi-Fi-netwerk." "Waglys" "Kanselleer" "Begin nou" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index ce4811ad..049ef773 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -38,9 +38,9 @@ "የአውርድ መጠን Wi-Fi ይጠይቃል" "በዳራ ውስጥ ለአፍታ ቆሟል" "ለትእምርተ ከዋኝ አውታረ መረብ በጣም ብዙ አውርድ" - "ይህን %s አውርድ ለማጠናቀቅ Wi-Fi መጠቀም አለብህ:: ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር "\n\n" ንካ%s ፡፡" + "ይህን %s አውርድ ለማጠናቀቅ Wi-Fi መጠቀም አለብህ:: ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ%s ፡፡" "ለኋላ አውርድ ወረፋ?" - "ይህን %s አውርድ አሁን መጀመር የባትሪህን ዕድሜ ሊያሳጥረው ይችል ይሆናል እና/ወይም የአንተን ተንቀሳቃሽ ውሂብ ግንኙነት ከልክ ያለፈ አጠቃቀም ሊያስከስት ይችል ይሆናል፣ ይህም የአንተ ተንቀሳቃሽ ከዋኝ በአንተ ውሂብ ክፍያ ዕቅድ ስምምነት መሰረት ተጨማሪ ክፍያ እንድትከፍል ሊጠይቅህ ይዳርገው ይሆናል፡፡ ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር "\n\n" ንካ%s፡፡" + "ይህን %s አውርድ አሁን መጀመር የባትሪህን ዕድሜ ሊያሳጥረው ይችል ይሆናል እና/ወይም የአንተን ተንቀሳቃሽ ውሂብ ግንኙነት ከልክ ያለፈ አጠቃቀም ሊያስከስት ይችል ይሆናል፣ ይህም የአንተ ተንቀሳቃሽ ከዋኝ በአንተ ውሂብ ክፍያ ዕቅድ ስምምነት መሰረት ተጨማሪ ክፍያ እንድትከፍል ሊጠይቅህ ይዳርገው ይሆናል፡፡ ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ%s፡፡" "ወረፋ" "ይቅር" "አሁን ጀምር" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 73d4c05b..119671df 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -38,9 +38,9 @@ "يتطلب حجم التنزيل شبكة Wi-Fi." "متوقف مؤقتًا في الخلفية." "حجم التنزيل كبير جدًا بالنسبة إلى مشغّل الشبكة" - "يجب استخدام Wi-Fi لإكمال هذا التنزيل البالغ حجمه %s . "\n\n"المس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi." + "يجب استخدام Wi-Fi لإكمال هذا التنزيل البالغ حجمه %s . \n\nالمس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi." "هل تريد وضعه في قائمة الانتظار للتنزيل لاحقًا؟" - "قد يؤدي بدء هذا التنزيل البالغ حجمه %s الآن إلى إنقاص عمر البطارية و/أو ينتج عنه استخدام زائد لاتصال بيانات الجوال، وهو ما يمكنه أن يؤدي إلى تحصيل مشغّل شبكة الجوال بعض الرسوم بناء على خطة البيانات الخاصة بك."\n\n" المس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi." + "قد يؤدي بدء هذا التنزيل البالغ حجمه %s الآن إلى إنقاص عمر البطارية و/أو ينتج عنه استخدام زائد لاتصال بيانات الجوال، وهو ما يمكنه أن يؤدي إلى تحصيل مشغّل شبكة الجوال بعض الرسوم بناء على خطة البيانات الخاصة بك.\n\n المس %s لبدء هذا التنزيل في المرة القادمة التي تتصل فيها بشبكة Wi-Fi." "قائمة انتظار" "إلغاء" "البدء الآن" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index ece2e91a..f4b59a86 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -38,9 +38,9 @@ "Для спампавання патрабуецца сетка Wi-Fi" "Прыпынена ў фон. рэжыме" "Спампоўка занадта вялікая для сеткі аператара" - "Каб завяршыць спампаванне файла памерам %s , патрабуецца падлучэнне да сеткi Wi-Fi. "\n\n"Дакранiцеся да надпiсу %s , каб пачаць спампаванне, калi будзе даступна сетка Wi-Fi." + "Каб завяршыць спампаванне файла памерам %s , патрабуецца падлучэнне да сеткi Wi-Fi. \n\nДакранiцеся да надпiсу %s , каб пачаць спампаванне, калi будзе даступна сетка Wi-Fi." "Стаць у чаргу, каб спампаваць пазней?" - "Спампаванне файла памерам %s можа скараціць тэрмін службы акумулятара або прывесці да празмернага выкарыстання мабільнага падлучэння дадзеных, за што вашым мабiльным аператарам можа спаганяцца дадатковая плата."\n\n"Дакранiцеся да надпiсу %s, каб пачаць спампаванне, калi з\'явiцца падлучэнне да сеткi Wi-Fi." + "Спампаванне файла памерам %s можа скараціць тэрмін службы акумулятара або прывесці да празмернага выкарыстання мабільнага падлучэння дадзеных, за што вашым мабiльным аператарам можа спаганяцца дадатковая плата.\n\nДакранiцеся да надпiсу %s, каб пачаць спампаванне, калi з\'явiцца падлучэнне да сеткi Wi-Fi." "Чарга" "Адмена" "Пачаць прама цяпер" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 179c29e7..79df0659 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -38,9 +38,9 @@ "Изисква се Wi-Fi." "На пауза на заден план." "Изтеглянето е твърде голямо за операторската мрежа" - "Трябва да използвате Wi-Fi, за да завършите това изтегляне от %s . "\n\n"Докоснете „%s “, за да започнете изтеглянето при следващото свързване с Wi-Fi мрежа." + "Трябва да използвате Wi-Fi, за да завършите това изтегляне от %s . \n\nДокоснете „%s “, за да започнете изтеглянето при следващото свързване с Wi-Fi мрежа." "Да се постави ли на опашка за изтегляне по-късно?" - "Изтеглянето на %s може да изхаби батерията и/или да причини прекомерно използване на мобилни данни и таксуване от оператора според плана ви."\n\n" Докоснете „%s“ за изтегляне при следващо свързване с Wi-Fi." + "Изтеглянето на %s може да изхаби батерията и/или да причини прекомерно използване на мобилни данни и таксуване от оператора според плана ви.\n\n Докоснете „%s“ за изтегляне при следващо свързване с Wi-Fi." "Опашка" "Отказ" "Стартиране сега" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index ae9dabf1..f1f3618e 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -38,9 +38,9 @@ "Mida baixad. req. Wi-Fi." "Posada en pausa de fons." "Baixada massa gran per a la xarxa de l\'operador" - "Has de fer servir Wi-Fi per completar aquesta baixada de %s . "\n\n"Toca %s per iniciar aquesta baixada la propera vegada que estiguis connectat a una xarxa Wi-Fi." + "Has de fer servir Wi-Fi per completar aquesta baixada de %s . \n\nToca %s per iniciar aquesta baixada la propera vegada que estiguis connectat a una xarxa Wi-Fi." "Vols posar-lo en cua per baixar-lo més tard?" - "Si inic. la baixada (%s ), 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 %s per inic. baix. quan hi hagi Wi-Fi." + "Si inic. la baixada (%s ), 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 %s per inic. baix. quan hi hagi Wi-Fi." "Cua" "Cancel·la" "Inicia ara" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 7fdb7b7a..a800fca2 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -38,9 +38,9 @@ "Vzhledem k velikosti stahovaného souboru je vyžadováno připojení Wi-Fi." "Pozastaveno na pozadí." "Stahovaný soubor je pro síť operátora příliš velký" - "K dokončení tohoto stahování o velikosti %s je třeba připojení Wi-Fi. "\n\n"Chcete-li stahování spustit při příštím připojení k síti Wi-Fi, dotkněte se možnosti %s ." + "K dokončení tohoto stahování o velikosti %s 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 %s ." "Zařadit do fronty pro pozdější stažení?" - "Stahování (%s ) 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 %s." + "Stahování (%s ) 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 %s." "Fronta" "Zrušit" "Spustit" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index a718871a..78028924 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -38,9 +38,9 @@ "Downloaden kræver Wi-Fi." "Standset i baggrunden." "Downloadfilen er for stor til mobilnetværk" - "Du skal bruge Wi-Fi for at fuldføre denne download på %s . "\n\n"Tryk på %s for at starte denne download, næste gang du får forbindelse til et Wi-Fi-netværk." + "Du skal bruge Wi-Fi for at fuldføre denne download på %s . \n\nTryk på %s for at starte denne download, næste gang du får forbindelse til et Wi-Fi-netværk." "I kø til senere download?" - "Hvis downloaden på %s 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å %s for at starte downloaden ved næste forbindelse til Wi-Fi." + "Hvis downloaden på %s 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å %s for at starte downloaden ved næste forbindelse til Wi-Fi." "Kø" "Annuller" "Begynd nu" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index ac39f692..43451703 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -38,9 +38,9 @@ "Downloadgröße erfordert WLAN" "Im Hintergrund pausiert" "Download zu groß für Netzwerk dieses Betreibers." - "Sie müssen eine WLAN-Verbindung nutzen, um den Download von %s abzuschließen."\n\n"Tippen Sie auf %s und der Download startet bei der nächsten WLAN-Einwahl." + "Sie müssen eine WLAN-Verbindung nutzen, um den Download von %s abzuschließen.\n\nTippen Sie auf %s und der Download startet bei der nächsten WLAN-Einwahl." "In Warteschlange für späteren Download?" - "Der Download von %s kann die Akkulaufzeit verkürzen/die mobile Datenverbindung überlasten. Je nach Vertrag können zusätzliche Kosten entstehen."\n\n"Tippen Sie auf %s und der Download startet bei der nächsten WLAN-Einwahl." + "Der Download von %s kann die Akkulaufzeit verkürzen/die mobile Datenverbindung überlasten. Je nach Vertrag können zusätzliche Kosten entstehen.\n\nTippen Sie auf %s und der Download startet bei der nächsten WLAN-Einwahl." "Warteschlange" "Abbrechen" "Jetzt starten" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 3fd01d6a..1f749e75 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -38,9 +38,9 @@ "Η λήψη απαιτεί Wi-Fi" "Σε παύση στο παρασκήνιο" "Πολύ μεγάλο αρχείο λήψης για δίκτυο παρόχου." - "Θα πρέπει να χρησιμοποιήσετε Wi-Fi για την ολοκλήρωση αυτής της λήψης μεγέθους %s . "\n\n"Αγγίξτε το στοιχείο %s για να ξεκινήσετε αυτήν τη λήψη την επόμενη φορά που θα συνδεθείτε σε δίκτυο Wi-Fi." + "Θα πρέπει να χρησιμοποιήσετε Wi-Fi για την ολοκλήρωση αυτής της λήψης μεγέθους %s . \n\nΑγγίξτε το στοιχείο %s για να ξεκινήσετε αυτήν τη λήψη την επόμενη φορά που θα συνδεθείτε σε δίκτυο Wi-Fi." "Προσθήκη στην ουρά για να κάνετε λήψη αργότερα;" - "Αυτή η λήψη μεγ. %s ίσως μειώσει τη διάρκ.ζωής της μπατ. ή/και να κάνει υπερβ.χρήση της σύνδ. δεδ. κιν. Ίσως υπάρξουν χρεώσ.από την εταιρ. βάσει του προγρ.δεδομ."\n\n" Αγγίξτε %s για λήψη όταν συνδ. μέσω Wi-Fi." + "Αυτή η λήψη μεγ. %s ίσως μειώσει τη διάρκ.ζωής της μπατ. ή/και να κάνει υπερβ.χρήση της σύνδ. δεδ. κιν. Ίσως υπάρξουν χρεώσ.από την εταιρ. βάσει του προγρ.δεδομ.\n\n Αγγίξτε %s για λήψη όταν συνδ. μέσω Wi-Fi." "Ουρά" "Ακύρωση" "Έναρξη τώρα" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 72a171a2..8cea9aca 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -38,9 +38,9 @@ "Download size requires Wi-Fi" "Paused in background" "Download too large for operator network" - "You must use Wi-Fi to complete this %s download. "\n\n"Touch %s to start this download the next time that you\'re connected to a Wi-Fi network." + "You must use Wi-Fi to complete this %s download. \n\nTouch %s to start this download the next time that you\'re connected to a Wi-Fi network." "Queue for download later?" - "Starting this %s 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 %s to start this download the next time that you\'re connected to a Wi-Fi network." + "Starting this %s 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 %s to start this download the next time that you\'re connected to a Wi-Fi network." "Queue" "Cancel" "Start now" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 68b6a562..0fbb309b 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -38,9 +38,9 @@ "Tamaño requiere Wi-Fi." "Aplic. de fondo en pausa" "La descarga es demasiado grande la red del operador" - "Debes usar Wi-Fi para completar esta descarga de %s . "\n\n"Toca %s para iniciar esta descarga la próxima vez que te conectes a una red Wi-Fi." + "Debes usar Wi-Fi para completar esta descarga de %s . \n\nToca %s para iniciar esta descarga la próxima vez que te conectes a una red Wi-Fi." "¿Agregar a la lista para descargar más tarde?" - "Esta descarga de %s 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 %s para iniciar la descarga cuando tengas acceso a Wi-Fi." + "Esta descarga de %s 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 %s para iniciar la descarga cuando tengas acceso a Wi-Fi." "Cola" "Cancelar" "Comenzar ahora" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 3bdbfe06..3735acc0 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -38,9 +38,9 @@ "La descarga requiere Wi-Fi" "Pausada en segundo plano" "Descarga demasiado grande para red de operador" - "Debes usar una conexión Wi-Fi para completar esta descarga de %s . "\n\n"Toca %s para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi." + "Debes usar una conexión Wi-Fi para completar esta descarga de %s . \n\nToca %s para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi." "¿Poner en cola para descargar más tarde?" - "Si descargas %s , puedes quedarte sin batería y tu operador te puede cobrar por un uso excesivo de datos."\n\n" Toca %s para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi." + "Si descargas %s , puedes quedarte sin batería y tu operador te puede cobrar por un uso excesivo de datos.\n\n Toca %s para iniciar la descarga la próxima vez que te conectes a una red Wi-Fi." "Poner en cola" "Cancelar" "Empezar ahora" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 08ce2627..a3503c2f 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -38,9 +38,9 @@ "Allalaad. on vaja WiFit." "Peatatud taustal." "Allalaadimine operaatori võrgu jaoks on liiga suur" - "%s suuruse allalaadimise jaoks tuleb kasutada WiFi-võrku."\n\n"Puudutage valikut %s , et alustada allalaadimisega järgmine kord, kui olete WiFi-võrguga ühenduses." + "%s suuruse allalaadimise jaoks tuleb kasutada WiFi-võrku.\n\nPuudutage valikut %s , et alustada allalaadimisega järgmine kord, kui olete WiFi-võrguga ühenduses." "Kas lisada järjekorda hilisemaks allalaadimiseks?" - "%s 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 %s, et laadida see alla siis, kui olete WiFi-võrgus." + "%s 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 %s, et laadida see alla siis, kui olete WiFi-võrgus." "Järjekord" "Tühista" "Alusta nüüd" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 2c911822..336d6f99 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -38,9 +38,9 @@ "برای این حجم از دانلود به Wi-Fi نیاز است." "در پس‌زمینه موقتاً متوقف شد." "دانلود برای شبکه اپراتور بسیار بزرگ است" - "برای تکمیل این دانلود %s باید از Wi-Fi استفاده کنید. در اتصال بعدی به شبکه Wi-Fi و برای شروع دانلود، "\n\n"لمس%s کنید." + "برای تکمیل این دانلود %s باید از Wi-Fi استفاده کنید. در اتصال بعدی به شبکه Wi-Fi و برای شروع دانلود، \n\nلمس%s کنید." "برای دانلود در فرصتی دیگر در صف گذاشته شود؟" - "شروع دانلود %s سبب کم شدن طول عمر باتری و/یا استفاده بیش از حد از اتصال داده تلفن همراه می‌شود که بسته به قرارداد ارائه داده شما ممکن است از طرف اپراتور تلفن هزینه‌هایی برای شما در نظر گرفته شود. "\n\n"%s را لمس کنید تا در اتصال بعدی به شبکه Wi-Fi، این دانلود شروع شود." + "شروع دانلود %s سبب کم شدن طول عمر باتری و/یا استفاده بیش از حد از اتصال داده تلفن همراه می‌شود که بسته به قرارداد ارائه داده شما ممکن است از طرف اپراتور تلفن هزینه‌هایی برای شما در نظر گرفته شود. \n\n%s را لمس کنید تا در اتصال بعدی به شبکه Wi-Fi، این دانلود شروع شود." "صف" "لغو" "اکنون شروع" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index d0d0aaa5..679d66d2 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -38,9 +38,9 @@ "Lataa wifi-yhteydellä" "Keskeytetty taustalla." "Lataus liian suuri operaattorin verkolle" - "Tämä %s :n lataus täytyy suorittaa wifi-yhteyden ollessa käytössä. "\n\n"Aloita lataus seuraavan kerran, kun yhdistät wifi-verkkoon, koskettamalla %s ." + "Tämä %s :n lataus täytyy suorittaa wifi-yhteyden ollessa käytössä. \n\nAloita lataus seuraavan kerran, kun yhdistät wifi-verkkoon, koskettamalla %s ." "Asetetaanko myöhemmin ladattavaksi?" - "Jos aloitat tämän %s :n latauksen nyt, akun virtaa voi kulua tav. enemmän ja/tai operaattori voi veloittaa ylim. mobiilitiedons."\n\n"Aloita lataus seuraavan kerran, kun yhdistät wifi-verkkoon, koskettamalla %s." + "Jos aloitat tämän %s :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 wifi-verkkoon, koskettamalla %s." "Jono" "Peruuta" "Aloita nyt" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index c0333e73..cedf5dee 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -38,9 +38,9 @@ "Taille du fichier requiert Wi-Fi." "Interrompu en arr.-plan." "Téléchargement trop volumineux pour l\'opérateur" - "Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de %s . "\n\n"Appuyez sur %s pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi." + "Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de %s . \n\nAppuyez sur %s pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi." "Ajouter à la file d\'attente des téléchargements ?" - "Ce téléchargement (%s ) 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\n"Appuyez sur %s pour le lancer lors de votre prochaine connexion au Wi-Fi." + "Ce téléchargement (%s ) 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 %s pour le lancer lors de votre prochaine connexion au Wi-Fi." "File d\'attente" "Annuler" "Commencer" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 3c701ebe..b440379b 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -38,9 +38,9 @@ "डाउनलोड आकार हेतु Wi-Fi आवश्‍यक." "पृष्ठभूमि में रोका गया." "ऑपरेटर नेटवर्क के लिए डाउनलोड बहुत बड़ा है" - "इस %s डाउनलोड को पूर्ण करने के लिए आपको Wi-Fi का उपयोग करना चाहिए."\n\n"अगली बार जब आप Wi-Fi नेटवर्क से कनेक्ट हों, तो इस डाउनलोड को शुरू करने के लिए %s को स्पर्श करें." + "इस %s डाउनलोड को पूर्ण करने के लिए आपको Wi-Fi का उपयोग करना चाहिए.\n\nअगली बार जब आप Wi-Fi नेटवर्क से कनेक्ट हों, तो इस डाउनलोड को शुरू करने के लिए %s को स्पर्श करें." "बाद में डाउनलोड करने के लिए कतार में रखें?" - "इस %s के डाउनलोड को शुरू करना बैटरी का जीवनकाल कम कर सकता है और/या मोबाइल डेटा कनेक्शन का अधिक उपयोग हो सकता है, जिससे आपका मोबाइल डेटा ऑपरेटर आपसे आपकी डेटा योजना के आधार पर शुल्क ले सकता है."\n\n" अगली बार जब आप Wi-Fi नेटवर्क से कनेक्ट हों, तो यह डाउनलोड शुरू करने के लिए %s को स्पर्श करें." + "इस %s के डाउनलोड को शुरू करना बैटरी का जीवनकाल कम कर सकता है और/या मोबाइल डेटा कनेक्शन का अधिक उपयोग हो सकता है, जिससे आपका मोबाइल डेटा ऑपरेटर आपसे आपकी डेटा योजना के आधार पर शुल्क ले सकता है.\n\n अगली बार जब आप Wi-Fi नेटवर्क से कनेक्ट हों, तो यह डाउनलोड शुरू करने के लिए %s को स्पर्श करें." "कतार" "रद्द करें" "अब प्रारंभ करें" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 9348d874..70f0cff9 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -38,9 +38,9 @@ "Veličina zahtijeva Wi-Fi" "Pauzirano u pozadini." "Preuzimanje je preveliko za mrežu operatora" - "Morate upotrijebiti Wi-Fi da biste dovršili ovo preuzimanje veličine %s . "\n\n"Dodirnite tekst %s da biste pokrenuli preuzimanje sljedeći put kada se povežete s Wi-Fi mrežom." + "Morate upotrijebiti Wi-Fi da biste dovršili ovo preuzimanje veličine %s . \n\nDodirnite tekst %s da biste pokrenuli preuzimanje sljedeći put kada se povežete s Wi-Fi mrežom." "Staviti na čekanje za kasnije preuzimanje?" - "Pokretanje ovog preuzimanja od %s može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove."\n\n" Dodirnite %s da biste preuzeli pri sljedećem spajanju s Wi-Fi mrežom." + "Pokretanje ovog preuzimanja od %s može skratiti vijek baterije i/ili uzrokovati pretjeranu upotrebu podatkovne veze i dodatne troškove.\n\n Dodirnite %s da biste preuzeli pri sljedećem spajanju s Wi-Fi mrežom." "Red čekanja" "Odustani" "Započni sad" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 3fcad47c..58965d34 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -38,9 +38,9 @@ "A letöltéshez Wi-Fi kell" "Szünetel a háttérben." "A letöltés túl nagy a szolgáltató hálózatához" - "Wi-Fi szükséges a letöltés (%s ) befejezéséhez. "\n\n"Érintse meg a(z) %s lehetőséget a letöltés elindításához, ha majd Wi-Fi hálózathoz csatlakozik." + "Wi-Fi szükséges a letöltés (%s ) befejezéséhez. \n\nÉrintse meg a(z) %s lehetőséget a letöltés elindításához, ha majd Wi-Fi hálózathoz csatlakozik." "Várólistára teszi későbbi letöltés céljából?" - "A fájl (%s ) 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) %s lehetőséget, ha Wi-Fihez csatlakozik." + "A fájl (%s ) 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) %s lehetőséget, ha Wi-Fihez csatlakozik." "Várólista" "Mégse" "Indítás most" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 8ef68cd7..a8474cef 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -38,9 +38,9 @@ "Ukuran unduhan memerlukan Wi-Fi." "Dijeda di latar belakang." "Unduhan terlalu besar untuk jaringan operator" - "Anda harus menggunakan Wi-Fi untuk menyelesaikan unduhan %s ini. "\n\n"Sentuh %s untuk memulai unduhan ini saat Anda tersambung lagi ke jaringan Wi-Fi." + "Anda harus menggunakan Wi-Fi untuk menyelesaikan unduhan %s ini. \n\nSentuh %s untuk memulai unduhan ini saat Anda tersambung lagi ke jaringan Wi-Fi." "Antrekan untuk diunduh nanti?" - "Memulai unduhan %s 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 %s untuk memulai unduhan ini saat Anda tersambung lagi ke jaringan Wi-Fi." + "Memulai unduhan %s 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 %s untuk memulai unduhan ini saat Anda tersambung lagi ke jaringan Wi-Fi." "Antrean" "Batal" "Mulai sekarang" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 05eef883..3f51d3c3 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -38,9 +38,9 @@ "Wi-Fi richiesto per download" "In pausa in background." "Download troppo grande per rete operatore" - "Devi utilizzare la rete Wi-Fi per completare questo download di %s . "\n\n"Tocca %s per avviare il download la prossima volta che sei connesso a una rete Wi-Fi." + "Devi utilizzare la rete Wi-Fi per completare questo download di %s . \n\nTocca %s per avviare il download la prossima volta che sei connesso a una rete Wi-Fi." "Mettere in coda per scaricare più tardi?" - "Questo download di %s 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 %s per avviarlo quando sarai connesso a una rete Wi-Fi." + "Questo download di %s 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 %s per avviarlo quando sarai connesso a una rete Wi-Fi." "Metti in coda" "Annulla" "Avvia adesso" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 1a05a6bf..69a10d02 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -38,9 +38,9 @@ "גודל ההורדה מחייב חיבור Wi-Fi" "מושהה ברקע." "ההורדה גדולה מדי לרשת המפעיל" - "עליך להשתמש ב-Wi-Fi כדי להשלים את ההורדה שגודלה %s . "\n" "\n" גע ב-%s כדי להפעיל את ההורדה בפעם הבאה שתתחבר לרשת Wi-Fi." + "עליך להשתמש ב-Wi-Fi כדי להשלים את ההורדה שגודלה %s . \n \n גע ב-%s כדי להפעיל את ההורדה בפעם הבאה שתתחבר לרשת Wi-Fi." "להוסיף לתור כדי להוריד מאוחר יותר?" - "הפעלת הורדה זו (%s ) עשויה לקצר את חיי הסוללה שלך ו/או לגרום לניצול מופרז של חיבור הנתונים הנייד שלך, אשר עשוי להיות כרוך בחיוב מצד ספק השירות הנייד שלך, בהתאם לתוכנית הנתונים הרלוונטית."\n\n"גע ב-%s כדי להתחיל בהורדה בפעם הבאה שתתחבר לרשת Wi-Fi." + "הפעלת הורדה זו (%s ) עשויה לקצר את חיי הסוללה שלך ו/או לגרום לניצול מופרז של חיבור הנתונים הנייד שלך, אשר עשוי להיות כרוך בחיוב מצד ספק השירות הנייד שלך, בהתאם לתוכנית הנתונים הרלוונטית.\n\nגע ב-%s כדי להתחיל בהורדה בפעם הבאה שתתחבר לרשת Wi-Fi." "תור" "ביטול" "התחל כעת" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 55101486..14c648fd 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -38,9 +38,9 @@ "Wi-Fi必須のサイズです。" "バックグラウンド一時停止" "ダウンロードするサイズが大きすぎます" - "この%s のダウンロードを完了するにはWi-Fiを使用する必要があります。"\n\n"[%s ]をタップすると、次回Wi-Fiネットワークに接続したときにこのダウンロードを開始します。" + "この%s のダウンロードを完了するにはWi-Fiを使用する必要があります。\n\n[%s ]をタップすると、次回Wi-Fiネットワークに接続したときにこのダウンロードを開始します。" "キューに登録して後でダウンロードしますか?" - "この%s のダウンロードを今すぐ行うと、電池消費量やデータ通信量が増え、通信プランによっては携帯通信会社の料金が発生します。"\n\n"[%s]をタップすると、次回Wi-Fiネットワーク接続時にダウンロードを行います。" + "この%s のダウンロードを今すぐ行うと、電池消費量やデータ通信量が増え、通信プランによっては携帯通信会社の料金が発生します。\n\n[%s]をタップすると、次回Wi-Fiネットワーク接続時にダウンロードを行います。" "キューに登録" "キャンセル" "今すぐ開始" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index df66b3eb..4716650c 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -38,9 +38,9 @@ "크기가 너무 커서 Wi-Fi로 다운로드해야 합니다." "백그라운드에서 일시중지되었습니다." "너무 커서 운영자 네트워크로 다운로드할 수 없습니다." - "%s 다운로드를 완료하려면 Wi-Fi를 사용해야 합니다."\n\n"다음에 Wi-Fi 네트워크에 연결했을 때 다운로드하려면 %s 을(를) 터치하세요." + "%s 다운로드를 완료하려면 Wi-Fi를 사용해야 합니다.\n\n다음에 Wi-Fi 네트워크에 연결했을 때 다운로드하려면 %s 을(를) 터치하세요." "나중에 다운로드하도록 대기 하시겠습니까?" - "지금 %s 크기의 파일을 다운로드하면 배터리 수명이 단축되거나 모바일 데이터 연결 사용량이 초과될 수 있습니다. 이로 인해 데이터 요금제에 따라 이동통신사에서 요금을 부과할 수 있습니다."\n\n"다음에 Wi-Fi 네트워크에 연결되었을 때 다운로드하려면 아래의 %s을(를) 터치하세요." + "지금 %s 크기의 파일을 다운로드하면 배터리 수명이 단축되거나 모바일 데이터 연결 사용량이 초과될 수 있습니다. 이로 인해 데이터 요금제에 따라 이동통신사에서 요금을 부과할 수 있습니다.\n\n다음에 Wi-Fi 네트워크에 연결되었을 때 다운로드하려면 아래의 %s을(를) 터치하세요." "대기열" "취소" "지금 시작" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 9c3318de..0f78fbaa 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -38,9 +38,9 @@ "Did. f., reikia „Wi-Fi“." "Pristabdyta fone." "Atsisiuntimas per didelis operatoriaus tinklui" - "Jei norite baigti šį %s atsisiuntimą, turite naudoti „Wi-Fi“. "\n\n"Palieskite %s , jei norite pradėti šį atsisiuntimą kitą kartą prisijungę prie „Wi-Fi“." + "Jei norite baigti šį %s atsisiuntimą, turite naudoti „Wi-Fi“. \n\nPalieskite %s , jei norite pradėti šį atsisiuntimą kitą kartą prisijungę prie „Wi-Fi“." "Įtraukti į eilę, norint vėliau atsisiųsti?" - "Siunč. šį %s failą eikv. daug energ. ir (arba) mob. duom., todėl pagal naud. duom. planą gali būti taik. oper. mokesč."\n\n" Palies. %s, jei nor. siųsti šį failą kitą k. prisij. prie „Wi-Fi“." + "Siunč. šį %s failą eikv. daug energ. ir (arba) mob. duom., todėl pagal naud. duom. planą gali būti taik. oper. mokesč.\n\n Palies. %s, jei nor. siųsti šį failą kitą k. prisij. prie „Wi-Fi“." "Eilė" "Atšaukti" "Pradėti dabar" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 47c0be20..89f9e4ce 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -38,9 +38,9 @@ "Lejupiel. nepiec. Wi-Fi." "Pārtraukta fonā." "Lejupielāde ir pārāk liela operatora tīklam." - "Lai pabeigtu šo lejupielādi (%s ), ir jāizmanto Wi-Fi. "\n\n"Pieskarieties %s , lai sāktu šo lejupielādi, kad tiks izveidots savienojums ar Wi-Fi tīklu." + "Lai pabeigtu šo lejupielādi (%s ), ir jāizmanto Wi-Fi. \n\nPieskarieties %s , lai sāktu šo lejupielādi, kad tiks izveidots savienojums ar Wi-Fi tīklu." "Vai ievietot rindā, lai lejupielādētu vēlāk?" - "Sākot šo lejupiel. (%s ) 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\n"Pieskarieties %s, lai sāktu šo lejupiel., kad tiks izveidots sav. ar Wi-Fi tīklu." + "Sākot šo lejupiel. (%s ) 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 %s, lai sāktu šo lejupiel., kad tiks izveidots sav. ar Wi-Fi tīklu." "Rinda" "Atcelt" "Sākt tūlīt" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 3d39b8bd..70c37302 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -38,9 +38,9 @@ "Saiz m.trn perlukn Wi-Fi" "Dijeda di latar belakang." "Muat turun terlalu besar untuk operator rangkaian" - "Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun %s ini. "\n\n"Sentuh %s untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi." + "Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun %s ini. \n\nSentuh %s untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi." "Baris gilir untuk dimuat turun kemudian?" - "Memulakan muat turun %s 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 %s untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi." + "Memulakan muat turun %s 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 %s untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi." "Baris gilir" "Batal" "Mulakan sekarang" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index f621af69..e064adc2 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -38,9 +38,9 @@ "Krever Wi-Fi pga. størr." "Satt på pause i bakgr." "Nedlastingen er for stor for operatørnettverket" - "Du må bruke Wi-Fi for å fullføre denne nedlastingen på %s . "\n\n"Trykk %s for å starte denne nedlastingen neste gang du er koblet til et Wi-Fi-nettverk." + "Du må bruke Wi-Fi for å fullføre denne nedlastingen på %s . \n\nTrykk %s for å starte denne nedlastingen neste gang du er koblet til et Wi-Fi-nettverk." "Vil du sette nedlastingen i kø til senere?" - "Starter du denne nedlastingen på %s nå, kan det redusere batteriets levetid eller gi for høy bruk av datatilkoblingen. Abonnementet ditt avgjør kostnadene."\n\n"Trykk%s for å starte nedlastingen neste gang du er koblet til Wi-Fi." + "Starter du denne nedlastingen på %s nå, kan det redusere batteriets levetid eller gi for høy bruk av datatilkoblingen. Abonnementet ditt avgjør kostnadene.\n\nTrykk%s for å starte nedlastingen neste gang du er koblet til Wi-Fi." "Kø" "Avbryt" "Start nå" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index bab68bb2..9f0cad22 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -38,9 +38,9 @@ "Wifi nodig voor download" "Onderbr. op achtergrond." "Download te groot voor providernetwerk" - "U moet wifi gebruiken om deze download van %s te voltooien. "\n\n"Raak %s aan om deze download te starten wanneer u verbinding heeft met een wifi-netwerk." + "U moet wifi gebruiken om deze download van %s te voltooien. \n\nRaak %s aan om deze download te starten wanneer u verbinding heeft met een wifi-netwerk." "In wachtrij plaatsen voor later downloaden?" - "Als u deze download van %s nu start, kan dit de levensduur van de accu verkorten en/of leiden tot bovenmatig gebruik van uw mobiele gegevensverbinding. Uw provider kan hiervoor kosten rekenen."\n\n" Raak \'%s\' aan om deze download te starten wanneer u verbinding heeft met een wifi-netwerk." + "Als u deze download van %s nu start, kan dit de levensduur van de accu verkorten en/of leiden tot bovenmatig gebruik van uw mobiele gegevensverbinding. Uw provider kan hiervoor kosten rekenen.\n\n Raak \'%s\' aan om deze download te starten wanneer u verbinding heeft met een wifi-netwerk." "Wachtrij" "Annuleren" "Nu starten" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index a02ef5c5..b66d0921 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -38,9 +38,9 @@ "Pobieranie wymaga Wi-Fi" "Wstrzymane w tle." "Zbyt duży plik do pobrania dla sieci operatora" - "Do pobrania %s musisz użyć połączenia Wi-Fi. "\n\n"Wybierz %s , aby pobrać po nawiązaniu połączenia z siecią Wi-Fi." + "Do pobrania %s musisz użyć połączenia Wi-Fi. \n\nWybierz %s , aby pobrać po nawiązaniu połączenia z siecią Wi-Fi." "Czy dodać do kolejki do późniejszego pobrania?" - "Pobranie %s może skrócić czas pracy na baterii i spowodować przekroczenie limitu transmisji danych, za co operator może naliczyć dodatkowe opłaty."\n\n"Wybierz %s, aby pobrać po połączeniu z siecią Wi-Fi." + "Pobranie %s 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 %s, aby pobrać po połączeniu z siecią Wi-Fi." "Dodaj do kolejki" "Anuluj" "Rozpocznij teraz" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index c77c6c77..710b5f39 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -38,9 +38,9 @@ "Tam. transf. exige Wi-Fi" "Interrompida em 2º plano" "Transf. demasiado grande para a rede do operador" - "Deve utilizar uma rede Wi-Fi para concluir esta transferência de %s . "\n\n"Toque em %s para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi." + "Deve utilizar uma rede Wi-Fi para concluir esta transferência de %s . \n\nToque em %s para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi." "Colocar em fila para transferir mais tarde?" - "Iniciar esta transferência de %s 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 %s para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi." + "Iniciar esta transferência de %s 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 %s para iniciar a transferência da próxima vez que estiver ligado a uma rede Wi-Fi." "Fila" "Cancelar" "Começar agora" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index f4b47071..03cd238b 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -38,9 +38,9 @@ "O tamanho do download requer Wi-Fi." "Paus. em segundo plano." "Download muito grande para a rede da operadora" - "Você deve usar o Wi-Fi para completar o download de %s . "\n\n"Toque em %s para começar o download da próxima vez que você estiver conectado a uma rede Wi-Fi." + "Você deve usar o Wi-Fi para completar o download de %s . \n\nToque em %s para começar o download da próxima vez que você estiver conectado a uma rede Wi-Fi." "Colocar em fila para download mais tarde?" - "O download de %s 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 %s para fazer o download quando conect. a uma rede Wi-Fi." + "O download de %s 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 %s para fazer o download quando conect. a uma rede Wi-Fi." "Fila" "Cancelar" "Iniciar agora" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 2bd33c95..a18b181e 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -38,9 +38,9 @@ "Dimen. desc. nec. Wi-Fi" "Întreruptă în fundal." "Descărcare prea mare pentru reţeaua operatorului" - "Trebuie să utilizaţi Wi-Fi pentru a finaliza această descărcare de %s . "\n\n"Atingeţi %s pentru a începe această descărcare data viitoare când vă conectaţi la o reţea Wi-Fi." + "Trebuie să utilizaţi Wi-Fi pentru a finaliza această descărcare de %s . \n\nAtingeţi %s pentru a începe această descărcare data viitoare când vă conectaţi la o reţea Wi-Fi." "Puneţi în aşteptare pentru descărcare ulterioară?" - "Pornirea ac.desc.de %s 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. %s pt.a înc.desc.la conect.la Wi-Fi." + "Pornirea ac.desc.de %s 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. %s pt.a înc.desc.la conect.la Wi-Fi." "Listă de aşteptare" "Anulaţi" "Începeţi acum" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 8e20cf3a..7e06bc11 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -38,9 +38,9 @@ "Загрузка только по Wi-Fi" "Загрузка приостановлена" "Слишком большой файл для сети оператора" - "Для завершения загрузки файла размером %s необходимо подключение к сети Wi-Fi."\n\n"Чтобы продолжить загрузку позже через Wi-Fi, нажмите %s ." + "Для завершения загрузки файла размером %s необходимо подключение к сети Wi-Fi.\n\nЧтобы продолжить загрузку позже через Wi-Fi, нажмите %s ." "Поставить в очередь на загрузку позже?" - "Если загрузить %s сейчас, батарея может быстро разрядиться. Также не исключено превышение трафика и, как результат, увеличение расходов на связь."\n\n"Чтобы выполнить загрузку позже через Wi-Fi, нажмите %s." + "Если загрузить %s сейчас, батарея может быстро разрядиться. Также не исключено превышение трафика и, как результат, увеличение расходов на связь.\n\nЧтобы выполнить загрузку позже через Wi-Fi, нажмите %s." "Добавить в очередь" "Отмена" "Запустить" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 1bb1b5e3..018447ce 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -38,9 +38,9 @@ "Vzhľadom na veľkosť preberaného súboru sa vyžaduje pripojenie Wi-Fi" "Pozastavené na pozadí." "Preberaný súbor je pre sieť operátora príliš veľký" - "Na dokončenie preberania tohto súboru s veľkosťou %s je potrebné pripojenie Wi-Fi. "\n\n"Ak chcete spustiť preberanie pri ďalšom pripojení k sieti Wi-Fi, dotknite sa možnosti %s ." + "Na dokončenie preberania tohto súboru s veľkosťou %s je potrebné pripojenie Wi-Fi. \n\nAk chcete spustiť preberanie pri ďalšom pripojení k sieti Wi-Fi, dotknite sa možnosti %s ." "Zaradiť do zoznamu na neskoršie prevzatie?" - "Preberanie (%s ) 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 %s spustíte preberanie pri ďalšom pripojení k Wi-Fi." + "Preberanie (%s ) 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 %s spustíte preberanie pri ďalšom pripojení k Wi-Fi." "Zoznam" "Zrušiť" "Spustiť" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 90f766b1..7c116a1e 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -38,9 +38,9 @@ "Zahtev. je povez. Wi-Fi." "Začas. ustav. v ozadju." "Prenos je prevelik za operaterjevo omrežje" - "Če želite dokončati prenos, velik %s , morate uporabiti povezavo Wi-Fi. "\n\n"Dotaknite se možnosti %s , če želite začeti ta prenos naslednjič, ko boste povezani v omrežje Wi-Fi." + "Če želite dokončati prenos, velik %s , morate uporabiti povezavo Wi-Fi. \n\nDotaknite se možnosti %s , če želite začeti ta prenos naslednjič, ko boste povezani v omrežje Wi-Fi." "Želite postaviti v čakalno vrsto za poznejši prenos?" - "Zaradi prenosa, velikega %s , se lahko porabi baterija in/ali prekomerno uporabijo mobilni podatki, kar vam lahko operater glede na naročnino zaračuna."\n\n"Dotaknite se %s, če želite prenesti, ko boste povezani v Wi-Fi." + "Zaradi prenosa, velikega %s , se lahko porabi baterija in/ali prekomerno uporabijo mobilni podatki, kar vam lahko operater glede na naročnino zaračuna.\n\nDotaknite se %s, če želite prenesti, ko boste povezani v Wi-Fi." "Čakalna vrsta" "Prekliči" "Začni zdaj" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index b63d417f..7d1d3a9c 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -38,9 +38,9 @@ "Величина ставке захтева Wi-Fi." "Паузирано у позадини." "Преузимање је превелико за мрежу оператера" - "Морате да користите Wi-Fi да бисте довршили ово преузимање од %s . "\n\n"Додирните %s да бисте започели ово преузимање када се следећи пут повежете са Wi-Fi мрежом." + "Морате да користите Wi-Fi да бисте довршили ово преузимање од %s . \n\nДодирните %s да бисте започели ово преузимање када се следећи пут повежете са Wi-Fi мрежом." "Желите ли да ставите у ред за будуће преузимање?" - "Овим преузимањем од %s можете да скратите век трајања батерије и/или претерано користите мобилну везу за пренос података, што може да доведе до трошкова код мобилног оператера сходно тарифном пакету."\n\n" Додирните %s да бисте започели ово преузимање када се поново повежете са Wi-Fi мрежом." + "Овим преузимањем од %s можете да скратите век трајања батерије и/или претерано користите мобилну везу за пренос података, што може да доведе до трошкова код мобилног оператера сходно тарифном пакету.\n\n Додирните %s да бисте започели ово преузимање када се поново повежете са Wi-Fi мрежом." "Ред" "Откажи" "Започни одмах" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 927de7b5..164c5276 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -38,9 +38,9 @@ "Hämtningen kräver Wi-Fi." "Pausad i bakgrunden." "Hämtningen är för stor för operatörsnätverket" - "Du måste använda Wi-Fi om du vill slutföra hämtningen på %s . "\n" "\n" Tryck på %s om du vill påbörja hämtningen nästa gång du är ansluten till ett Wi-Fi-nätverk." + "Du måste använda Wi-Fi om du vill slutföra hämtningen på %s . \n \n Tryck på %s om du vill påbörja hämtningen nästa gång du är ansluten till ett Wi-Fi-nätverk." "Vill du ställa den i kö för hämtning senare?" - "Om du hämtar %s 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å %s om du vill starta hämtningen nästa gång mobilen är ansluten till ett Wi-Fi-nätverk." + "Om du hämtar %s 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å %s om du vill starta hämtningen nästa gång mobilen är ansluten till ett Wi-Fi-nätverk." "Kö" "Avbryt" "Starta nu" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 7af52aae..86973442 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -38,9 +38,9 @@ "Ukubwa wa kipakuzi uhitaji Wi-Fi" "Imesitishwa katika usuli." "Kipakuzi ni kikubwa zaidi kwa mtandao wa mtoa huduma" - "Lazima utumia Wi-Fi ili ukamilishe kipakuzi cha %s . "\n\n"Gusa %s ili kuanzisha upakuaji huu wakati utakapounganishwa tena kwenye mtandao wa Wi-Fi." + "Lazima utumia Wi-Fi ili ukamilishe kipakuzi cha %s . \n\nGusa %s ili kuanzisha upakuaji huu wakati utakapounganishwa tena kwenye mtandao wa Wi-Fi." "Weka katika foleni ya kupakulia baadaye?" - "Kuanza kupakua kipakuzi hiki cha %s 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 %s ili kuanza kupakua wakati utakapokuwa umeunganishwa na mtandao wa Wi-Fi." + "Kuanza kupakua kipakuzi hiki cha %s 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 %s ili kuanza kupakua wakati utakapokuwa umeunganishwa na mtandao wa Wi-Fi." "Foleni" "Ghairi" "Anza sasa" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 3f19fb60..fdd081bb 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -38,9 +38,9 @@ "ต้องใช้ WiFi ดาวน์โหลด" "หยุดชั่วคราวในเบื้องหลัง" "ดาวน์โหลดมีขนาดใหญ่เกินไปสำหรับเครือข่ายผู้ให้บริการ" - "คุณต้องใช้ WiFi เพื่อดาวน์โหลดไฟล์ขนาด %s นี้ให้เสร็จสิ้น"\n\n"แตะ %s เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่คุณเชื่อมต่อเครือข่าย WiFi" + "คุณต้องใช้ WiFi เพื่อดาวน์โหลดไฟล์ขนาด %s นี้ให้เสร็จสิ้น\n\nแตะ %s เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่คุณเชื่อมต่อเครือข่าย WiFi" "ต่อคิวเพื่อดาวน์โหลดในภายหลังหรือไม่" - "การเริ่มดาวน์โหลดรายการขนาด %s ตอนนี้อาจลดเวลาใช้งานแบตเตอรี่และ/หรือทำให้ใช้งานข้อมูลผ่านมือถือมากไป ซึ่งผู้ให้บริการจะเก็บค่าใช้จ่ายตามแผนการใช้งานข้อมูลของคุณ"\n\n"แตะ %s เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่เชื่อมต่อเครือข่าย WiFi" + "การเริ่มดาวน์โหลดรายการขนาด %s ตอนนี้อาจลดเวลาใช้งานแบตเตอรี่และ/หรือทำให้ใช้งานข้อมูลผ่านมือถือมากไป ซึ่งผู้ให้บริการจะเก็บค่าใช้จ่ายตามแผนการใช้งานข้อมูลของคุณ\n\nแตะ %s เพื่อเริ่มการดาวน์โหลดนี้ในครั้งต่อไปที่เชื่อมต่อเครือข่าย WiFi" "คิว" "ยกเลิก" "เริ่มต้นเดี๋ยวนี้" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 1d19dc24..4580be6e 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -38,9 +38,9 @@ "Kailangan ng laki ng download ng Wi-Fi." "Na-pause sa background." "Masyadong malaki ang download sa operator network" - "Dapat kang gumamit ng Wi-Fi upang kumpletuhin ang %s na download na ito. "\n\n"Pindutin ang %s upang simulan ang download na ito sa susunod na oras na nakakonekta ka sa Wi-Fi network." + "Dapat kang gumamit ng Wi-Fi upang kumpletuhin ang %s na download na ito. \n\nPindutin ang %s upang simulan ang download na ito sa susunod na oras na nakakonekta ka sa Wi-Fi network." "I-queue para sa pag-download sa ibang pagkakataon?" - "Ang pagsisimula sa %s 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 %s upang simulan ang download na ito sa susunod na oras nakakonekta ka sa isang Wi-Fi network." + "Ang pagsisimula sa %s 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 %s upang simulan ang download na ito sa susunod na oras nakakonekta ka sa isang Wi-Fi network." "Queue" "Kanselahin" "Magsimula ngayon" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index c70220fe..08810600 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -38,9 +38,9 @@ "İndirme boyutu Kablosuz bağlantı gerektiriyor." "Arka planda duraklatıldı." "İndirme boyutu operatör ağı için çok büyük" - "Bu %s boyutundaki indirme işlemini tamamlamak için Kablosuz bağlantıyı kullanmalısınız. "\n\n"Bu indirme işlemini Kablosuz ağa bir sonraki bağlanmanızda başlatmak için %s öğesine dokunun." + "Bu %s 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 %s öğesine dokunun." "Daha sonra indirmek için kuyruğa alınsın mı?" - "Bu %s 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 %s düğmesine dokunun." + "Bu %s 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 %s düğmesine dokunun." "Kuyruğa al" "İptal" "Şimdi başlat" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index ae9b698d..ab9e9fab 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -38,9 +38,9 @@ "Для завант.потрібен Wi-Fi" "Призупинено у фонов.реж." "Завантаження завелике для мережі оператора" - "Для цього завантаження розміром %s потрібне з’єднання з Wi-Fi. "\n\n"Торкніться опції %s , щоб виконати це завантаження під час наступного з’єднання з мережею Wi-Fi." + "Для цього завантаження розміром %s потрібне з’єднання з Wi-Fi. \n\nТоркніться опції %s , щоб виконати це завантаження під час наступного з’єднання з мережею Wi-Fi." "Поставити в чергу, щоб завантажити пізніше?" - "Зараз це завантаження %s може зменшити заряд акумулятора і/чи спричинити надмірне мобільне передавання даних, за що оператор може стягувати плату залежно від тарифного плану."\n\n" Виберіть %s, щоб завантажити, коли з’явиться з’єднання Wi-Fi." + "Зараз це завантаження %s може зменшити заряд акумулятора і/чи спричинити надмірне мобільне передавання даних, за що оператор може стягувати плату залежно від тарифного плану.\n\n Виберіть %s, щоб завантажити, коли з’явиться з’єднання Wi-Fi." "У чергу" "Скасувати" "Почати зараз" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index d73ba6cc..3c992302 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -38,9 +38,9 @@ "Yêu cầu Wi-Fi." "Đã tạm dừng trong nền." "Bản tải xuống quá lớn so với mạng của nhà cung cấp" - "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 %s này. "\n\n"Chạm %s để 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." + "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 %s này. \n\nChạm %s để 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." "Xếp hàng đợi để tải xuống sau?" - "Việc bắt đầu tải xuống nội dung có kích thước %s 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 %s để 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." + "Việc bắt đầu tải xuống nội dung có kích thước %s 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 %s để 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." "Hàng đợi" "Hủy" "Bắt đầu ngay bây giờ" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 5dc821e9..3cf07200 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -38,9 +38,9 @@ "文件过大,需要通过 WLAN 下载。" "已在后台暂停。" "文件太大,不适于通过运营商网络下载" - "您必须使用 WLAN 完成此内容 (%s ) 的下载。"\n\n"触摸“%s ”可在下次连接到 WLAN 网络时开始下载此内容。" + "您必须使用 WLAN 完成此内容 (%s ) 的下载。\n\n触摸“%s ”可在下次连接到 WLAN 网络时开始下载此内容。" "稍后再加入下载队列吗?" - "立即开始下载此内容 (%s ) 可能会缩短电池的使用时间并/或导致过量使用移动数据连接流量(这可能导致移动运营商向您收费,具体取决于您的流量套餐)。"\n\n"触摸“%s”可在下次连接到 WLAN 网络时开始下载此内容。" + "立即开始下载此内容 (%s ) 可能会缩短电池的使用时间并/或导致过量使用移动数据连接流量(这可能导致移动运营商向您收费,具体取决于您的流量套餐)。\n\n触摸“%s”可在下次连接到 WLAN 网络时开始下载此内容。" "排队" "取消" "立即开始" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 15e2ccba..e30deec9 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -38,9 +38,9 @@ "這個檔案較大,需要透過 Wi-Fi 下載。" "在背景中暫停。" "檔案過大,無法透過行動電話業者的網路下載" - "您必須透過 Wi-Fi 才能完整下載這個 %s 的檔案。"\n\n"建議您改在下次連上 Wi-Fi 網路時,再輕觸 [%s ] 開始下載。" + "您必須透過 Wi-Fi 才能完整下載這個 %s 的檔案。\n\n建議您改在下次連上 Wi-Fi 網路時,再輕觸 [%s ] 開始下載。" "排入佇列以供日後下載?" - "現在下載這個 %s 的檔案,可能會減少電池可使用的時間,並/或超額使用行動數據連線,導致行動通訊業者依據資費方案向您收費。"\n\n"建議您改在下次連上 Wi-Fi 網路時,再輕觸 [%s] 開始下載。" + "現在下載這個 %s 的檔案,可能會減少電池可使用的時間,並/或超額使用行動數據連線,導致行動通訊業者依據資費方案向您收費。\n\n建議您改在下次連上 Wi-Fi 網路時,再輕觸 [%s] 開始下載。" "佇列" "取消" "立即開始" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 7fb75822..f61c5219 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -38,9 +38,9 @@ "Usayizi wokulanda udinga i-Wi-Fi" "Kumisiwe okwesikhashana esizindeni" "Ukulanda kukhulu kakhulu" - "Kufanele usebenzise i-Wi-Fi ukuqedela lokhu %s kulayisha. "\n\n"Thinta Touch %s ukuqlisa lokhu kulayisha esikhathini esizayo uxhuaniseke enethiwekhini ye-Wi-Fi." + "Kufanele usebenzise i-Wi-Fi ukuqedela lokhu %s kulayisha. \n\nThinta Touch %s ukuqlisa lokhu kulayisha esikhathini esizayo uxhuaniseke enethiwekhini ye-Wi-Fi." "Linda ukulanda emva kwesikhathi?" - "Ukuqala lokhu kulanda %s 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 %s ukuqala lokhu kulayisha esikhathini esizayo uxhumaniseke enethiwekhini ye-Wi-Fi." + "Ukuqala lokhu kulanda %s 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 %s ukuqala lokhu kulayisha esikhathini esizayo uxhumaniseke enethiwekhini ye-Wi-Fi." "Umugqa" "Khansela" "Qala manje" -- cgit v1.2.3 From 6a09c3294997dc9e3c83b8431f7b496b19670014 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 7 Aug 2013 18:33:57 -0700 Subject: First pass at Downloads storage provider. Offers a view of Downloads through the lens of DocumentsContract for surfacing in new storage UI. Change-Id: I4373c2498b4b82bfee2300a00f8d0bb734bf574c --- AndroidManifest.xml | 15 +- res/mipmap-hdpi/ic_launcher_download.png | Bin 0 -> 10593 bytes res/mipmap-mdpi/ic_launcher_download.png | Bin 0 -> 23509 bytes res/mipmap-xhdpi/ic_launcher_download.png | Bin 0 -> 32416 bytes res/mipmap-xxhdpi/ic_launcher_download.png | Bin 0 -> 21228 bytes res/values/strings.xml | 3 + res/xml/document_provider.xml | 19 ++ .../downloads/DownloadStorageProvider.java | 302 +++++++++++++++++++++ 8 files changed, 338 insertions(+), 1 deletion(-) create mode 100644 res/mipmap-hdpi/ic_launcher_download.png create mode 100644 res/mipmap-mdpi/ic_launcher_download.png create mode 100644 res/mipmap-xhdpi/ic_launcher_download.png create mode 100644 res/mipmap-xxhdpi/ic_launcher_download.png create mode 100644 res/xml/document_provider.xml create mode 100644 src/com/android/providers/downloads/DownloadStorageProvider.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 3024a17a..f1ad40ee 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -56,7 +56,8 @@ + android:label="@string/app_label" + android:icon="@mipmap/ic_launcher_download"> @@ -77,6 +78,18 @@ downloaded files with other viewers --> + + + + + diff --git a/res/mipmap-hdpi/ic_launcher_download.png b/res/mipmap-hdpi/ic_launcher_download.png new file mode 100644 index 00000000..3f092d39 Binary files /dev/null and b/res/mipmap-hdpi/ic_launcher_download.png differ diff --git a/res/mipmap-mdpi/ic_launcher_download.png b/res/mipmap-mdpi/ic_launcher_download.png new file mode 100644 index 00000000..76652fb9 Binary files /dev/null and b/res/mipmap-mdpi/ic_launcher_download.png differ diff --git a/res/mipmap-xhdpi/ic_launcher_download.png b/res/mipmap-xhdpi/ic_launcher_download.png new file mode 100644 index 00000000..7d7b1b11 Binary files /dev/null and b/res/mipmap-xhdpi/ic_launcher_download.png differ diff --git a/res/mipmap-xxhdpi/ic_launcher_download.png b/res/mipmap-xxhdpi/ic_launcher_download.png new file mode 100644 index 00000000..0921c124 Binary files /dev/null and b/res/mipmap-xxhdpi/ic_launcher_download.png differ diff --git a/res/values/strings.xml b/res/values/strings.xml index 3a060e2d..2981047c 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -213,4 +213,7 @@ [CHAR LIMIT=200] --> Can\'t open file + + Downloads + diff --git a/res/xml/document_provider.xml b/res/xml/document_provider.xml new file mode 100644 index 00000000..77891cbc --- /dev/null +++ b/res/xml/document_provider.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java new file mode 100644 index 00000000..7b6d1521 --- /dev/null +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -0,0 +1,302 @@ +/* + * Copyright (C) 2013 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.app.DownloadManager; +import android.content.ContentProvider; +import android.content.ContentUris; +import android.content.ContentValues; +import android.content.UriMatcher; +import android.database.Cursor; +import android.database.MatrixCursor; +import android.net.Uri; +import android.os.Binder; +import android.os.ParcelFileDescriptor; +import android.provider.BaseColumns; +import android.provider.DocumentsContract; +import android.provider.DocumentsContract.DocumentColumns; +import android.provider.DocumentsContract.RootColumns; +import android.provider.Downloads; +import android.util.Log; + +import libcore.io.IoUtils; + +import java.io.FileNotFoundException; + +/** + * Presents a {@link DocumentsContract} view of {@link DownloadManager} + * contents. + */ +public class DownloadStorageProvider extends ContentProvider { + private static final String AUTHORITY = "com.android.providers.downloads.storage"; + + private static final UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); + + private static final int URI_ROOTS = 1; + private static final int URI_ROOTS_ID = 2; + private static final int URI_DOCS_ID = 3; + private static final int URI_DOCS_ID_CONTENTS = 4; + + static { + sMatcher.addURI(AUTHORITY, "roots", URI_ROOTS); + sMatcher.addURI(AUTHORITY, "roots/*", URI_ROOTS_ID); + sMatcher.addURI(AUTHORITY, "roots/*/docs/*", URI_DOCS_ID); + sMatcher.addURI(AUTHORITY, "roots/*/docs/*/contents", URI_DOCS_ID_CONTENTS); + } + + @Override + public boolean onCreate() { + return true; + } + + @Override + public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, + String sortOrder) { + + // TODO: support custom projections + final String[] rootsProjection = new String[] { + BaseColumns._ID, RootColumns.ROOT_ID, RootColumns.ROOT_TYPE, RootColumns.ICON, + RootColumns.TITLE, RootColumns.SUMMARY, RootColumns.AVAILABLE_BYTES }; + final String[] docsProjection = new String[] { + BaseColumns._ID, DocumentColumns.DISPLAY_NAME, DocumentColumns.SIZE, + DocumentColumns.DOC_ID, DocumentColumns.MIME_TYPE, DocumentColumns.LAST_MODIFIED, + DocumentColumns.FLAGS, DocumentColumns.SUMMARY }; + + switch (sMatcher.match(uri)) { + case URI_ROOTS: { + final MatrixCursor result = new MatrixCursor(rootsProjection); + includeDefaultRoot(result); + return result; + } + case URI_ROOTS_ID: { + final MatrixCursor result = new MatrixCursor(rootsProjection); + includeDefaultRoot(result); + return result; + } + case URI_DOCS_ID: { + final String docId = DocumentsContract.getDocId(uri); + final MatrixCursor result = new MatrixCursor(docsProjection); + + if (DocumentsContract.ROOT_DOC_ID.equals(docId)) { + includeDefaultDocument(result); + } else { + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + final Uri downloadUri = getDownloadUriFromDocument(docId); + cursor = getContext() + .getContentResolver().query(downloadUri, null, null, null, null); + if (cursor.moveToFirst()) { + includeDownloadFromCursor(result, cursor); + } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); + } + } + return result; + } + case URI_DOCS_ID_CONTENTS: { + final String docId = DocumentsContract.getDocId(uri); + final MatrixCursor result = new MatrixCursor(docsProjection); + + if (!DocumentsContract.ROOT_DOC_ID.equals(docId)) { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + + // Delegate to real provider + // TODO: filter visible downloads? + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + cursor = getContext().getContentResolver() + .query(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, null, null, null, null); + while (cursor.moveToNext()) { + includeDownloadFromCursor(result, cursor); + } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); + } + return result; + } + default: { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + } + } + + private void includeDefaultRoot(MatrixCursor result) { + final int rootType = DocumentsContract.ROOT_TYPE_SHORTCUT; + final String rootId = "downloads"; + final int icon = 0; + final String title = getContext().getString(R.string.root_downloads); + final String summary = null; + final long availableBytes = -1; + + result.addRow(new Object[] { + rootId.hashCode(), rootId, rootType, icon, title, summary, + availableBytes }); + } + + private void includeDefaultDocument(MatrixCursor result) { + final long id = Long.MIN_VALUE; + final String docId = DocumentsContract.ROOT_DOC_ID; + final String displayName = getContext().getString(R.string.root_downloads); + final String summary = null; + final String mimeType = DocumentsContract.MIME_TYPE_DIRECTORY; + final long size = -1; + final long lastModified = -1; + final int flags = 0; + + result.addRow(new Object[] { + id, displayName, size, docId, mimeType, lastModified, flags, summary }); + } + + private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { + final long id = cursor.getLong(cursor.getColumnIndexOrThrow(Downloads.Impl._ID)); + final String docId = getDocumentFromDownload(id); + + final String displayName = cursor.getString( + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_TITLE)); + final String summary = cursor.getString( + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_DESCRIPTION)); + String mimeType = cursor.getString( + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_MIME_TYPE)); + if (mimeType == null) { + mimeType = "application/octet-stream"; + } + + final int status = cursor.getInt( + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_STATUS)); + final long size; + if (Downloads.Impl.isStatusCompleted(status)) { + size = cursor.getLong(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_TOTAL_BYTES)); + } else { + size = -1; + } + + int flags = DocumentsContract.FLAG_SUPPORTS_DELETE; + if (mimeType.startsWith("image/")) { + flags |= DocumentsContract.FLAG_SUPPORTS_THUMBNAIL; + } + + final long lastModified = cursor.getLong( + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_LAST_MODIFICATION)); + + result.addRow(new Object[] { + id, displayName, size, docId, mimeType, lastModified, flags, summary }); + } + + @Override + public String getType(Uri uri) { + switch (sMatcher.match(uri)) { + case URI_DOCS_ID: { + final String docId = DocumentsContract.getDocId(uri); + if (DocumentsContract.ROOT_DOC_ID.equals(docId)) { + return DocumentsContract.MIME_TYPE_DIRECTORY; + } else { + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + String mimeType = null; + try { + final Uri downloadUri = getDownloadUriFromDocument(docId); + cursor = getContext().getContentResolver() + .query(downloadUri, null, null, null, null); + if (cursor.moveToFirst()) { + mimeType = cursor.getString( + cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_MIME_TYPE)); + } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); + } + + if (mimeType == null) { + mimeType = "application/octet-stream"; + } + } + } + default: { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + } + } + + private Uri getDownloadUriFromDocument(String docId) { + return ContentUris.withAppendedId( + Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, getDownloadFromDocument(docId)); + } + + private long getDownloadFromDocument(String docId) { + return Long.parseLong(docId.substring(docId.indexOf(':') + 1)); + } + + private String getDocumentFromDownload(long id) { + return "id:" + id; + } + + @Override + public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + switch (sMatcher.match(uri)) { + case URI_DOCS_ID: { + final String docId = DocumentsContract.getDocId(uri); + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + try { + final Uri downloadUri = getDownloadUriFromDocument(docId); + return getContext().getContentResolver().openFileDescriptor(downloadUri, mode); + } finally { + Binder.restoreCallingIdentity(token); + } + } + default: { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + } + } + + @Override + public Uri insert(Uri uri, ContentValues values) { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + + @Override + public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + + @Override + public int delete(Uri uri, String selection, String[] selectionArgs) { + switch (sMatcher.match(uri)) { + case URI_DOCS_ID: { + final String docId = DocumentsContract.getDocId(uri); + + // Delegate to real provider + // TODO: only storage UI should be allowed to delete? + final Uri downloadUri = getDownloadUriFromDocument(docId); + getContext().getContentResolver().delete(downloadUri, null, null); + } + default: { + throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + } + } +} -- cgit v1.2.3 From 4bafe763c1374c41cd84cb2e0621ea16bfeddd10 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 12 Aug 2013 13:07:20 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Ibce1ddc6667714b4f442c4a9c94bc4a2dee9c6da Auto-generated-cl: translation import --- res/values-af/strings.xml | 1 + res/values-am/strings.xml | 1 + res/values-ar/strings.xml | 1 + res/values-be/strings.xml | 2 ++ res/values-bg/strings.xml | 1 + res/values-ca/strings.xml | 1 + res/values-cs/strings.xml | 1 + res/values-da/strings.xml | 1 + res/values-de/strings.xml | 1 + res/values-el/strings.xml | 1 + res/values-en-rGB/strings.xml | 1 + res/values-es-rUS/strings.xml | 1 + res/values-es/strings.xml | 1 + res/values-et/strings.xml | 1 + res/values-fa/strings.xml | 1 + res/values-fi/strings.xml | 1 + res/values-fr/strings.xml | 1 + res/values-hi/strings.xml | 1 + res/values-hr/strings.xml | 1 + res/values-hu/strings.xml | 1 + res/values-in/strings.xml | 1 + res/values-it/strings.xml | 1 + res/values-iw/strings.xml | 1 + res/values-ja/strings.xml | 1 + res/values-ko/strings.xml | 1 + res/values-lt/strings.xml | 1 + res/values-lv/strings.xml | 1 + res/values-ms/strings.xml | 1 + res/values-nb/strings.xml | 3 ++- res/values-nl/strings.xml | 1 + res/values-pl/strings.xml | 1 + res/values-pt-rPT/strings.xml | 1 + res/values-pt/strings.xml | 1 + res/values-ro/strings.xml | 1 + res/values-ru/strings.xml | 1 + res/values-sk/strings.xml | 1 + res/values-sl/strings.xml | 1 + res/values-sr/strings.xml | 1 + res/values-sv/strings.xml | 1 + res/values-sw/strings.xml | 1 + res/values-th/strings.xml | 1 + res/values-tl/strings.xml | 1 + res/values-tr/strings.xml | 1 + res/values-uk/strings.xml | 1 + res/values-vi/strings.xml | 1 + res/values-zh-rCN/strings.xml | 1 + res/values-zh-rTW/strings.xml | 1 + res/values-zu/strings.xml | 1 + 48 files changed, 50 insertions(+), 1 deletion(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index baf0e464..ed86c359 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -55,4 +55,5 @@ "%s oor" "Kan nie lêer oopmaak nie" + "Aflaaisels" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 049ef773..fcaef40f 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -55,4 +55,5 @@ "%s ቀርቷል" "ፋይል መክፈት አይቻልም" + "የወረዱ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 119671df..4822443f 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -55,4 +55,5 @@ "المدة المتبقية: %s" "لا يمكن فتح الملف" + "التنزيلات" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index f4b59a86..7f61f3f3 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -55,4 +55,6 @@ "Засталося %s" "Не атрымлiваецца адкрыць файл" + + diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 79df0659..81d44e64 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -55,4 +55,5 @@ "Оставащо време: %s" "Файлът не може да се отвори" + "Изтегляния" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index f1f3618e..ba441957 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -55,4 +55,5 @@ "Temps restant: %s" "No es pot obrir el fitxer" + "Baixades" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index a800fca2..a81fccce 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -55,4 +55,5 @@ "%s do stažení" "Soubor nelze otevřít" + "Ke stažení" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 78028924..c983fbb9 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -55,4 +55,5 @@ "%s tilbage" "Filen kan ikke åbnes" + "Downloads" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 43451703..d8601a0b 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -55,4 +55,5 @@ "Noch %s" "Datei kann nicht geöffnet werden." + "Downloads" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 1f749e75..9b295342 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -55,4 +55,5 @@ "Απομένουν %s" "Δεν είναι δυνατό το άνοιγμα του αρχείου" + "Λήψεις" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 8cea9aca..e891af52 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -55,4 +55,5 @@ "%s left" "Can\'t open file" + "Downloads" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 0fbb309b..8f3b4926 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -55,4 +55,5 @@ "%s restantes" "No se puede abrir el archivo." + "Descargas" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 3735acc0..66d6064e 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -55,4 +55,5 @@ "Tiempo restante: %s" "Error al abrir el archivo" + "Descargas" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index a3503c2f..cb6b188f 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -55,4 +55,5 @@ "Jäänud: %s" "Faili ei saa avada" + "Allalaadimised" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 336d6f99..e7a69929 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -55,4 +55,5 @@ "%s باقیمانده" "فایل باز نمی‌شود" + "دانلودها" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 679d66d2..d16e962a 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -55,4 +55,5 @@ "%s jäljellä" "Tiedostoa ei voi avata" + "Lataukset" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index cedf5dee..187f8108 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -55,4 +55,5 @@ "Temps restant : %s" "Impossible d\'ouvrir le fichier." + "Téléchargements" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index b440379b..4257c4e0 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -55,4 +55,5 @@ "%s शेष" "फ़ाइल नहीं खोली जा सकती" + "डाउनलोड" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 70f0cff9..428d47e7 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -55,4 +55,5 @@ "Još %s" "Datoteka se ne može otvoriti" + "Preuzimanja" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 58965d34..41819fda 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -55,4 +55,5 @@ "%s van hátra" "A fájlt nem lehet megnyitni." + "Letöltések" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index a8474cef..9faec70b 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -55,4 +55,5 @@ "%s lagi" "Tidak dapat membuka file" + "Unduhan" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 3f51d3c3..85c7cc8b 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -55,4 +55,5 @@ "%s rimanenti" "Impossibile aprire il file" + "Download" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 69a10d02..ef51d91f 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -55,4 +55,5 @@ "%s נותרו" "לא ניתן לפתוח את הקובץ" + "הורדות" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 14c648fd..bafa104d 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -55,4 +55,5 @@ "残り%s" "ファイルを開くことができません" + "ダウンロード" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 4716650c..380e254b 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -55,4 +55,5 @@ "%s 남음" "파일을 열 수 없음" + "다운로드" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 0f78fbaa..4cd2fb7f 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -55,4 +55,5 @@ "Liko: %s" "Nepavyksta atidaryti failo" + "Atsisiuntimai" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 89f9e4ce..92c2e6be 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -55,4 +55,5 @@ "Atlikušais laiks: %s" "Nevar atvērt failu" + "Lejupielādes" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 70c37302..d0b4a8be 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -55,4 +55,5 @@ "%s tinggal" "Tidak dapat membuka fail" + "Muat turun" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index e064adc2..1ea001a7 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -17,7 +17,7 @@ "Nedlaster" - "Få tilgang til nedlasteren." + "Bruke nedlasting." "Gir appen adgang til nedlastingsbehandlingen og bruke den til å laste ned filer. Skadelig programvare kan bruke dette til å forstyrre nedlastinger og få tilgang til privat informasjon." "Avansert nedlastingsfunksjonalitet." "Gir appen adgang til avanserte funksjoner i nedlastingsbehandlingen. Skadelig programvare kan bruke dette til å forstyrre nedlastinger og få tilgang til privat informasjon." @@ -55,4 +55,5 @@ "%s gjenstår" "Kan ikke åpne filen" + "Nedlastinger" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 9f0cad22..aa891c59 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -55,4 +55,5 @@ "%s resterend" "Kan bestand niet openen" + "Downloads" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index b66d0921..e05b66c8 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -55,4 +55,5 @@ "Pozostało: %s" "Nie można otworzyć pliku" + "Pobrane" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 710b5f39..702ca233 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -55,4 +55,5 @@ "Faltam %s" "Não é possível abrir o ficheiro" + "Transferências" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 03cd238b..71251869 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -55,4 +55,5 @@ "%s restantes" "Não é possível abrir o arquivo" + "Downloads" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index a18b181e..8450e476 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -55,4 +55,5 @@ "Timp rămas: %s" "Fişierul nu poate fi deschis" + "Descărcări" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 7e06bc11..85755c1a 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -55,4 +55,5 @@ "Осталось: %s" "Не удается открыть файл" + "Загрузки" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 018447ce..768e45be 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -55,4 +55,5 @@ "Zostáva: %s" "Súbor sa nepodarilo otvoriť" + "Prevzaté položky" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 7c116a1e..1956a3ee 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -55,4 +55,5 @@ "Še %s" "Datoteke ni mogoče odpreti" + "Prenosi" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 7d1d3a9c..682fe328 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -55,4 +55,5 @@ "Још %s" "Није могуће отворити датотеку" + "Преузимања" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 164c5276..55f953b0 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -55,4 +55,5 @@ "%s återstår" "Det går inte att öppna filen" + "Hämtningar" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 86973442..2c1d7180 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -55,4 +55,5 @@ "%s zinazosalia" "Haiwezi kufungua faili" + "Vipakuzi" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index fdd081bb..0061f59a 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -55,4 +55,5 @@ "เหลืออีก %s" "ไม่สามารถเปิดไฟล์ได้" + "ดาวน์โหลด" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 4580be6e..5e31ce80 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -55,4 +55,5 @@ "%s ang natitira" "Hindi mabuksan ang file" + "Mga Download" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 08810600..cb9d1d65 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -55,4 +55,5 @@ "%s kaldı" "Dosya açılamıyor" + "İndirilenler" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index ab9e9fab..053e64c7 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -55,4 +55,5 @@ "Залишилося %s" "Неможливо відкрити файл" + "Завантаження" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 3c992302..09fb4d39 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -55,4 +55,5 @@ "Còn lại %s" "Không thể mở tệp" + "Bản tải xuống" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 3cf07200..dc5bcd8f 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -55,4 +55,5 @@ "剩余时间:%s" "无法打开文件" + "下载内容" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index e30deec9..afbc26e2 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -55,4 +55,5 @@ "剩餘 %s" "無法開啟檔案" + "下載內容" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index f61c5219..11452d74 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -55,4 +55,5 @@ "%s asele" "Ayikwazi ukuvula ifayela" + "Okulandiwe" -- cgit v1.2.3 From d093f16ea904bb5ca2500a07d8b88d83c39661ad Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Wed, 14 Aug 2013 16:16:53 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I80e4239eec1873fb877585bce5a52f50755b2655 Auto-generated-cl: translation import --- res/values-sk/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 768e45be..0bfd6ea0 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -55,5 +55,5 @@ "Zostáva: %s" "Súbor sa nepodarilo otvoriť" - "Prevzaté položky" + "Prevzaté súbory" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index afbc26e2..aeedddd2 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -55,5 +55,5 @@ "剩餘 %s" "無法開啟檔案" - "下載內容" + "下載項目" -- cgit v1.2.3 From 8c9cef79df1ddcd971a0a0775cef774c17a5081c Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 15 Aug 2013 16:23:09 -0700 Subject: Delegate to documents UI; improve contents. When Downloads app is launched, delegate to new documents management UI. Use DownloadManager public API to match the contents of the existing Downloads UI. Bug: 10329983 Change-Id: Iaa1a1dc013cfe3b17d31ecc764d4c4cc13f62258 --- res/values/strings.xml | 10 ++ src/com/android/providers/downloads/Constants.java | 3 + .../downloads/DownloadStorageProvider.java | 121 +++++++++++++-------- ui/AndroidManifest.xml | 6 +- .../providers/downloads/ui/DownloadList.java | 12 ++ 5 files changed, 103 insertions(+), 49 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 2981047c..620e3fad 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -216,4 +216,14 @@ Downloads + + Queued + + In progress + + Unsuccessful + diff --git a/src/com/android/providers/downloads/Constants.java b/src/com/android/providers/downloads/Constants.java index 08ef4665..733c88c7 100644 --- a/src/com/android/providers/downloads/Constants.java +++ b/src/com/android/providers/downloads/Constants.java @@ -174,4 +174,7 @@ public class Constants { /** Enable super-verbose logging */ private static final boolean LOCAL_LOGVV = false; public static final boolean LOGVV = LOCAL_LOGVV && LOGV; + + public static final String STORAGE_AUTHORITY = "com.android.providers.downloads.storage"; + public static final String STORAGE_ROOT = "downloads"; } diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 7b6d1521..4883107f 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -17,9 +17,10 @@ package com.android.providers.downloads; import android.app.DownloadManager; +import android.app.DownloadManager.Query; import android.content.ContentProvider; -import android.content.ContentUris; import android.content.ContentValues; +import android.content.Context; import android.content.UriMatcher; import android.database.Cursor; import android.database.MatrixCursor; @@ -29,9 +30,9 @@ import android.os.ParcelFileDescriptor; import android.provider.BaseColumns; import android.provider.DocumentsContract; import android.provider.DocumentsContract.DocumentColumns; +import android.provider.DocumentsContract.Documents; import android.provider.DocumentsContract.RootColumns; -import android.provider.Downloads; -import android.util.Log; +import android.provider.DocumentsContract.Roots; import libcore.io.IoUtils; @@ -42,7 +43,8 @@ import java.io.FileNotFoundException; * contents. */ public class DownloadStorageProvider extends ContentProvider { - private static final String AUTHORITY = "com.android.providers.downloads.storage"; + public static final String AUTHORITY = Constants.STORAGE_AUTHORITY; + public static final String ROOT = Constants.STORAGE_ROOT; private static final UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); @@ -51,6 +53,9 @@ public class DownloadStorageProvider extends ContentProvider { private static final int URI_DOCS_ID = 3; private static final int URI_DOCS_ID_CONTENTS = 4; + private DownloadManager mDm; + private DownloadManager.Query mBaseQuery; + static { sMatcher.addURI(AUTHORITY, "roots", URI_ROOTS); sMatcher.addURI(AUTHORITY, "roots/*", URI_ROOTS_ID); @@ -60,6 +65,10 @@ public class DownloadStorageProvider extends ContentProvider { @Override public boolean onCreate() { + mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); + mDm.setAccessAllDownloads(true); + mBaseQuery = new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true); + return true; } @@ -91,16 +100,15 @@ public class DownloadStorageProvider extends ContentProvider { final String docId = DocumentsContract.getDocId(uri); final MatrixCursor result = new MatrixCursor(docsProjection); - if (DocumentsContract.ROOT_DOC_ID.equals(docId)) { + if (Documents.DOC_ID_ROOT.equals(docId)) { includeDefaultDocument(result); } else { // Delegate to real provider final long token = Binder.clearCallingIdentity(); Cursor cursor = null; try { - final Uri downloadUri = getDownloadUriFromDocument(docId); - cursor = getContext() - .getContentResolver().query(downloadUri, null, null, null, null); + cursor = mDm.query( + new Query().setFilterById(getDownloadFromDocument(docId))); if (cursor.moveToFirst()) { includeDownloadFromCursor(result, cursor); } @@ -115,17 +123,15 @@ public class DownloadStorageProvider extends ContentProvider { final String docId = DocumentsContract.getDocId(uri); final MatrixCursor result = new MatrixCursor(docsProjection); - if (!DocumentsContract.ROOT_DOC_ID.equals(docId)) { + if (!Documents.DOC_ID_ROOT.equals(docId)) { throw new UnsupportedOperationException("Unsupported Uri " + uri); } // Delegate to real provider - // TODO: filter visible downloads? final long token = Binder.clearCallingIdentity(); Cursor cursor = null; try { - cursor = getContext().getContentResolver() - .query(Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, null, null, null, null); + cursor = mDm.query(mBaseQuery); while (cursor.moveToNext()) { includeDownloadFromCursor(result, cursor); } @@ -142,8 +148,8 @@ public class DownloadStorageProvider extends ContentProvider { } private void includeDefaultRoot(MatrixCursor result) { - final int rootType = DocumentsContract.ROOT_TYPE_SHORTCUT; - final String rootId = "downloads"; + final int rootType = Roots.ROOT_TYPE_SHORTCUT; + final String rootId = ROOT; final int icon = 0; final String title = getContext().getString(R.string.root_downloads); final String summary = null; @@ -156,10 +162,10 @@ public class DownloadStorageProvider extends ContentProvider { private void includeDefaultDocument(MatrixCursor result) { final long id = Long.MIN_VALUE; - final String docId = DocumentsContract.ROOT_DOC_ID; + final String docId = Documents.DOC_ID_ROOT; final String displayName = getContext().getString(R.string.root_downloads); final String summary = null; - final String mimeType = DocumentsContract.MIME_TYPE_DIRECTORY; + final String mimeType = Documents.MIME_TYPE_DIR; final long size = -1; final long lastModified = -1; final int flags = 0; @@ -169,35 +175,56 @@ public class DownloadStorageProvider extends ContentProvider { } private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { - final long id = cursor.getLong(cursor.getColumnIndexOrThrow(Downloads.Impl._ID)); + final long id = cursor.getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ID)); final String docId = getDocumentFromDownload(id); final String displayName = cursor.getString( - cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_TITLE)); - final String summary = cursor.getString( - cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_DESCRIPTION)); + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TITLE)); + String summary = cursor.getString( + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_DESCRIPTION)); String mimeType = cursor.getString( - cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_MIME_TYPE)); + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE)); if (mimeType == null) { mimeType = "application/octet-stream"; } + Long size = null; final int status = cursor.getInt( - cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_STATUS)); - final long size; - if (Downloads.Impl.isStatusCompleted(status)) { - size = cursor.getLong(cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_TOTAL_BYTES)); - } else { - size = -1; + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS)); + switch (status) { + case DownloadManager.STATUS_SUCCESSFUL: + size = cursor.getLong( + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); + if (size == -1) { + size = null; + } + break; + case DownloadManager.STATUS_PAUSED: + mimeType = null; + summary = getContext().getString(R.string.download_queued); + break; + case DownloadManager.STATUS_PENDING: + mimeType = null; + summary = getContext().getString(R.string.download_queued); + break; + case DownloadManager.STATUS_RUNNING: + mimeType = null; + summary = getContext().getString(R.string.download_running); + break; + case DownloadManager.STATUS_FAILED: + default: + mimeType = null; + summary = getContext().getString(R.string.download_error); + break; } - int flags = DocumentsContract.FLAG_SUPPORTS_DELETE; - if (mimeType.startsWith("image/")) { - flags |= DocumentsContract.FLAG_SUPPORTS_THUMBNAIL; + int flags = Documents.FLAG_SUPPORTS_DELETE; + if (mimeType != null && mimeType.startsWith("image/")) { + flags |= Documents.FLAG_SUPPORTS_THUMBNAIL; } final long lastModified = cursor.getLong( - cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_LAST_MODIFICATION)); + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)); result.addRow(new Object[] { id, displayName, size, docId, mimeType, lastModified, flags, summary }); @@ -206,22 +233,27 @@ public class DownloadStorageProvider extends ContentProvider { @Override public String getType(Uri uri) { switch (sMatcher.match(uri)) { + case URI_ROOTS: { + return Roots.MIME_TYPE_DIR; + } + case URI_ROOTS_ID: { + return Roots.MIME_TYPE_ITEM; + } case URI_DOCS_ID: { final String docId = DocumentsContract.getDocId(uri); - if (DocumentsContract.ROOT_DOC_ID.equals(docId)) { - return DocumentsContract.MIME_TYPE_DIRECTORY; + if (Documents.DOC_ID_ROOT.equals(docId)) { + return Documents.MIME_TYPE_DIR; } else { // Delegate to real provider final long token = Binder.clearCallingIdentity(); Cursor cursor = null; String mimeType = null; try { - final Uri downloadUri = getDownloadUriFromDocument(docId); - cursor = getContext().getContentResolver() - .query(downloadUri, null, null, null, null); + cursor = mDm.query( + new Query().setFilterById(getDownloadFromDocument(docId))); if (cursor.moveToFirst()) { mimeType = cursor.getString( - cursor.getColumnIndexOrThrow(Downloads.Impl.COLUMN_MIME_TYPE)); + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE)); } } finally { IoUtils.closeQuietly(cursor); @@ -239,11 +271,6 @@ public class DownloadStorageProvider extends ContentProvider { } } - private Uri getDownloadUriFromDocument(String docId) { - return ContentUris.withAppendedId( - Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI, getDownloadFromDocument(docId)); - } - private long getDownloadFromDocument(String docId) { return Long.parseLong(docId.substring(docId.indexOf(':') + 1)); } @@ -258,11 +285,14 @@ public class DownloadStorageProvider extends ContentProvider { case URI_DOCS_ID: { final String docId = DocumentsContract.getDocId(uri); + if (!"r".equals(mode)) { + throw new IllegalArgumentException("Downloads are read-only"); + } + // Delegate to real provider final long token = Binder.clearCallingIdentity(); try { - final Uri downloadUri = getDownloadUriFromDocument(docId); - return getContext().getContentResolver().openFileDescriptor(downloadUri, mode); + return mDm.openDownloadedFile(getDownloadFromDocument(docId)); } finally { Binder.restoreCallingIdentity(token); } @@ -291,8 +321,7 @@ public class DownloadStorageProvider extends ContentProvider { // Delegate to real provider // TODO: only storage UI should be allowed to delete? - final Uri downloadUri = getDownloadUriFromDocument(docId); - getContext().getContentResolver().delete(downloadUri, null, null); + mDm.remove(getDownloadFromDocument(docId)); } default: { throw new UnsupportedOperationException("Unsupported Uri " + uri); diff --git a/ui/AndroidManifest.xml b/ui/AndroidManifest.xml index f707dfbd..61669154 100644 --- a/ui/AndroidManifest.xml +++ b/ui/AndroidManifest.xml @@ -13,9 +13,9 @@ android:supportsRtl="true" android:requiredForAllUsers="true"> - + diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index 05b5d757..57530474 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -33,6 +33,7 @@ import android.os.Environment; import android.os.Handler; import android.os.Parcelable; import android.provider.BaseColumns; +import android.provider.DocumentsContract; import android.provider.Downloads; import android.util.Log; import android.util.SparseBooleanArray; @@ -148,6 +149,17 @@ public class DownloadList extends Activity { @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); + + // Trampoline over to new management UI + final Intent intent = new Intent(Intent.ACTION_MANAGE_DOCUMENT); + intent.setData(DocumentsContract.buildRootUri( + Constants.STORAGE_AUTHORITY, Constants.STORAGE_ROOT)); + startActivity(intent); + finish(); + } + + public void onCreateLegacy(Bundle icicle) { + super.onCreate(icicle); setFinishOnTouchOutside(true); setupViews(); -- cgit v1.2.3 From af760c0b5d892441540bc462fd6ee1ae98fee636 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sat, 17 Aug 2013 15:23:34 -0700 Subject: Support custom documents query projections. Uses new MatrixCursor.RowBuilder.offer() to support custom projections. Also query MIME types directly so they're always consistent. Bug: 10329983 Change-Id: I724b26e008f6ffb85940e009a916b969ead42fcd --- AndroidManifest.xml | 2 +- src/com/android/providers/downloads/Constants.java | 2 +- .../downloads/DownloadStorageProvider.java | 119 ++++++++++----------- 3 files changed, 56 insertions(+), 67 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index f1ad40ee..49f039ef 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -81,7 +81,7 @@ diff --git a/src/com/android/providers/downloads/Constants.java b/src/com/android/providers/downloads/Constants.java index 733c88c7..3fbd400f 100644 --- a/src/com/android/providers/downloads/Constants.java +++ b/src/com/android/providers/downloads/Constants.java @@ -175,6 +175,6 @@ public class Constants { private static final boolean LOCAL_LOGVV = false; public static final boolean LOGVV = LOCAL_LOGVV && LOGV; - public static final String STORAGE_AUTHORITY = "com.android.providers.downloads.storage"; + public static final String STORAGE_AUTHORITY = "com.android.providers.downloads.documents"; public static final String STORAGE_ROOT = "downloads"; } diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 4883107f..9ce1199e 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -24,10 +24,10 @@ import android.content.Context; import android.content.UriMatcher; import android.database.Cursor; import android.database.MatrixCursor; +import android.database.MatrixCursor.RowBuilder; import android.net.Uri; import android.os.Binder; import android.os.ParcelFileDescriptor; -import android.provider.BaseColumns; import android.provider.DocumentsContract; import android.provider.DocumentsContract.DocumentColumns; import android.provider.DocumentsContract.Documents; @@ -43,8 +43,8 @@ import java.io.FileNotFoundException; * contents. */ public class DownloadStorageProvider extends ContentProvider { - public static final String AUTHORITY = Constants.STORAGE_AUTHORITY; - public static final String ROOT = Constants.STORAGE_ROOT; + private static final String AUTHORITY = Constants.STORAGE_AUTHORITY; + private static final String ROOT = Constants.STORAGE_ROOT; private static final UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); @@ -53,9 +53,6 @@ public class DownloadStorageProvider extends ContentProvider { private static final int URI_DOCS_ID = 3; private static final int URI_DOCS_ID_CONTENTS = 4; - private DownloadManager mDm; - private DownloadManager.Query mBaseQuery; - static { sMatcher.addURI(AUTHORITY, "roots", URI_ROOTS); sMatcher.addURI(AUTHORITY, "roots/*", URI_ROOTS_ID); @@ -63,6 +60,19 @@ public class DownloadStorageProvider extends ContentProvider { sMatcher.addURI(AUTHORITY, "roots/*/docs/*/contents", URI_DOCS_ID_CONTENTS); } + private static final String[] ALL_ROOTS_COLUMNS = new String[] { + RootColumns.ROOT_ID, RootColumns.ROOT_TYPE, RootColumns.ICON, RootColumns.TITLE, + RootColumns.SUMMARY, RootColumns.AVAILABLE_BYTES + }; + + private static final String[] ALL_DOCUMENTS_COLUMNS = new String[] { + DocumentColumns.DOC_ID, DocumentColumns.DISPLAY_NAME, DocumentColumns.SIZE, + DocumentColumns.MIME_TYPE, DocumentColumns.LAST_MODIFIED, DocumentColumns.FLAGS + }; + + private DownloadManager mDm; + private DownloadManager.Query mBaseQuery; + @Override public boolean onCreate() { mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); @@ -75,30 +85,23 @@ public class DownloadStorageProvider extends ContentProvider { @Override public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) { - - // TODO: support custom projections - final String[] rootsProjection = new String[] { - BaseColumns._ID, RootColumns.ROOT_ID, RootColumns.ROOT_TYPE, RootColumns.ICON, - RootColumns.TITLE, RootColumns.SUMMARY, RootColumns.AVAILABLE_BYTES }; - final String[] docsProjection = new String[] { - BaseColumns._ID, DocumentColumns.DISPLAY_NAME, DocumentColumns.SIZE, - DocumentColumns.DOC_ID, DocumentColumns.MIME_TYPE, DocumentColumns.LAST_MODIFIED, - DocumentColumns.FLAGS, DocumentColumns.SUMMARY }; - switch (sMatcher.match(uri)) { case URI_ROOTS: { - final MatrixCursor result = new MatrixCursor(rootsProjection); + final MatrixCursor result = new MatrixCursor( + projection != null ? projection : ALL_ROOTS_COLUMNS); includeDefaultRoot(result); return result; } case URI_ROOTS_ID: { - final MatrixCursor result = new MatrixCursor(rootsProjection); + final MatrixCursor result = new MatrixCursor( + projection != null ? projection : ALL_ROOTS_COLUMNS); includeDefaultRoot(result); return result; } case URI_DOCS_ID: { final String docId = DocumentsContract.getDocId(uri); - final MatrixCursor result = new MatrixCursor(docsProjection); + final MatrixCursor result = new MatrixCursor( + projection != null ? projection : ALL_DOCUMENTS_COLUMNS); if (Documents.DOC_ID_ROOT.equals(docId)) { includeDefaultDocument(result); @@ -121,7 +124,8 @@ public class DownloadStorageProvider extends ContentProvider { } case URI_DOCS_ID_CONTENTS: { final String docId = DocumentsContract.getDocId(uri); - final MatrixCursor result = new MatrixCursor(docsProjection); + final MatrixCursor result = new MatrixCursor( + projection != null ? projection : ALL_DOCUMENTS_COLUMNS); if (!Documents.DOC_ID_ROOT.equals(docId)) { throw new UnsupportedOperationException("Unsupported Uri " + uri); @@ -148,30 +152,17 @@ public class DownloadStorageProvider extends ContentProvider { } private void includeDefaultRoot(MatrixCursor result) { - final int rootType = Roots.ROOT_TYPE_SHORTCUT; - final String rootId = ROOT; - final int icon = 0; - final String title = getContext().getString(R.string.root_downloads); - final String summary = null; - final long availableBytes = -1; - - result.addRow(new Object[] { - rootId.hashCode(), rootId, rootType, icon, title, summary, - availableBytes }); + final RowBuilder row = result.newRow(); + row.offer(RootColumns.ROOT_ID, ROOT); + row.offer(RootColumns.ROOT_TYPE, Roots.ROOT_TYPE_SHORTCUT); + row.offer(RootColumns.TITLE, getContext().getString(R.string.root_downloads)); } private void includeDefaultDocument(MatrixCursor result) { - final long id = Long.MIN_VALUE; - final String docId = Documents.DOC_ID_ROOT; - final String displayName = getContext().getString(R.string.root_downloads); - final String summary = null; - final String mimeType = Documents.MIME_TYPE_DIR; - final long size = -1; - final long lastModified = -1; - final int flags = 0; - - result.addRow(new Object[] { - id, displayName, size, docId, mimeType, lastModified, flags, summary }); + final RowBuilder row = result.newRow(); + row.offer(DocumentColumns.DOC_ID, Documents.DOC_ID_ROOT); + row.offer(DocumentColumns.DISPLAY_NAME, getContext().getString(R.string.root_downloads)); + row.offer(DocumentColumns.MIME_TYPE, Documents.MIME_TYPE_DIR); } private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { @@ -226,8 +217,20 @@ public class DownloadStorageProvider extends ContentProvider { final long lastModified = cursor.getLong( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)); - result.addRow(new Object[] { - id, displayName, size, docId, mimeType, lastModified, flags, summary }); + final RowBuilder row = result.newRow(); + row.offer(DocumentColumns.DOC_ID, docId); + row.offer(DocumentColumns.DISPLAY_NAME, displayName); + row.offer(DocumentColumns.SIZE, size); + row.offer(DocumentColumns.MIME_TYPE, mimeType); + row.offer(DocumentColumns.LAST_MODIFIED, lastModified); + row.offer(DocumentColumns.FLAGS, flags); + } + + private interface TypeQuery { + final String[] PROJECTION = { + DocumentColumns.MIME_TYPE }; + + final int MIME_TYPE = 0; } @Override @@ -240,29 +243,15 @@ public class DownloadStorageProvider extends ContentProvider { return Roots.MIME_TYPE_ITEM; } case URI_DOCS_ID: { - final String docId = DocumentsContract.getDocId(uri); - if (Documents.DOC_ID_ROOT.equals(docId)) { - return Documents.MIME_TYPE_DIR; - } else { - // Delegate to real provider - final long token = Binder.clearCallingIdentity(); - Cursor cursor = null; - String mimeType = null; - try { - cursor = mDm.query( - new Query().setFilterById(getDownloadFromDocument(docId))); - if (cursor.moveToFirst()) { - mimeType = cursor.getString( - cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE)); - } - } finally { - IoUtils.closeQuietly(cursor); - Binder.restoreCallingIdentity(token); - } - - if (mimeType == null) { - mimeType = "application/octet-stream"; + final Cursor cursor = query(uri, TypeQuery.PROJECTION, null, null, null); + try { + if (cursor.moveToFirst()) { + return cursor.getString(TypeQuery.MIME_TYPE); + } else { + return null; } + } finally { + IoUtils.closeQuietly(cursor); } } default: { -- cgit v1.2.3 From ed08089f6dccae69eabfaa3383c5007f0dddc6a5 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sun, 18 Aug 2013 21:12:27 -0700 Subject: Clear identity when deleting downloads. Bug: 10329983 Change-Id: Iff3db6e5210ae9f33ec13af91561475b269dcc40 --- src/com/android/providers/downloads/DownloadStorageProvider.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 9ce1199e..f66f5260 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -310,7 +310,12 @@ public class DownloadStorageProvider extends ContentProvider { // Delegate to real provider // TODO: only storage UI should be allowed to delete? - mDm.remove(getDownloadFromDocument(docId)); + final long token = Binder.clearCallingIdentity(); + try { + return mDm.remove(getDownloadFromDocument(docId)); + } finally { + Binder.restoreCallingIdentity(token); + } } default: { throw new UnsupportedOperationException("Unsupported Uri " + uri); -- cgit v1.2.3 From 1771dc8a382864b48bcdc18726a589647e59643b Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 19 Aug 2013 13:44:10 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I50e9a4f3c74aafee403586ae58219a6d1ab40e4e Auto-generated-cl: translation import --- res/values-af/strings.xml | 3 +++ res/values-am/strings.xml | 3 +++ res/values-ar/strings.xml | 3 +++ res/values-az/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-be/strings.xml | 6 +++++ res/values-bg/strings.xml | 3 +++ res/values-ca/strings.xml | 3 +++ res/values-cs/strings.xml | 3 +++ res/values-da/strings.xml | 3 +++ res/values-de/strings.xml | 3 +++ res/values-el/strings.xml | 3 +++ res/values-en-rGB/strings.xml | 3 +++ res/values-en-rIN/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-es-rUS/strings.xml | 3 +++ res/values-es/strings.xml | 3 +++ res/values-et/strings.xml | 3 +++ res/values-fa/strings.xml | 3 +++ res/values-fi/strings.xml | 3 +++ res/values-fr-rCA/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-fr/strings.xml | 3 +++ res/values-hi/strings.xml | 3 +++ res/values-hr/strings.xml | 3 +++ res/values-hu/strings.xml | 3 +++ res/values-hy/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-in/strings.xml | 3 +++ res/values-it/strings.xml | 3 +++ res/values-iw/strings.xml | 3 +++ res/values-ja/strings.xml | 3 +++ res/values-ka/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-km/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-ko/strings.xml | 3 +++ res/values-lo/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-lt/strings.xml | 3 +++ res/values-lv/strings.xml | 3 +++ res/values-mn/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-ms/strings.xml | 3 +++ res/values-nb/strings.xml | 3 +++ res/values-ne/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-nl/strings.xml | 3 +++ res/values-pl/strings.xml | 3 +++ res/values-pt-rPT/strings.xml | 3 +++ res/values-pt/strings.xml | 3 +++ res/values-ro/strings.xml | 3 +++ res/values-ru/strings.xml | 3 +++ res/values-si/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-sk/strings.xml | 3 +++ res/values-sl/strings.xml | 3 +++ res/values-sr/strings.xml | 3 +++ res/values-sv/strings.xml | 3 +++ res/values-sw/strings.xml | 3 +++ res/values-th/strings.xml | 3 +++ res/values-tl/strings.xml | 3 +++ res/values-tr/strings.xml | 3 +++ res/values-uk/strings.xml | 3 +++ res/values-vi/strings.xml | 3 +++ res/values-zh-rCN/strings.xml | 3 +++ res/values-zh-rHK/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-zh-rTW/strings.xml | 3 +++ res/values-zu/strings.xml | 3 +++ 59 files changed, 829 insertions(+) create mode 100644 res/values-az/strings.xml create mode 100644 res/values-en-rIN/strings.xml create mode 100644 res/values-fr-rCA/strings.xml create mode 100644 res/values-hy/strings.xml create mode 100644 res/values-ka/strings.xml create mode 100644 res/values-km/strings.xml create mode 100644 res/values-lo/strings.xml create mode 100644 res/values-mn/strings.xml create mode 100644 res/values-ne/strings.xml create mode 100644 res/values-si/strings.xml create mode 100644 res/values-zh-rHK/strings.xml diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index ed86c359..281b0de0 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -56,4 +56,7 @@ "%s oor" "Kan nie lêer oopmaak nie" "Aflaaisels" + "In waglys" + "Besig" + "Onsuksesvol" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index fcaef40f..a490b8f9 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -56,4 +56,7 @@ "%s ቀርቷል" "ፋይል መክፈት አይቻልም" "የወረዱ" + "ወረፋ ይዟል" + "በሂደት ላይ" + "ስኬታማ ያልሆነ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 4822443f..9c95950b 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -56,4 +56,7 @@ "المدة المتبقية: %s" "لا يمكن فتح الملف" "التنزيلات" + "في قائمة الانتظار" + "قيد التقدم" + "أخفق الاتصال بالشبكة" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml new file mode 100644 index 00000000..cb1bb740 --- /dev/null +++ b/res/values-az/strings.xml @@ -0,0 +1,62 @@ + + + + + "Endirmə İdarəçisi" + "Endirmə idarəçisinə daxil ol." + "Tətbiqə faylları endirmək üçün endirmə idarçisinə daxil olmağa imkan verir. Zərərli tətbiqlər bundan endirmələri pozmaq və özəl məlumatlara daxil olmaq üçün istifadə edə bilər." + "Ətraflı endirmə idarəçisi funksiyaları." + "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." + "Endirmə məlumatı göndər." + "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." + "USB yaddaşına bütün endirmələrə baxın" + "SD karta endirmələrə baxın" + "Tətbiqə hansı tətbiqin endirdiyindən asılı olmayaraq yaddaş kartındakı endirilən faylları görmə imkanı verir." + "Endirmə keşində ehtiyat yer mühafizə et" + "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." + "xəbərdarlıq etmədən faylları endir" + "Bu tətbiq istifadəçiyə hər hansı bir məlumat göstərmədən faylları endirmə idarəçisi vasitəsi ilə endirmək imkanı verir." + "Sistemdəki bütün endirilənlərə gir" + "Tətbiqə başqa bir tətbiq vasitəsi ilə başladılan endirmələri göstərmək və dəyişdirmək imkanı verir." + "<Başlıqsız>" + "Endirmə tamamlandı." + "Endirmə uğursuz oldu." + "Endirmə həcmi Wi-Fi tələb edir." + "Arxa fonda dayandırıldı." + "Endirmə operator şəbəkə üçün çox böyükdür" + "Bu %s 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 %s toxunun." + "Daha sonra endirmək üçün növbəyə salmaq istəyirsiniz?" + "Bu %s 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 %s toxunun." + "Növbəyə sal" + "Ləğv et" + "İndi başlat" + "%d %%" + + "1 fayl endirilir" + "%d fayl endirilir" + + + "1 fayl gözləyir" + "%d fayl gözləyir" + + "%s qalır" + "Fayl açılmır" + "Endirmələr" + "Növbəyə salınıb" + "Davam edir" + "Uğursuz" + diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 7f61f3f3..84ac21f6 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -57,4 +57,10 @@ "Не атрымлiваецца адкрыць файл" + + + + + + diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 81d44e64..85b54fb0 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -56,4 +56,7 @@ "Оставащо време: %s" "Файлът не може да се отвори" "Изтегляния" + "На опашка" + "В ход" + "Неуспешно" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index ba441957..14ae6690 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -56,4 +56,7 @@ "Temps restant: %s" "No es pot obrir el fitxer" "Baixades" + "En cua" + "En curs" + "Incorrecte" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index a81fccce..8f94466b 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -56,4 +56,7 @@ "%s do stažení" "Soubor nelze otevřít" "Ke stažení" + "Ve frontě" + "Probíhá" + "Neúspěšné" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index c983fbb9..a526beb9 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -56,4 +56,7 @@ "%s tilbage" "Filen kan ikke åbnes" "Downloads" + "I kø" + "I gang" + "Mislykkedes" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index d8601a0b..454aedd9 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -56,4 +56,7 @@ "Noch %s" "Datei kann nicht geöffnet werden." "Downloads" + "In der Warteschlange" + "In Bearbeitung" + "Nicht erfolgreich" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 9b295342..5f0ebb5d 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -56,4 +56,7 @@ "Απομένουν %s" "Δεν είναι δυνατό το άνοιγμα του αρχείου" "Λήψεις" + "Σε ουρά" + "Σε εξέλιξη" + "Ανεπιτυχής" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index e891af52..80a78090 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -56,4 +56,7 @@ "%s left" "Can\'t open file" "Downloads" + "Queued" + "In progress" + "Unsuccessful" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml new file mode 100644 index 00000000..80a78090 --- /dev/null +++ b/res/values-en-rIN/strings.xml @@ -0,0 +1,62 @@ + + + + + "Download Manager" + "Access download manager." + "Allows the app to access the download manager and to use it to download files. Malicious apps can use this to disrupt downloads and access private information." + "Advanced download manager functions." + "Allows the app to access the download manager\'s advanced functions. Malicious apps can use this to disrupt downloads and access private information." + "Send download notifications." + "Allows the app to send notifications about completed downloads. Malicious apps can use this to confuse other apps that download files." + "See all downloads to USB storage" + "See all downloads to SD card" + "Allows the app to see all downloads to the SD card, regardless of which app downloaded them." + "Reserve space in the download cache" + "Allows the app to download files to the download cache, which can\'t be deleted automatically when the download manager needs more space." + "download files without notification" + "Allows the application to download files through the download manager without any notification being shown to the user." + "Access all system downloads" + "Allows the app to view and modify all downloads initiated by any app on the system." + "<Untitled>" + "Download complete." + "Download unsuccessful." + "Download size requires Wi-Fi" + "Paused in background" + "Download too large for operator network" + "You must use Wi-Fi to complete this %s download. \n\nTouch %s to start this download the next time that you\'re connected to a Wi-Fi network." + "Queue for download later?" + "Starting this %s 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 %s to start this download the next time that you\'re connected to a Wi-Fi network." + "Queue" + "Cancel" + "Start now" + "%d%%" + + "1 file downloading" + "%d files downloading" + + + "1 file waiting" + "%d files waiting" + + "%s left" + "Can\'t open file" + "Downloads" + "Queued" + "In progress" + "Unsuccessful" + diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 8f3b4926..227f8dc4 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -56,4 +56,7 @@ "%s restantes" "No se puede abrir el archivo." "Descargas" + "En cola" + "En curso" + "Error" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 66d6064e..576dfd67 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -56,4 +56,7 @@ "Tiempo restante: %s" "Error al abrir el archivo" "Descargas" + "En cola" + "En curso" + "No se ha completado" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index cb6b188f..f413eddf 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -56,4 +56,7 @@ "Jäänud: %s" "Faili ei saa avada" "Allalaadimised" + "Järjekorras" + "Töötlemisel" + "Ebaõnnestus" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index e7a69929..02f1cc29 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -56,4 +56,7 @@ "%s باقیمانده" "فایل باز نمی‌شود" "دانلودها" + "در صف" + "در حال انجام" + "ناموفق" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index d16e962a..4b8b30b6 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -56,4 +56,7 @@ "%s jäljellä" "Tiedostoa ei voi avata" "Lataukset" + "Jonossa" + "Kesken" + "Epäonnistui" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml new file mode 100644 index 00000000..9a470125 --- /dev/null +++ b/res/values-fr-rCA/strings.xml @@ -0,0 +1,62 @@ + + + + + "Gestionnaire de téléchargement" + "Accéder au gestionnaire de téléchargement." + "Permet à l\'application d\'accéder au gestionnaire de téléchargement et de l\'utiliser pour télécharger des fichiers. Des applications malveillantes peuvent utiliser cette fonctionnalité pour perturber les téléchargements et accéder à des données confidentielles." + "Fonctions avancées du gestionnaire de téléchargement." + "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." + "Envoyer des notifications de téléchargement." + "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." + "Voir tous les téléchargements sur la mémoire de stockage USB" + "Voir tous les téléchargements effectués sur la carte SD" + "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." + "Réserver de l\'espace dans le cache de téléchargement" + "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." + "télécharger des fichiers sans envoyer de notification" + "Permet à l\'application de télécharger des fichiers dans le gestionnaire de téléchargement sans afficher de notification à l\'attention de l\'utilisateur." + "Accéder à tous les téléchargements système" + "Permet à l\'application d\'afficher et de modifier tous les téléchargements lancés par n\'importe quelle application du système." + "<Sans_titre>" + "Téléchargement terminé." + "Échec du téléchargement" + "Taille du fichier requiert Wi-Fi." + "Interrompu en arr.-plan." + "Téléchargement trop volumineux pour l\'opérateur" + "Vous devez utiliser le Wi-Fi pour finaliser ce téléchargement de %s . \n\nAppuyez sur %s pour le lancer lors de votre prochaine connexion à un réseau Wi-Fi." + "Ajouter à la file d\'attente des téléchargements?" + "Ce téléchargement (%s ) 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 %s pour le lancer lors de votre prochaine connexion au Wi-Fi." + "File d\'attente" + "Annuler" + "Commencer maintenant" + "%d %%" + + "Téléchargement d\'un fichier" + "Téléchargement de %d fichiers" + + + "1 fichier en attente" + "%d fichiers en attente" + + "Temps restant : %s" + "Impossible d\'ouvrir le fichier." + "Téléchargements" + "Placé en file d\'attente" + "En cours de traitement" + "Échec" + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 187f8108..c50e2a9f 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -56,4 +56,7 @@ "Temps restant : %s" "Impossible d\'ouvrir le fichier." "Téléchargements" + "Placé en file d\'attente" + "En cours" + "Échec" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 4257c4e0..b0bbcd61 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -56,4 +56,7 @@ "%s शेष" "फ़ाइल नहीं खोली जा सकती" "डाउनलोड" + "कतारबद्ध" + "जारी है" + "असफल" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 428d47e7..1f99e92b 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -56,4 +56,7 @@ "Još %s" "Datoteka se ne može otvoriti" "Preuzimanja" + "Na čekanju" + "U tijeku" + "Neuspješno" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 41819fda..b75dd200 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -56,4 +56,7 @@ "%s van hátra" "A fájlt nem lehet megnyitni." "Letöltések" + "Várólistán" + "Folyamatban" + "Sikertelen" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml new file mode 100644 index 00000000..750ea405 --- /dev/null +++ b/res/values-hy/strings.xml @@ -0,0 +1,62 @@ + + + + + "Ներբեռնման կառավարիչ" + "Գործարկել ներբեռնման կառավարիչը:" + "Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարիչը և կիրառել ֆայլերի ներբեռնման համար: Վնասակար ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:" + "Ընդլայնված ներբեռնման կառավարչի գործառույթներ:" + "Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարչի ընդլայնված գործառույթները: Վնասակար ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:" + "Ուղարկել ներբեռնման ծանուցումներ:" + "Թույլատրում է հավելվածին ուղարկել ավարտված ներբեռնումների մասին ծանուցումներ: Վնասակար ծրագրերը կարող են օգտագործել սա՝ այլ ֆայլեր ներբեռնող ծրագրերը վնասելու համար:" + "Տեսնել USB կրիչի բոլոր ներբեռնումները" + "Տեսնել SD քարտի բոլոր ներբեռնումները" + "Թույլատրում է հավելվածին տեսնել SD քարտի բոլոր ներբեռնումները` անտեսելով, թե որ հավելվածն է ներբեռնել դրանք:" + "Խնայել ներբեռնման շտեմի տարածությունը" + "Թույլատրում է հավելվածին ներբեռնել ֆայլերը ներբեռնման շտեմ, որոնք հնարավոր չէ ավտոմատ ջնջել, երբ ներբեռնման կառավարիչը հավելյալ ծավալի կարիք ունի:" + "ներբեռնել ֆայլերը՝ առանց ծանուցման" + "Թույլատրում է հավելվածին ներբեռնել ֆայլեր ներբեռնման կառավարչի միջոցով՝ առանց օգտագործողին որևէ ծանուցում ցուցադրելու:" + "Օգտագործել բոլոր համակարգային ներբեռնումները" + "Թույլատրում է հավելվածին դիտել և փոփոխել բոլոր ներբեռնումները` կապված համակարգի ցանկացած ծրագրի հետ:" + "<Անվերնագիր>" + "Ներբեռնումն ավարտված է:" + "Ներբեռնումը ձախողվել է:" + "Ներբեռնման ծավալը պահանջում է Wi-Fi:" + "Ընդմիջված է հետնաշերտում:" + "Ներբեռնումը չափազանց մեծ է օպերատորի ցանցի համար" + "Դուք պետք է օգտագործեք Wi-Fi՝ այս %s ներբեռնումն ավարտելու համար: \n\nՀպեք %s ՝ սկսելու այս ներբեռնումը հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:" + "Հերթագրե՞լ ավելի ուշ ներբեռնելու համար:" + "Այս %s ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք %s ստորև` այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:" + "Հերթականություն" + "Չեղարկել" + "Մեկնարկել հիմա" + "%d%%" + + "1 ֆայլ ներբեռնվում է" + "%d ֆայլ ներբեռնվում է" + + + "1 ֆայլ սպասում է" + "%d ֆայլ սպասում է" + + "մինչ ավարտը՝ %s" + "Հնարավոր չէ բացել ֆայլը" + "Ներբեռնումներ" + "Հերթագրված է" + "Ընթացքի մեջ է" + "Չի կատարվել" + diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 9faec70b..e1fffc27 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -56,4 +56,7 @@ "%s lagi" "Tidak dapat membuka file" "Unduhan" + "Diantrekan" + "Sedang berlangsung" + "Gagal" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 85c7cc8b..e7f42e85 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -56,4 +56,7 @@ "%s rimanenti" "Impossibile aprire il file" "Download" + "In coda" + "In corso" + "Operazione non riuscita" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index ef51d91f..0f308f3c 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -56,4 +56,7 @@ "%s נותרו" "לא ניתן לפתוח את הקובץ" "הורדות" + "בתור" + "מתבצע" + "נכשל" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index bafa104d..f136c9b3 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -56,4 +56,7 @@ "残り%s" "ファイルを開くことができません" "ダウンロード" + "キューに追加済み" + "処理中" + "失敗しました" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml new file mode 100644 index 00000000..25839d2b --- /dev/null +++ b/res/values-ka/strings.xml @@ -0,0 +1,62 @@ + + + + + "ჩამოტვირთვის მენეჯერი" + "ჩამოტვირთვის მენეჯერზე წვდომა." + "მიეცით აპლიკაციას ჩამოტვირთვის მენეჯერის წვდომისა და ფაილების ჩამოტვირთვებისთვის მისი გამოყენების უფლება. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ჩამოტვირთვის გაუმჯობესებული მენეჯერის ფუნქციები." + "მიეცით აპს ჩამოტვირთვის მენეჯერის გაუმჯობესებულ ფუნქციებზე წვდომის უფლება. ბოროტმოქმედმა აპებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ჩამოტვირთვის შეტყობინებების გაგზავნა." + "მიეცით აპს, უფლება, გააგზავნოს შეტყობინება დასრულებული ჩამოტვირთვების შესახებ. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ყველა ჩამოტვირთვის USB მეხსიერებაში ნახვა" + "ყველა ჩამოტვირთვის SD ბარათზე ნახვა" + "მიეცით აპს უფლება, ნახოს ყველა ჩამოტვირთვა SD ბარათზე, განურჩევლად იმისა, თუ რომელმა აპმა ჩამოტვირთა ისინი." + "ჩამოტვირთვის ქეშში სივრცის ამობრუნება" + "მიეცით აპს უფლება ჩამოტვირთოს ფაილები ჩამოტვირთულ ქეშში. მისი წაშლა ავტომატურად შეუძლებელია მაშინ, როდესაც ჩამოტვირთვის მენეჯერს მეტი სივრცე სჭირდება." + "ფაილების ჩამოტვირთვა შეტყობინებების გარეშე" + "მიეცით აპს უფლება, ჩამოტვირთოს ფაილები ჩამოტვირთვის მენეჯერიდან მომხმარებლისთვის შეტყობინების ჩვენების გარეშე." + "ყველა სისტემურ ჩამოტვირთვაზე წვდომა" + "მიეცით აპს უფლება ნახოს და შეცვალოს ნებისმიერი ჩამოტვირთვა, რომელიც ინიცირებული იყო სისტემის ნებისმიერი აპის მიერ." + "<უსათაურო>" + "ჩამოტვირთვა დასრულდა." + "წარუმატებელი ჩამოტვირთვა." + "ჩამოტვირთვის ზომა ითხოვს Wi-Fi-ს." + "უკანა ფონზე დაპაუზებული." + "ჩამოტვირთვა ოპერატორის ქსელისთვის ძალიან დიდია" + "ამ %s ჩამოტვირთვის განსახორციელებლად უნდა გამოიყენოთ WiFi. \n\nშეეხეთ %s , რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში." + "ჩააყენებთ ჩამოტვირთვების რიგში?" + "ამ %s ჩამოტვირთვის დაწყება ახლა შეამცირებს თქვენი ელემენტის სიცოცხლეს და/ან გამოიწვევს თქვენი მობილური ინტერნეტის ინტენსიურ გამოყენებას. ეს თავისთავად განაპირობებს თქვენი მობილური ოპერატორისთვის შესაბამისი საფასურის გადახდას თქვენი ინტერნეტ გეგმიდან გამომდინარე. \n\n შეეხეთ %s, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში." + "რიგი" + "გაუქმება" + "დაწყება ახლავე" + "%d%%" + + "1 ფაილი იტვირთება" + "%d ფაილი იტვირთება" + + + "1 ფაილი მოლოდინის რეჟმშია" + "%d ფაილი მოლოდინის რეჟიმშია" + + "%s მარცხნივ" + "ფაილის გახსნა ვერ ხერხდება" + "ჩამოტვირთვები" + "რიგშია" + "მიმდინარეობს" + "ვერ განხორციელდა" + diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml new file mode 100644 index 00000000..8117899e --- /dev/null +++ b/res/values-km/strings.xml @@ -0,0 +1,62 @@ + + + + + "កម្មវិធី​ទាញ​យក" + "ប្រើ​កម្មវិធី​គ្រប់គ្រង​ការ​ទាញ​យក។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​កម្មវិធី​ទាញ​យក ដើម្បី​ទាញ​យក​ឯកសារ។ កម្មវិធី​មិន​ល្អ​ផ្សេងទៀត​អាច​ប្រើ​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។" + "មុខងារ​កម្មវិធី​គ្រប់គ្រង​ការ​ទាញ​យក​កម្រិត​ខ្ពស់។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​មុខងារ​កម្រិត​ខ្ពស់​របស់​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។" + "ផ្ញើ​ព័ត៌មាន​ការ​ទាញ​យក។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ផ្ញើ​ការ​ជូនដំណឹង​អំពី​ការ​បញ្ចប់​ការ​ទាញ​យក។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​រារាំង​កម្មវិធី​ទាញ​យក​ឯកសារ​ផ្សេងទៀត។" + "មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី" + "មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​កាត​អេសឌី" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​​មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ការ​អេសឌី ប្រសិនបើ​គ្មាន​កម្មវិធី​ទាញ​យក​វា។" + "បម្រុងទុក​ទំហំ​នៅ​ក្នុង​ឃ្លាំង​ទាញ​យក" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​ទៅកាន់​ឃ្លាំង​ទាញ​យក ដែល​មិន​អាច​លុប​ដោយ​ស្វ័យប្រវត្តិ ពេល​កម្មវិធី​ទាញ​យក​ត្រូវការ​ទំហំ​ច្រើន។" + "ទាញ​យក​ឯកសារ​ដោយ​មិន​បាច់​ជូនដំណឹង" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​តាម​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង​​ដោយ​មិន​បាច់​មាន​ការ​ជូន​ដំណឹង​ទៅ​អ្នកប្រើ។" + "ដំណើរការ​ទាញ​យក​​ប្រព័ន្ធ​ទាំងអស់" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​មើល និង​កែ​ការ​ទាញ​យក​ទាំងអស់​ដែល​បាន​ចាប់ផ្ដើម​ដោយ​កម្មវិធី​ណាមួយ​នៅ​លើ​ប្រព័ន្ធ។" + "<Untitled>" + "បាន​បញ្ចប់​ការ​ទាញ​យក។" + "ការ​ទាញ​យក​បាន​បរាជ័យ។" + "ទំហំ​ការ​ទាញ​យក​ត្រូវការ​វ៉ាយហ្វាយ។" + "បាន​ផ្អាក​នៅ​ផ្ទៃ​ខាងក្រោយ។" + "ការ​ទាញ​យក​គឺ​ធំ​ពេក​សម្រាប់​បណ្ដាញ​ប្រតិបត្តិករ" + "អ្នក​ត្រូវតែ​ប្រើ​វ៉ាយហ្វាយ​ដើម្បី​បញ្ចប់​ការ​ទាញ​យក %s ។ \n\nប៉ះ %s ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។" + "ដាក់​ជា​ជួរ​ដើម្បី​ទាញ​យក​បន្ទាប់?" + "ចាប់ផ្ដើម​ការ​ទាញ​យក %s ឥឡូវ​អាច​បណ្ដាលឲ្យ​ថ្ម​របស់​អ្នក​មាន​អាយុ​ខ្លី និង/ឬ​បង្ហាញ​ថា​លើស​ការ​ប្រើ​នៃ​តំណ​ភ្ជាប់​ទិន្នន័យ​ទូរស័ព្ទ​របស់​អ្នក ដែល​អាច​គិត​ប្រាក់​ដោយ​ប្រតិបត្តិករ​ទូរស័ព្ទ​អាស្រ័យ​តាម​គម្រោង​ទិន្នន័យ​របស់​អ្នក។\n\n ប៉ះ %s ខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។" + "ជួរ" + "បោះ​បង់" + "ចាប់ផ្ដើម​ឥឡូវ" + "%d%%" + + "កំពុង​ទាញ​យក​ឯកសារ ១" + "កំពុង​ទាញ​យក​ឯកសារ %d" + + + "កំពុង​រង់ចាំ​ឯកសារ ១" + "កំពុង​រង់ចាំ​ឯកសារ %d" + + "នៅសល់ %s" + "មិន​អាច​បើក​ឯកសារ" + "ទាញ​យក" + "​បាន​ដាក់​ក្នុង​ជួរ" + "កំពុង​ដំណើរការ" + "បាន​បរាជ័យ" + diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 380e254b..d2b5352c 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -56,4 +56,7 @@ "%s 남음" "파일을 열 수 없음" "다운로드" + "대기 중" + "진행 중" + "실패" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml new file mode 100644 index 00000000..3e2f2149 --- /dev/null +++ b/res/values-lo/strings.xml @@ -0,0 +1,62 @@ + + + + + "ໂຕຈັດການການດາວໂຫລດ" + "ເຂົ້າເຖິງໂຕຈັດການການດາວໂຫລດ." + "ອະນຸາຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງໂຕຈັດການການດາວໂຫລດ ແລະໃຊ້ມັນເພື່ອດາວໂຫລດໄຟລ໌. ແອັບຯທີ່ມີອັນຕະລາຍສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້." + "ຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ." + "ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້." + "ສົ່ງການແຈ້ງເຕືອນການດາວໂຫລດ." + "ອະນຸຍາດໃຫ້ແອັບຯ ສົ່ງການແຈ້ງເຕືອນເມື່ອດາວໂຫລດສຳເລັດແລ້ວ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ສ້າງຄວາມສັບສົນໃຫ້ແອັບຯ ອື່ນໆທີ່ດາວໂຫລດໄຟລ໌ໄດ້." + "ເບິ່ງການດາວໂຫລດທັງໝົດໃນບ່ອນຈັດເກັບຂໍ້ມູນ USB" + "ເບິ່ງການດາວໂຫລດທັງໝົດໃນ SD card" + "ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ເຫັນການດາວໂຫລດໃນ SD ກາດທັງໝົດ, ໂດຍບໍ່ກ່ຽວວ່າມັນດາວໂຫລດມາຈາກແອັບຯໃດ." + "ເນື້ອທີ່ສະຫງວນໃນບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ" + "ອະນຸຍາດໃຫ້ແອັບຯ ດາວໂຫລດໄຟລ໌ໄປຍັງບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ, ທີ່ບໍ່ສາມາດລຶບໂດຍອັດຕະໂນມັດ ຫາກໂຕຈັດການການດາວໂຫລດຕ້ອງການພື້ນທີ່ເພີ່ມ." + "ດາວໂຫລດໄຟລ໌ໂດຍບໍ່ແຈ້ງເຕືອນ" + "ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ດາວໂຫລດໄຟລ໌ຜ່ານໂຕຈັດການການດາວໂຫລດ ໂດຍບໍ່ແຈ້ງເຕືອນຜູ່ໃຊ້ແຕ່ຢ່າງໃດ." + "ເຂົ້າເຖິງການດາວໂຫລດທັງໝົດຂອງລະບົບ" + "ອະນຸຍາດໃຫ້ແອັບຯ ເບິ່ງ ແລະ ແກ້ໄຂການດາວໂຫລດທັງໝົດທີ່ເລີ່ມໂດຍທຸກໆແອັບຯໃນລະບົບ." + "<ບໍ່ມີຊື່>" + "ການດາວໂຫຼດສໍາເລັດແລ້ວ." + "ດາວໂຫຼດບໍ່ສຳເລັດ." + "ຂະຫນາດການດາວໂຫຼດຕ້ອງໃຊ້ການເຊື່ອມຕໍ່ Wi-Fi." + "ຢຸດຊົ່ວຄາວໃນເບື້ອງຫຼັງແລ້ວ." + "ການດາວໂຫລດໃຫຍ່ເກີນໄປທີ່ຈະດາວໂຫລດຜ່ານລະບົບອິນເຕີເນັດມືຖື" + "ທ່ານຕ້ອງໃຊ້ Wi-Fi ເພື່ອດາວໂຫລດໄຟລ໌ຂະໜາດ %s ນີ້. \n \n ແຕະທີ່ %s ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ." + "ເຂົ້າຄິວເພື່ອດາວໂຫລດໃນພາຍຫຼັງ?" + "ການດາວໂຫລດໄຟລ໌ໃຫຍ່ຂະໜາດ %s ນີ້ ອາດເຮັດອາຍຸແບັດເຕີຣີຂອງທ່ານສັ້ນລົງ ຫຼື ນຳໃຊ້ຂໍ້ມູນການເຊື່ອມຕໍ່ຂໍ້ມູນຜ່ານມືຖືຫຼາຍ, ເຊິ່ງເຮັດໃຫ້ທ່ານອາດຕ້ອງເສຍຄ່າບໍລິການແພງຂຶ້ນ.\n\n ສຳຜັດ %s ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ." + "ຄິວ" + "ຍົກເລີກ" + "ເລີ່ມດຽວນີ້" + "%d%%" + + "ກຳລັງດາວໂຫລດ 1 ໄຟລ໌" + "ກຳລັງດາວໂຫລດ %d ໄຟລ໌" + + + "ລໍຖ້າ 1 ໄຟລ໌" + "ລໍຖ້າ %d ໄຟລ໌" + + "ຍັງເຫຼືອ %s" + "ບໍ່ສາມດາເປີດໄຟລ໌ໄດ້" + "ດາວໂຫລດ" + "ເຂົ້າຄິວແລ້ວ" + "ກຳລັງດຳເນີນການ" + "ບໍ່ສຳເລັດ" + diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 4cd2fb7f..a7e7af10 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -56,4 +56,7 @@ "Liko: %s" "Nepavyksta atidaryti failo" "Atsisiuntimai" + "Laukia eilėje" + "Vykdoma" + "Nesėkminga" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 92c2e6be..4ac41336 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -56,4 +56,7 @@ "Atlikušais laiks: %s" "Nevar atvērt failu" "Lejupielādes" + "Ievietots rindā" + "Notiek lejupielāde" + "Neizdevās" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml new file mode 100644 index 00000000..7019d6e7 --- /dev/null +++ b/res/values-mn/strings.xml @@ -0,0 +1,62 @@ + + + + + "Татан авалтын Менежер" + "Татан авалтын менежерт хандалт хийх." + "Апп нь татан авалтын менежерт хандалт хийх, үүнийг ашиглан файл татах боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой." + "Татан авалтын менежерийн дэлгэрэнгүй функцууд." + "Апп нь татан авалтын менежерийн дэлгэрэнгүй функцуудад хандалт хийх боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой." + "Татан авалтын мэдэгдэл илгээх." + "Апп нь татан авч дууссан талаарх мэдэгдэл явуулах боломжтой. Хортой апп-ууд энийг ашиглан файл татдаг бусад апп-уудыг төөрөгдөлд оруулж болно." + "Татаж авсан бүх файлыг USB сангаас харах" + "Татаж авсан бүх файлыг SD картаас харах" + "Апп нь аль апп-с татсанаас хамаарахгүйгээр SD картад хадгалагдсан бүх файлыг харах боломжтой." + "Татан авалтын кеш дотор зай нөөцлөх" + "Апп нь татан авалтын менежерт илүү зай хэрэгтэй болсон үед автоматаар устгалгүйгээр файлыг татан авалтын кеш-д хадгалах боломжтой." + "мэдэгдэл өгөхгүйгээр файлуудыг татаж авах" + "Апп нь хэрэглэгчид ямар нэгэн мэдэгдэл харуулахгүйгээр татан авагчаар дамжуулан файл татаж авах боломжтой." + "Системийн татан авсан бүх файлуудад хандалт хийх" + "Апп нь системийн дурын апп-н эхлүүлсэн бүх татан авалтуудыг үзэх, өөрчлөх боломжтой." + "<Гарчиггүй>" + "Татаж авч дууслаа." + "Амжилттай татаж авлаа." + "Татаж авах хэмжээ Wi-Fi шаардана." + "Ар талд түр зогсоогдсон" + "Татан авалт нь операторын сүлжээнд хэт том байна" + "Та энэ %s татан авалтыг гүйцээхийн тулд Wi-Fi-д холбогдох шаардлагатай. Та дараагийн удаа Wi-Fi сүлжээнд холбогдмогц энэ татан авалтыг эхлүүлэхийн тулд \n\nХүрнэ үү %s " + "Дараа татахаар хүлээлгэх үү?" + "Энэ %s татан авалтыг одоо эхлүүлснээр таны зайны цэнэг дуусах болон/эсхүл мобайл дата холболтыг хэт их хэрэглэх, улмаар өндөр төлбөр төлөхөд хүрч болзошгүй. Дараагийн удаа WiFi сүлжээнд холбогдохдоо татаж эхлүүлэхийн тулд доорхыг \n\n Товшино уу %s." + "Хүлээх" + "Цуцлах" + "Одоо эхлүүлэх" + "%d%%" + + "1 файл татаж байна" + "%d файл татаж байна" + + + "1 файл хүлээлгэнд" + "%d файл хүлээлгэнд" + + "%s үлдсэн" + "Файлыг нээж чадахгүй байна" + "Татан авалтууд" + "Хүлээлгэнд" + "Үргэлжилж байгаа" + "Амжилтгүй" + diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index d0b4a8be..71b6b617 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -56,4 +56,7 @@ "%s tinggal" "Tidak dapat membuka fail" "Muat turun" + "Dibaris gilir" + "Sedang berlangsung" + "Tidak berjaya" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 1ea001a7..4f960805 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -56,4 +56,7 @@ "%s gjenstår" "Kan ikke åpne filen" "Nedlastinger" + "I kø" + "Pågår" + "Mislyktes" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml new file mode 100644 index 00000000..8edcad9a --- /dev/null +++ b/res/values-ne/strings.xml @@ -0,0 +1,62 @@ + + + + + "डाउनलोड प्रबन्धक" + "डाउनलोड प्रबन्धक पहुँच गर्नुहोस्" + "फाइल डाउनलोड गर्नका लागि अनुप्रयोगलाई डाउनलोड प्रबन्धकको पहुँचको अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोडहरू अवरूद्ध गर्न र निजी जानकारी पहुँच गर्न यसको प्रयोग गर्न सक्छन्।" + "उन्नत डाउनलोड प्रबन्धक प्रकार्यहरू" + "अनुप्रयोगलाई डाउनलोड प्रबन्धकको उन्नत प्रकार्यहरू पहुँच गर्न अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोड अवरूद्ध गरी निजी जानकारी पहुँच गर्न प्रयोग गर्न सक्छ।" + "डाउनलोड सूचनाहरू पठाउनुहोस्।" + "अनुप्रयोगलाई समाप्त भएका डाउनलोडहरूका सूचनाहरू पठाउन अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले फाइल डाउनलोड गर्ने अन्य अनुप्रयोगलाई झुक्याउनका लागि यसलाई प्रयोग गर्न सक्छन्।" + "सबै डाउनलोडहरूलाई USB भण्डारणमा हेर्नुहोस्" + "सबै डाउनलोडहरूलाई SD कार्डमा हेर्नुहोस्" + "जुनसुकै अनुप्रयोगले डाउनलोड गरेको भए पनि अनुप्रयोगलाई सम्पूर्ण डाउनलोडहरूलाई SD कार्डमा देख्ने अनुमति दिन्छ ।" + "डाउनलोड केसमा ठाउँ ओगट्नुहोस्" + "अनुप्रयोगलाई फाइलहरूलाई डाउनलोड केसमा डाउनलोड गर्न अनुमति दिन्छ, जुन डाउनलोड प्रबन्धकलाई थप ठाउँ चाहिएको खण्डमा स्वचालित रूपमा हटाउन सकिदैन।" + "बिना सूचना फाइलहरू डाउनलोड गर्नुहोस्" + "अनुप्रयोगलाई डाउनलोड प्रबन्धकका माध्ययमद्वारा प्रयोगकर्तामा सूचना नदेखाई फाइलहरू डाउनलोड गर्ने अनुमति दिन्छ।" + "सम्पूर्ण प्रणाली डाउनलोडहरू पहुँच गर्नुहोस्" + "अनुप्रयोगलाई कुनै पनि अनुप्रयोगले प्रणालीमा पहल गरेको सम्पूर्ण डाउनलोडहरू हेर्ने र परिमार्जन गर्ने अनुमति दिन्छ।" + "<शीर्षकविहिन>" + "डाउनलोड पुरा भयो।" + "डाउनलोड असफल" + "डाउनलोड आकारलाई वाइ-फाइ चाहिन्छ।" + "पृष्ठभूमिमा रोकिएको छ।" + "अपरेटर सञ्जालका लागि डाउनलोड ज्यादै ठूलो" + "तपाईँले वाइफाइ प्रयोग गर्नु पर्छ यस %s डाउनलोड समाप्त गर्न। \n\nछुनुहोस् %s यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईँ वाइ-फाइ सञ्जालामा जडित भए पछि।" + "पछि डाउनलोडका लागि लाममा राख्ने हो?" + "यस %s डाउनलोडलाई सुरु गर्दा तपाईँको ब्याट्रिको काल छोट्टिन सक्छ र/वा तपाईँको मोबाइल डेटा जडानको अधिकतम प्रयोग भई तपाईँको डेटा योजना अनुसार मोबाइल अपरेटरले थप शुल्क लिन सक्छ। \n\n छुनुहोस् %sतल यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईँ वाइफाइ सन्जालमा जडित हुने बेला।" + "लाम" + "रद्द गर्नुहोस्" + "अहिले सुरु गर्नुहोस्" + "%d%%" + + "१ फाइल डाउनलोड हुँदै" + "%d फाइलहरू डाउनलोड हुँदै" + + + "१ फाइल पर्खँदै" + "%d फाइलहरू पर्खँदै" + + "%s बाँकी छ" + "फाइल खोल्न सक्दैन" + "डाउनलोडहरू" + "लाममा राखियो" + "प्रगतिमा" + "असफल" + diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index aa891c59..4c993443 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -56,4 +56,7 @@ "%s resterend" "Kan bestand niet openen" "Downloads" + "In wachtrij" + "In uitvoering" + "Mislukt" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index e05b66c8..1bdaa363 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -56,4 +56,7 @@ "Pozostało: %s" "Nie można otworzyć pliku" "Pobrane" + "W kolejce" + "W toku" + "Niepowodzenie" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 702ca233..21b82fd2 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -56,4 +56,7 @@ "Faltam %s" "Não é possível abrir o ficheiro" "Transferências" + "Em fila" + "Em curso" + "Sem êxito" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 71251869..1568c120 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -56,4 +56,7 @@ "%s restantes" "Não é possível abrir o arquivo" "Downloads" + "Na fila" + "Em andamento" + "Falha" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 8450e476..b35106b6 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -56,4 +56,7 @@ "Timp rămas: %s" "Fişierul nu poate fi deschis" "Descărcări" + "În coadă" + "În desfășurare" + "Nereuşit" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 85755c1a..ca38fe8e 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -56,4 +56,7 @@ "Осталось: %s" "Не удается открыть файл" "Загрузки" + "В очереди" + "Подождите" + "Сбой" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml new file mode 100644 index 00000000..67804315 --- /dev/null +++ b/res/values-si/strings.xml @@ -0,0 +1,62 @@ + + + + + "බාගැනීමේ කළමනාකරු" + "බාගැනීම් කළමනාකරු ප්‍රවේශ කරන්න." + "යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරු ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක." + "උසස් බාගැනීම් කළමනාකරු විශේෂාංග." + "යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරුගේ උසස් විශේෂාංග ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක." + "බාගැනීමේ දැනුම්දීම් යවන්න." + "සම්පුර්ණ වූ බාගැනීම් පිලිබඳ දැනුම්දීම් යැවීමට යෙදුමට අවසර දෙන්න. කරදරකාරී යෙදුම් වලට මෙය යොදාගනිමින් ගොනු බාගත කරන වෙනත් යෙදුම් අමාරුවේ දැමිය හැක." + "USB ආචයනය වෙත සියලු බාගැනීම් බලන්න" + "SD පත වෙත සියලු බාගැනීම් බලන්න" + "බාගත්තේ කුමන යෙදුමද යන්න සැලකිල්ලට නොගෙන, SD කාඩ්පත වෙත සියලු බාගැනීම් බැලීමට යෙදුමට අවසර දෙන්න." + "බාගැනීම් හැඹිලියේ ඉඩ වෙන් කරගන්න" + "යෙදුමට ගොනු බාගැනීමේ හැඹිලියට බාගැනීමට අවසර දෙන්න, එය බාගැනීමේ කළමනාකරුට තවත් ඉඩ අවශ්‍ය වූ විට ස්වයංක්‍රීයව මැකිය නොහැක." + "දැනුම්දීමකින් තොරව ගොනු බාගන්න" + "පරිශීලකයාට කිසිඳු දැනුම්දීමක් කිරීමකින් තොරව බාගැනීම් කළමනාකරු හරහා ගොනු බාගත කරගැනීමට යෙදුමට අවසර දෙන්න." + "සියලු පද්ධති බාගැනීම් ප්‍රවේශ කරන්න" + "පද්ධතියේ ඕනෑම යෙදුමකින් ආරම්භ කරන ලද සියලු බාගැනීම් දර්ශනය කිරීමට සහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න." + "<නම් නොකළ>" + "බාගැනීම සම්පූර්ණයි." + "බාගැනීම අසාර්ථකයි." + "බාගැනීමේ ප්‍රමාණයට Wi-Fi අවශ්‍යවේ." + "පසුබිමේ නවතා ඇත." + "ක්‍රියාකරු ජාලයට බාගැනීම විශාල වැඩිය" + "මෙම %s බාගැනීම සිදු කිරීමට ඔබ Wi-Fi භාවිතා කළ යුතුය. \n\nඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත %s ස්පර්ශ කරන්න." + "පසුව බාගැනීමට පෝලිමේ තබන්නද?" + "මෙම %s බාගැනීම දැන් ආරම්භ කිරීමෙන් ඔබගේ බැටරි ආයු කාලය අඩුවේ සහ/හෝ ඔබගේ ජංගම දත්ත සම්බන්ධතාවය භාවිතය අධික වේ, එය ඔබගේ දත්ත සැලසුමට අනුව විශාල ගෙවීමක් සිදුවිය හැක.\n\n ඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත %s ස්පර්ශ කරන්න." + "පෝලිම" + "අවලංගු කරන්න" + "දැන් අරඹන්න" + "%d%%" + + "ගොනු 1 ක් බාගත වෙමින්" + "ගොනු %d බාගත වෙමින්" + + + "ගොනු 1 රැඳී සිටිමින්" + "ගොනු %d රැඳී සිටිමින්" + + "%s ඉතිරියි" + "ගොනුව විවෘත කළ නොහැකි විය" + "බාගැනීම්" + "පෙළ ගසන ලදි" + "ක්‍රියාවේ පවතී" + "අසාර්ථකයි" + diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 0bfd6ea0..dc39e49a 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -56,4 +56,7 @@ "Zostáva: %s" "Súbor sa nepodarilo otvoriť" "Prevzaté súbory" + "V poradí" + "Prebieha" + "Neúspešné" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 1956a3ee..d874a1fb 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -56,4 +56,7 @@ "Še %s" "Datoteke ni mogoče odpreti" "Prenosi" + "V čakalni vrsti" + "Poteka" + "Neuspešno" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 682fe328..96ce029d 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -56,4 +56,7 @@ "Још %s" "Није могуће отворити датотеку" "Преузимања" + "Стављено је на чекање" + "У току је" + "Није успело" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 55f953b0..9f5a69f7 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -56,4 +56,7 @@ "%s återstår" "Det går inte att öppna filen" "Hämtningar" + "I kö" + "Pågår" + "Misslyckades" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 2c1d7180..9601042c 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -56,4 +56,7 @@ "%s zinazosalia" "Haiwezi kufungua faili" "Vipakuzi" + "Zilizowekwa kwenye foleni" + "Unaendelea" + "Haijafanikiwa" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 0061f59a..75312054 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -56,4 +56,7 @@ "เหลืออีก %s" "ไม่สามารถเปิดไฟล์ได้" "ดาวน์โหลด" + "อยู่ในคิว" + "กำลังดำเนินการ" + "ไม่สำเร็จ" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 5e31ce80..cb935b84 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -56,4 +56,7 @@ "%s ang natitira" "Hindi mabuksan ang file" "Mga Download" + "Naka-queue" + "Isinasagawa" + "Hindi matagumpay" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index cb9d1d65..3bd9665b 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -56,4 +56,7 @@ "%s kaldı" "Dosya açılamıyor" "İndirilenler" + "Sıraya alındı" + "Devam ediyor" + "Başarısız" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 053e64c7..628263c7 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -56,4 +56,7 @@ "Залишилося %s" "Неможливо відкрити файл" "Завантаження" + "У черзі" + "Виконується" + "Помилка" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 09fb4d39..349b1f01 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -56,4 +56,7 @@ "Còn lại %s" "Không thể mở tệp" "Bản tải xuống" + "Đã xếp hàng" + "Đang thực hiện" + "Không thành công" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index dc5bcd8f..83fa9600 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -56,4 +56,7 @@ "剩余时间:%s" "无法打开文件" "下载内容" + "已加入队列" + "进行中" + "失败" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml new file mode 100644 index 00000000..e8622ca3 --- /dev/null +++ b/res/values-zh-rHK/strings.xml @@ -0,0 +1,62 @@ + + + + + "下載管理員" + "存取下載管理員。" + "允許應用程式存取下載管理員,並用以下載檔案。惡意應用程式可藉此干擾檔案下載並存取私人資訊。" + "進階下載管理員功能。" + "允許應用程式存取下載管理員的進階功能。惡意應用程式可藉此干擾檔案下載並存取私人資訊。" + "傳送下載通知。" + "允許應用程式在完成下載時送出通知。惡意應用程式可藉此擾亂其他下載檔案的應用程式。" + "查看所有下載到 USB 儲存裝置的檔案" + "查看 SD 卡中的所有下載項目" + "允許應用程式查看 SD 記憶卡中所有下載項目,不論是透過何種應用程式下載。" + "在下載快取預留空間" + "允許應用程式將檔案下載至下載快取空間,確保檔案不會因為下載管理員需要更多空間而自動遭到刪除。" + "不顯示通知,直接下載檔案" + "允許應用程式不需通知用戶,即可透過下載管理員下載檔案。" + "存取所有系統下載檔案" + "允許應用程式查看及修改系統上任何應用程式下載的所有內容。" + "<未命名>" + "下載完成。" + "下載失敗。" + "這個檔案較大,需要 Wi-Fi 才能下載。" + "已在背景中暫停。" + "檔案過大,無法透過電訊公司的網絡下載" + "您必須使用 Wi-Fi,才能完成下載這個 %s 的檔案。\n\n請在下次連接 Wi-Fi 網絡時,再輕觸 [%s ] 開始下載。" + "加入佇列供稍後下載?" + "現在下載這個 %s 的檔案,可能會縮短電池的壽命,並 (或) 超出流動數據連線的用量上限,導致流動網絡供應商根據數據計劃向您收費。\n\n請在下次連接 Wi-Fi 網絡時,再輕觸 [%s] 開始下載。" + "加入下載佇列" + "取消" + "立即開始" + "%d%%" + + "正在下載 1 個檔案" + "正在下載 %d 個檔案" + + + "正在等待下載 1 個檔案" + "正在等待下載 %d 個檔案" + + "剩餘 %s" + "無法開啟檔案" + "下載內容" + "已加入序列" + "進行中" + "不成功" + diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index aeedddd2..d048df53 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -56,4 +56,7 @@ "剩餘 %s" "無法開啟檔案" "下載項目" + "已加入佇列" + "進行中" + "失敗" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 11452d74..91bf0441 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -56,4 +56,7 @@ "%s asele" "Ayikwazi ukuvula ifayela" "Okulandiwe" + "Kusemugqeni" + "kuyaqhubeka" + "Akuphumelelanga" -- cgit v1.2.3 From 90aacc868d1a20e477f934a5bfdb10bb29846d93 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 19 Aug 2013 14:47:58 -0700 Subject: Trampoline APK installation to use raw file. PackageInstaller requires raw file:// Uris, and refuses to accept content:// Uris, so create a trampoline that uses the raw file and also splices in referrer extras. Bug: 10391254 Change-Id: I12a06862069479de5dee140d0065479ce79eb494 --- AndroidManifest.xml | 14 ++++++++ .../downloads/DownloadStorageProvider.java | 2 +- .../providers/downloads/TrampolineActivity.java | 41 ++++++++++++++++++++++ 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 src/com/android/providers/downloads/TrampolineActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 49f039ef..cd8aec5f 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -106,5 +106,19 @@ + + + + + + + + + diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index f66f5260..b606e652 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -260,7 +260,7 @@ public class DownloadStorageProvider extends ContentProvider { } } - private long getDownloadFromDocument(String docId) { + public static long getDownloadFromDocument(String docId) { return Long.parseLong(docId.substring(docId.indexOf(':') + 1)); } diff --git a/src/com/android/providers/downloads/TrampolineActivity.java b/src/com/android/providers/downloads/TrampolineActivity.java new file mode 100644 index 00000000..a1e99161 --- /dev/null +++ b/src/com/android/providers/downloads/TrampolineActivity.java @@ -0,0 +1,41 @@ +/* + * Copyright (C) 2013 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.app.Activity; +import android.content.Intent; +import android.net.Uri; +import android.os.Bundle; +import android.provider.DocumentsContract; + +/** + * PackageInstaller really wants raw files. + */ +public class TrampolineActivity extends Activity { + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + final Uri documentUri = getIntent().getData(); + final String docId = DocumentsContract.getDocId(documentUri); + final long downloadId = DownloadStorageProvider.getDownloadFromDocument(docId); + + final Intent intent = OpenHelper.buildViewIntent(this, downloadId); + startActivity(intent); + finish(); + } +} -- cgit v1.2.3 From 3173474ba17b21c0d7294e4479c13c87acd09267 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Wed, 21 Aug 2013 17:52:06 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I4fffcac8343b7df4de690793924bd458848b66f8 Auto-generated-cl: translation import --- res/values-es-rUS/strings.xml | 2 +- res/values-ro/strings.xml | 2 +- res/values-ru/strings.xml | 2 +- res/values-zh-rCN/strings.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 227f8dc4..f70120b4 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -56,7 +56,7 @@ "%s restantes" "No se puede abrir el archivo." "Descargas" - "En cola" + "Pendiente" "En curso" "Error" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index b35106b6..1e8a2ecc 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -58,5 +58,5 @@ "Descărcări" "În coadă" "În desfășurare" - "Nereuşit" + "Nereușit" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index ca38fe8e..31684d33 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -57,6 +57,6 @@ "Не удается открыть файл" "Загрузки" "В очереди" - "Подождите" + "Загружается" "Сбой" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 83fa9600..e6f43f05 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -57,6 +57,6 @@ "无法打开文件" "下载内容" "已加入队列" - "进行中" + "正在下载" "失败" -- cgit v1.2.3 From fd07263f824134d4bce91a3e1d51c851894bf758 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 23 Aug 2013 10:32:07 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I60a8cd64b094a32b747f51882fb0b3b30d69680e Auto-generated-cl: translation import --- res/values-et-rEE/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-hy-rAM/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-it/strings.xml | 6 ++--- res/values-ka-rGE/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-km-rKH/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-lo-rLA/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-ms-rMY/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-ne-rNP/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-si-rLK/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 499 insertions(+), 3 deletions(-) create mode 100644 res/values-et-rEE/strings.xml create mode 100644 res/values-hy-rAM/strings.xml create mode 100644 res/values-ka-rGE/strings.xml create mode 100644 res/values-km-rKH/strings.xml create mode 100644 res/values-lo-rLA/strings.xml create mode 100644 res/values-ms-rMY/strings.xml create mode 100644 res/values-ne-rNP/strings.xml create mode 100644 res/values-si-rLK/strings.xml diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml new file mode 100644 index 00000000..f413eddf --- /dev/null +++ b/res/values-et-rEE/strings.xml @@ -0,0 +1,62 @@ + + + + + "Allalaadimishaldur" + "Juurdepääs allalaadimishaldurile." + "Võimaldab rakendusel pääseda allalaadimishalduri juurde ja selle abil faile alla laadida. Pahatahtlikud rakendused saavad selle abil allalaadimisi takistada ja privaatsete andmete juurde pääseda." + "Allalaadimishalduri täpsemad funktsioonid." + "Võimaldab rakendusel pääseda allalaadimishalduri täpsemate funktsioonide juurde. Pahatahtlikud rakendused võivad selle abil allalaadimisi takistada ja privaatsete andmete juurde pääseda." + "Allalaadimisteatiste saatmine." + "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." + "USB allalaadimiste vaat." + "Vaadake kõiki allalaadimisi SD-kaardile" + "Võimaldab rakendusel näha kõiki SD-kaardile salvestatud allalaadimisi sõltumata rakendusest, mis need alla laadis." + "Reserveeri allalaadimiste vahemälus ruumi" + "Võimaldab rakendusel laadida faile allalaadimise vahemällu, mida allalaadimishaldur ei saa ruumi vabastamiseks automaatselt kustutada." + "failide teatamata allalaadimine" + "Võimaldab rakendusel allalaadimishalduri kaudu faile alla laadida kasutajale märguannet kuvamata." + "Juurdepääs kõigile süsteemi allalaadimistele" + "Võimaldab rakendusel vaadata ja muuta kõiki allalaadimisi, mille algatas süsteemis olev mis tahes rakendus." + "<Pealkirjata>" + "Allalaadimine on lõpetatud." + "Allalaadimine ebaõnnestus." + "Allalaad. on vaja WiFit." + "Peatatud taustal." + "Allalaadimine operaatori võrgu jaoks on liiga suur" + "%s suuruse allalaadimise jaoks tuleb kasutada WiFi-võrku.\n\nPuudutage valikut %s , et alustada allalaadimisega järgmine kord, kui olete WiFi-võrguga ühenduses." + "Kas lisada järjekorda hilisemaks allalaadimiseks?" + "%s 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 %s, et laadida see alla siis, kui olete WiFi-võrgus." + "Järjekord" + "Tühista" + "Alusta nüüd" + "%d %%" + + "1 faili allalaadimine" + "%d faili allalaadimine" + + + "1 fail on ootel" + "%d faili on ootel" + + "Jäänud: %s" + "Faili ei saa avada" + "Allalaadimised" + "Järjekorras" + "Töötlemisel" + "Ebaõnnestus" + diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml new file mode 100644 index 00000000..750ea405 --- /dev/null +++ b/res/values-hy-rAM/strings.xml @@ -0,0 +1,62 @@ + + + + + "Ներբեռնման կառավարիչ" + "Գործարկել ներբեռնման կառավարիչը:" + "Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարիչը և կիրառել ֆայլերի ներբեռնման համար: Վնասակար ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:" + "Ընդլայնված ներբեռնման կառավարչի գործառույթներ:" + "Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարչի ընդլայնված գործառույթները: Վնասակար ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:" + "Ուղարկել ներբեռնման ծանուցումներ:" + "Թույլատրում է հավելվածին ուղարկել ավարտված ներբեռնումների մասին ծանուցումներ: Վնասակար ծրագրերը կարող են օգտագործել սա՝ այլ ֆայլեր ներբեռնող ծրագրերը վնասելու համար:" + "Տեսնել USB կրիչի բոլոր ներբեռնումները" + "Տեսնել SD քարտի բոլոր ներբեռնումները" + "Թույլատրում է հավելվածին տեսնել SD քարտի բոլոր ներբեռնումները` անտեսելով, թե որ հավելվածն է ներբեռնել դրանք:" + "Խնայել ներբեռնման շտեմի տարածությունը" + "Թույլատրում է հավելվածին ներբեռնել ֆայլերը ներբեռնման շտեմ, որոնք հնարավոր չէ ավտոմատ ջնջել, երբ ներբեռնման կառավարիչը հավելյալ ծավալի կարիք ունի:" + "ներբեռնել ֆայլերը՝ առանց ծանուցման" + "Թույլատրում է հավելվածին ներբեռնել ֆայլեր ներբեռնման կառավարչի միջոցով՝ առանց օգտագործողին որևէ ծանուցում ցուցադրելու:" + "Օգտագործել բոլոր համակարգային ներբեռնումները" + "Թույլատրում է հավելվածին դիտել և փոփոխել բոլոր ներբեռնումները` կապված համակարգի ցանկացած ծրագրի հետ:" + "<Անվերնագիր>" + "Ներբեռնումն ավարտված է:" + "Ներբեռնումը ձախողվել է:" + "Ներբեռնման ծավալը պահանջում է Wi-Fi:" + "Ընդմիջված է հետնաշերտում:" + "Ներբեռնումը չափազանց մեծ է օպերատորի ցանցի համար" + "Դուք պետք է օգտագործեք Wi-Fi՝ այս %s ներբեռնումն ավարտելու համար: \n\nՀպեք %s ՝ սկսելու այս ներբեռնումը հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:" + "Հերթագրե՞լ ավելի ուշ ներբեռնելու համար:" + "Այս %s ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք %s ստորև` այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:" + "Հերթականություն" + "Չեղարկել" + "Մեկնարկել հիմա" + "%d%%" + + "1 ֆայլ ներբեռնվում է" + "%d ֆայլ ներբեռնվում է" + + + "1 ֆայլ սպասում է" + "%d ֆայլ սպասում է" + + "մինչ ավարտը՝ %s" + "Հնարավոր չէ բացել ֆայլը" + "Ներբեռնումներ" + "Հերթագրված է" + "Ընթացքի մեջ է" + "Չի կատարվել" + diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index e7f42e85..37b8e943 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -17,16 +17,16 @@ "Gestione download" - "Accedere alla gestione dei download." + "Accesso alla gestione dei download." "Consente all\'applicazione di accedere a gestione dei download e di utilizzarla per scaricare file. Le applicazioni dannose possono farne uso per disturbare i download e accedere a informazioni private." "Funzioni avanzate di gestione dei download." "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." "Inviare notifiche di download." "Consente all\'applicazione di inviare notifiche relative ai download completati. Le applicazioni dannose possono farne uso per confondere altre applicazioni che scaricano file." "Tutti i download in archivio USB" - "Visualizza tutti i download sulla scheda SD" + "Visualizzazione di tutti i download sulla scheda SD" "Consente all\'applicazione di visualizzare tutti i download sulla scheda SD, a prescindere dall\'applicazione che li ha scaricati." - "Conserva spazio nella cache dei download" + "Conservazione spazio nella cache dei download" "Consente all\'applicazione di scaricare nella cache i file che non possono essere eliminati automaticamente quando a gestione dei download serve più spazio." "download file senza notifica" "Consente all\'applicazione di scaricare i file tramite gestione dei download senza mostrare alcuna notifica all\'utente." diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml new file mode 100644 index 00000000..25839d2b --- /dev/null +++ b/res/values-ka-rGE/strings.xml @@ -0,0 +1,62 @@ + + + + + "ჩამოტვირთვის მენეჯერი" + "ჩამოტვირთვის მენეჯერზე წვდომა." + "მიეცით აპლიკაციას ჩამოტვირთვის მენეჯერის წვდომისა და ფაილების ჩამოტვირთვებისთვის მისი გამოყენების უფლება. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ჩამოტვირთვის გაუმჯობესებული მენეჯერის ფუნქციები." + "მიეცით აპს ჩამოტვირთვის მენეჯერის გაუმჯობესებულ ფუნქციებზე წვდომის უფლება. ბოროტმოქმედმა აპებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ჩამოტვირთვის შეტყობინებების გაგზავნა." + "მიეცით აპს, უფლება, გააგზავნოს შეტყობინება დასრულებული ჩამოტვირთვების შესახებ. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ყველა ჩამოტვირთვის USB მეხსიერებაში ნახვა" + "ყველა ჩამოტვირთვის SD ბარათზე ნახვა" + "მიეცით აპს უფლება, ნახოს ყველა ჩამოტვირთვა SD ბარათზე, განურჩევლად იმისა, თუ რომელმა აპმა ჩამოტვირთა ისინი." + "ჩამოტვირთვის ქეშში სივრცის ამობრუნება" + "მიეცით აპს უფლება ჩამოტვირთოს ფაილები ჩამოტვირთულ ქეშში. მისი წაშლა ავტომატურად შეუძლებელია მაშინ, როდესაც ჩამოტვირთვის მენეჯერს მეტი სივრცე სჭირდება." + "ფაილების ჩამოტვირთვა შეტყობინებების გარეშე" + "მიეცით აპს უფლება, ჩამოტვირთოს ფაილები ჩამოტვირთვის მენეჯერიდან მომხმარებლისთვის შეტყობინების ჩვენების გარეშე." + "ყველა სისტემურ ჩამოტვირთვაზე წვდომა" + "მიეცით აპს უფლება ნახოს და შეცვალოს ნებისმიერი ჩამოტვირთვა, რომელიც ინიცირებული იყო სისტემის ნებისმიერი აპის მიერ." + "<უსათაურო>" + "ჩამოტვირთვა დასრულდა." + "წარუმატებელი ჩამოტვირთვა." + "ჩამოტვირთვის ზომა ითხოვს Wi-Fi-ს." + "უკანა ფონზე დაპაუზებული." + "ჩამოტვირთვა ოპერატორის ქსელისთვის ძალიან დიდია" + "ამ %s ჩამოტვირთვის განსახორციელებლად უნდა გამოიყენოთ WiFi. \n\nშეეხეთ %s , რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში." + "ჩააყენებთ ჩამოტვირთვების რიგში?" + "ამ %s ჩამოტვირთვის დაწყება ახლა შეამცირებს თქვენი ელემენტის სიცოცხლეს და/ან გამოიწვევს თქვენი მობილური ინტერნეტის ინტენსიურ გამოყენებას. ეს თავისთავად განაპირობებს თქვენი მობილური ოპერატორისთვის შესაბამისი საფასურის გადახდას თქვენი ინტერნეტ გეგმიდან გამომდინარე. \n\n შეეხეთ %s, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში." + "რიგი" + "გაუქმება" + "დაწყება ახლავე" + "%d%%" + + "1 ფაილი იტვირთება" + "%d ფაილი იტვირთება" + + + "1 ფაილი მოლოდინის რეჟმშია" + "%d ფაილი მოლოდინის რეჟიმშია" + + "%s მარცხნივ" + "ფაილის გახსნა ვერ ხერხდება" + "ჩამოტვირთვები" + "რიგშია" + "მიმდინარეობს" + "ვერ განხორციელდა" + diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml new file mode 100644 index 00000000..8117899e --- /dev/null +++ b/res/values-km-rKH/strings.xml @@ -0,0 +1,62 @@ + + + + + "កម្មវិធី​ទាញ​យក" + "ប្រើ​កម្មវិធី​គ្រប់គ្រង​ការ​ទាញ​យក។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​កម្មវិធី​ទាញ​យក ដើម្បី​ទាញ​យក​ឯកសារ។ កម្មវិធី​មិន​ល្អ​ផ្សេងទៀត​អាច​ប្រើ​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។" + "មុខងារ​កម្មវិធី​គ្រប់គ្រង​ការ​ទាញ​យក​កម្រិត​ខ្ពស់។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​មុខងារ​កម្រិត​ខ្ពស់​របស់​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។" + "ផ្ញើ​ព័ត៌មាន​ការ​ទាញ​យក។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ផ្ញើ​ការ​ជូនដំណឹង​អំពី​ការ​បញ្ចប់​ការ​ទាញ​យក។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​រារាំង​កម្មវិធី​ទាញ​យក​ឯកសារ​ផ្សេងទៀត។" + "មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី" + "មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​កាត​អេសឌី" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​​មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ការ​អេសឌី ប្រសិនបើ​គ្មាន​កម្មវិធី​ទាញ​យក​វា។" + "បម្រុងទុក​ទំហំ​នៅ​ក្នុង​ឃ្លាំង​ទាញ​យក" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​ទៅកាន់​ឃ្លាំង​ទាញ​យក ដែល​មិន​អាច​លុប​ដោយ​ស្វ័យប្រវត្តិ ពេល​កម្មវិធី​ទាញ​យក​ត្រូវការ​ទំហំ​ច្រើន។" + "ទាញ​យក​ឯកសារ​ដោយ​មិន​បាច់​ជូនដំណឹង" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​តាម​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង​​ដោយ​មិន​បាច់​មាន​ការ​ជូន​ដំណឹង​ទៅ​អ្នកប្រើ។" + "ដំណើរការ​ទាញ​យក​​ប្រព័ន្ធ​ទាំងអស់" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​មើល និង​កែ​ការ​ទាញ​យក​ទាំងអស់​ដែល​បាន​ចាប់ផ្ដើម​ដោយ​កម្មវិធី​ណាមួយ​នៅ​លើ​ប្រព័ន្ធ។" + "<Untitled>" + "បាន​បញ្ចប់​ការ​ទាញ​យក។" + "ការ​ទាញ​យក​បាន​បរាជ័យ។" + "ទំហំ​ការ​ទាញ​យក​ត្រូវការ​វ៉ាយហ្វាយ។" + "បាន​ផ្អាក​នៅ​ផ្ទៃ​ខាងក្រោយ។" + "ការ​ទាញ​យក​គឺ​ធំ​ពេក​សម្រាប់​បណ្ដាញ​ប្រតិបត្តិករ" + "អ្នក​ត្រូវតែ​ប្រើ​វ៉ាយហ្វាយ​ដើម្បី​បញ្ចប់​ការ​ទាញ​យក %s ។ \n\nប៉ះ %s ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។" + "ដាក់​ជា​ជួរ​ដើម្បី​ទាញ​យក​បន្ទាប់?" + "ចាប់ផ្ដើម​ការ​ទាញ​យក %s ឥឡូវ​អាច​បណ្ដាលឲ្យ​ថ្ម​របស់​អ្នក​មាន​អាយុ​ខ្លី និង/ឬ​បង្ហាញ​ថា​លើស​ការ​ប្រើ​នៃ​តំណ​ភ្ជាប់​ទិន្នន័យ​ទូរស័ព្ទ​របស់​អ្នក ដែល​អាច​គិត​ប្រាក់​ដោយ​ប្រតិបត្តិករ​ទូរស័ព្ទ​អាស្រ័យ​តាម​គម្រោង​ទិន្នន័យ​របស់​អ្នក។\n\n ប៉ះ %s ខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។" + "ជួរ" + "បោះ​បង់" + "ចាប់ផ្ដើម​ឥឡូវ" + "%d%%" + + "កំពុង​ទាញ​យក​ឯកសារ ១" + "កំពុង​ទាញ​យក​ឯកសារ %d" + + + "កំពុង​រង់ចាំ​ឯកសារ ១" + "កំពុង​រង់ចាំ​ឯកសារ %d" + + "នៅសល់ %s" + "មិន​អាច​បើក​ឯកសារ" + "ទាញ​យក" + "​បាន​ដាក់​ក្នុង​ជួរ" + "កំពុង​ដំណើរការ" + "បាន​បរាជ័យ" + diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml new file mode 100644 index 00000000..3e2f2149 --- /dev/null +++ b/res/values-lo-rLA/strings.xml @@ -0,0 +1,62 @@ + + + + + "ໂຕຈັດການການດາວໂຫລດ" + "ເຂົ້າເຖິງໂຕຈັດການການດາວໂຫລດ." + "ອະນຸາຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງໂຕຈັດການການດາວໂຫລດ ແລະໃຊ້ມັນເພື່ອດາວໂຫລດໄຟລ໌. ແອັບຯທີ່ມີອັນຕະລາຍສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້." + "ຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ." + "ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້." + "ສົ່ງການແຈ້ງເຕືອນການດາວໂຫລດ." + "ອະນຸຍາດໃຫ້ແອັບຯ ສົ່ງການແຈ້ງເຕືອນເມື່ອດາວໂຫລດສຳເລັດແລ້ວ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ສ້າງຄວາມສັບສົນໃຫ້ແອັບຯ ອື່ນໆທີ່ດາວໂຫລດໄຟລ໌ໄດ້." + "ເບິ່ງການດາວໂຫລດທັງໝົດໃນບ່ອນຈັດເກັບຂໍ້ມູນ USB" + "ເບິ່ງການດາວໂຫລດທັງໝົດໃນ SD card" + "ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ເຫັນການດາວໂຫລດໃນ SD ກາດທັງໝົດ, ໂດຍບໍ່ກ່ຽວວ່າມັນດາວໂຫລດມາຈາກແອັບຯໃດ." + "ເນື້ອທີ່ສະຫງວນໃນບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ" + "ອະນຸຍາດໃຫ້ແອັບຯ ດາວໂຫລດໄຟລ໌ໄປຍັງບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ, ທີ່ບໍ່ສາມາດລຶບໂດຍອັດຕະໂນມັດ ຫາກໂຕຈັດການການດາວໂຫລດຕ້ອງການພື້ນທີ່ເພີ່ມ." + "ດາວໂຫລດໄຟລ໌ໂດຍບໍ່ແຈ້ງເຕືອນ" + "ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ດາວໂຫລດໄຟລ໌ຜ່ານໂຕຈັດການການດາວໂຫລດ ໂດຍບໍ່ແຈ້ງເຕືອນຜູ່ໃຊ້ແຕ່ຢ່າງໃດ." + "ເຂົ້າເຖິງການດາວໂຫລດທັງໝົດຂອງລະບົບ" + "ອະນຸຍາດໃຫ້ແອັບຯ ເບິ່ງ ແລະ ແກ້ໄຂການດາວໂຫລດທັງໝົດທີ່ເລີ່ມໂດຍທຸກໆແອັບຯໃນລະບົບ." + "<ບໍ່ມີຊື່>" + "ການດາວໂຫຼດສໍາເລັດແລ້ວ." + "ດາວໂຫຼດບໍ່ສຳເລັດ." + "ຂະຫນາດການດາວໂຫຼດຕ້ອງໃຊ້ການເຊື່ອມຕໍ່ Wi-Fi." + "ຢຸດຊົ່ວຄາວໃນເບື້ອງຫຼັງແລ້ວ." + "ການດາວໂຫລດໃຫຍ່ເກີນໄປທີ່ຈະດາວໂຫລດຜ່ານລະບົບອິນເຕີເນັດມືຖື" + "ທ່ານຕ້ອງໃຊ້ Wi-Fi ເພື່ອດາວໂຫລດໄຟລ໌ຂະໜາດ %s ນີ້. \n \n ແຕະທີ່ %s ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ." + "ເຂົ້າຄິວເພື່ອດາວໂຫລດໃນພາຍຫຼັງ?" + "ການດາວໂຫລດໄຟລ໌ໃຫຍ່ຂະໜາດ %s ນີ້ ອາດເຮັດອາຍຸແບັດເຕີຣີຂອງທ່ານສັ້ນລົງ ຫຼື ນຳໃຊ້ຂໍ້ມູນການເຊື່ອມຕໍ່ຂໍ້ມູນຜ່ານມືຖືຫຼາຍ, ເຊິ່ງເຮັດໃຫ້ທ່ານອາດຕ້ອງເສຍຄ່າບໍລິການແພງຂຶ້ນ.\n\n ສຳຜັດ %s ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ." + "ຄິວ" + "ຍົກເລີກ" + "ເລີ່ມດຽວນີ້" + "%d%%" + + "ກຳລັງດາວໂຫລດ 1 ໄຟລ໌" + "ກຳລັງດາວໂຫລດ %d ໄຟລ໌" + + + "ລໍຖ້າ 1 ໄຟລ໌" + "ລໍຖ້າ %d ໄຟລ໌" + + "ຍັງເຫຼືອ %s" + "ບໍ່ສາມດາເປີດໄຟລ໌ໄດ້" + "ດາວໂຫລດ" + "ເຂົ້າຄິວແລ້ວ" + "ກຳລັງດຳເນີນການ" + "ບໍ່ສຳເລັດ" + diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml new file mode 100644 index 00000000..71b6b617 --- /dev/null +++ b/res/values-ms-rMY/strings.xml @@ -0,0 +1,62 @@ + + + + + "Pengurus Muat Turun" + "Akses pengurus muat turun." + "Membenarkan aplikasi untuk mengakses pengurus muat turun dan menggunakannya untuk memuat turun fail. Aplikasi berniat jahat boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi." + "Fungsi pengurus muat turun lanjutan." + "Membenarkan aplikasi mengakses fungsi-fungsi lanjutan pengurus muat turun. Aplikasi berbahaya boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi." + "Hantar pemberitahuan muat turun." + "Membenarkan aplikasi menghantar pemberitahuan tentang muat turun yang telah siap. Aplikasi berbahaya boleh menggunakan ini untuk mengelirukan aplikasi lain yang memuat turun fail." + "Lihat m.turun ke strn USB" + "Lihat semua muat turun ke kad SD" + "Membenarkan aplikasi untuk melihat semua muat turun ke kad SD, tidak kira aplikasi mana yang memuat turun." + "Menempah ruang dalam cache muat turun" + "Membenarkan aplikasi memuat turun fail ke cache muat turun, yang tidak boleh dipadamkan secara automatik apabila pengurus muat turun memerlukan lebih banyak ruang." + "memuat turun fail tanpa pemberitahuan" + "Membenarkan aplikasi memuat turun fail melalui pengurus muat turun tanpa menunjukkan sebarang pemberitahuan kepada pengguna." + "Mengakses semua muat turun sistem" + "Membenarkan aplikasi untuk melihat dan mengubah suai semua muat turun yang dimulakan oleh mana-mana aplikasi pada sistem." + "<Tidak bertajuk>" + "Muat turun selesai." + "Muat turun tidak berjaya." + "Saiz m.trn perlukn Wi-Fi" + "Dijeda di latar belakang." + "Muat turun terlalu besar untuk operator rangkaian" + "Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun %s ini. \n\nSentuh %s untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi." + "Baris gilir untuk dimuat turun kemudian?" + "Memulakan muat turun %s 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 %s untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi." + "Baris gilir" + "Batal" + "Mulakan sekarang" + "%d%%" + + "1 fail sedang dimuat turun" + "%d fail sedang dimuat turun" + + + "1 fail sedang menunggu" + "%d fail sedang menunggu" + + "%s tinggal" + "Tidak dapat membuka fail" + "Muat turun" + "Dibaris gilir" + "Sedang berlangsung" + "Tidak berjaya" + diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml new file mode 100644 index 00000000..8edcad9a --- /dev/null +++ b/res/values-ne-rNP/strings.xml @@ -0,0 +1,62 @@ + + + + + "डाउनलोड प्रबन्धक" + "डाउनलोड प्रबन्धक पहुँच गर्नुहोस्" + "फाइल डाउनलोड गर्नका लागि अनुप्रयोगलाई डाउनलोड प्रबन्धकको पहुँचको अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोडहरू अवरूद्ध गर्न र निजी जानकारी पहुँच गर्न यसको प्रयोग गर्न सक्छन्।" + "उन्नत डाउनलोड प्रबन्धक प्रकार्यहरू" + "अनुप्रयोगलाई डाउनलोड प्रबन्धकको उन्नत प्रकार्यहरू पहुँच गर्न अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोड अवरूद्ध गरी निजी जानकारी पहुँच गर्न प्रयोग गर्न सक्छ।" + "डाउनलोड सूचनाहरू पठाउनुहोस्।" + "अनुप्रयोगलाई समाप्त भएका डाउनलोडहरूका सूचनाहरू पठाउन अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले फाइल डाउनलोड गर्ने अन्य अनुप्रयोगलाई झुक्याउनका लागि यसलाई प्रयोग गर्न सक्छन्।" + "सबै डाउनलोडहरूलाई USB भण्डारणमा हेर्नुहोस्" + "सबै डाउनलोडहरूलाई SD कार्डमा हेर्नुहोस्" + "जुनसुकै अनुप्रयोगले डाउनलोड गरेको भए पनि अनुप्रयोगलाई सम्पूर्ण डाउनलोडहरूलाई SD कार्डमा देख्ने अनुमति दिन्छ ।" + "डाउनलोड केसमा ठाउँ ओगट्नुहोस्" + "अनुप्रयोगलाई फाइलहरूलाई डाउनलोड केसमा डाउनलोड गर्न अनुमति दिन्छ, जुन डाउनलोड प्रबन्धकलाई थप ठाउँ चाहिएको खण्डमा स्वचालित रूपमा हटाउन सकिदैन।" + "बिना सूचना फाइलहरू डाउनलोड गर्नुहोस्" + "अनुप्रयोगलाई डाउनलोड प्रबन्धकका माध्ययमद्वारा प्रयोगकर्तामा सूचना नदेखाई फाइलहरू डाउनलोड गर्ने अनुमति दिन्छ।" + "सम्पूर्ण प्रणाली डाउनलोडहरू पहुँच गर्नुहोस्" + "अनुप्रयोगलाई कुनै पनि अनुप्रयोगले प्रणालीमा पहल गरेको सम्पूर्ण डाउनलोडहरू हेर्ने र परिमार्जन गर्ने अनुमति दिन्छ।" + "<शीर्षकविहिन>" + "डाउनलोड पुरा भयो।" + "डाउनलोड असफल" + "डाउनलोड आकारलाई वाइ-फाइ चाहिन्छ।" + "पृष्ठभूमिमा रोकिएको छ।" + "अपरेटर सञ्जालका लागि डाउनलोड ज्यादै ठूलो" + "तपाईँले वाइफाइ प्रयोग गर्नु पर्छ यस %s डाउनलोड समाप्त गर्न। \n\nछुनुहोस् %s यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईँ वाइ-फाइ सञ्जालामा जडित भए पछि।" + "पछि डाउनलोडका लागि लाममा राख्ने हो?" + "यस %s डाउनलोडलाई सुरु गर्दा तपाईँको ब्याट्रिको काल छोट्टिन सक्छ र/वा तपाईँको मोबाइल डेटा जडानको अधिकतम प्रयोग भई तपाईँको डेटा योजना अनुसार मोबाइल अपरेटरले थप शुल्क लिन सक्छ। \n\n छुनुहोस् %sतल यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईँ वाइफाइ सन्जालमा जडित हुने बेला।" + "लाम" + "रद्द गर्नुहोस्" + "अहिले सुरु गर्नुहोस्" + "%d%%" + + "१ फाइल डाउनलोड हुँदै" + "%d फाइलहरू डाउनलोड हुँदै" + + + "१ फाइल पर्खँदै" + "%d फाइलहरू पर्खँदै" + + "%s बाँकी छ" + "फाइल खोल्न सक्दैन" + "डाउनलोडहरू" + "लाममा राखियो" + "प्रगतिमा" + "असफल" + diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml new file mode 100644 index 00000000..67804315 --- /dev/null +++ b/res/values-si-rLK/strings.xml @@ -0,0 +1,62 @@ + + + + + "බාගැනීමේ කළමනාකරු" + "බාගැනීම් කළමනාකරු ප්‍රවේශ කරන්න." + "යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරු ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක." + "උසස් බාගැනීම් කළමනාකරු විශේෂාංග." + "යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරුගේ උසස් විශේෂාංග ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක." + "බාගැනීමේ දැනුම්දීම් යවන්න." + "සම්පුර්ණ වූ බාගැනීම් පිලිබඳ දැනුම්දීම් යැවීමට යෙදුමට අවසර දෙන්න. කරදරකාරී යෙදුම් වලට මෙය යොදාගනිමින් ගොනු බාගත කරන වෙනත් යෙදුම් අමාරුවේ දැමිය හැක." + "USB ආචයනය වෙත සියලු බාගැනීම් බලන්න" + "SD පත වෙත සියලු බාගැනීම් බලන්න" + "බාගත්තේ කුමන යෙදුමද යන්න සැලකිල්ලට නොගෙන, SD කාඩ්පත වෙත සියලු බාගැනීම් බැලීමට යෙදුමට අවසර දෙන්න." + "බාගැනීම් හැඹිලියේ ඉඩ වෙන් කරගන්න" + "යෙදුමට ගොනු බාගැනීමේ හැඹිලියට බාගැනීමට අවසර දෙන්න, එය බාගැනීමේ කළමනාකරුට තවත් ඉඩ අවශ්‍ය වූ විට ස්වයංක්‍රීයව මැකිය නොහැක." + "දැනුම්දීමකින් තොරව ගොනු බාගන්න" + "පරිශීලකයාට කිසිඳු දැනුම්දීමක් කිරීමකින් තොරව බාගැනීම් කළමනාකරු හරහා ගොනු බාගත කරගැනීමට යෙදුමට අවසර දෙන්න." + "සියලු පද්ධති බාගැනීම් ප්‍රවේශ කරන්න" + "පද්ධතියේ ඕනෑම යෙදුමකින් ආරම්භ කරන ලද සියලු බාගැනීම් දර්ශනය කිරීමට සහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න." + "<නම් නොකළ>" + "බාගැනීම සම්පූර්ණයි." + "බාගැනීම අසාර්ථකයි." + "බාගැනීමේ ප්‍රමාණයට Wi-Fi අවශ්‍යවේ." + "පසුබිමේ නවතා ඇත." + "ක්‍රියාකරු ජාලයට බාගැනීම විශාල වැඩිය" + "මෙම %s බාගැනීම සිදු කිරීමට ඔබ Wi-Fi භාවිතා කළ යුතුය. \n\nඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත %s ස්පර්ශ කරන්න." + "පසුව බාගැනීමට පෝලිමේ තබන්නද?" + "මෙම %s බාගැනීම දැන් ආරම්භ කිරීමෙන් ඔබගේ බැටරි ආයු කාලය අඩුවේ සහ/හෝ ඔබගේ ජංගම දත්ත සම්බන්ධතාවය භාවිතය අධික වේ, එය ඔබගේ දත්ත සැලසුමට අනුව විශාල ගෙවීමක් සිදුවිය හැක.\n\n ඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත %s ස්පර්ශ කරන්න." + "පෝලිම" + "අවලංගු කරන්න" + "දැන් අරඹන්න" + "%d%%" + + "ගොනු 1 ක් බාගත වෙමින්" + "ගොනු %d බාගත වෙමින්" + + + "ගොනු 1 රැඳී සිටිමින්" + "ගොනු %d රැඳී සිටිමින්" + + "%s ඉතිරියි" + "ගොනුව විවෘත කළ නොහැකි විය" + "බාගැනීම්" + "පෙළ ගසන ලදි" + "ක්‍රියාවේ පවතී" + "අසාර්ථකයි" + -- cgit v1.2.3 From c628575e8a7bbc23f4f80380984407b11762d2ba Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 23 Aug 2013 10:32:07 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I60a8cd64b094a32b747f51882fb0b3b30d69680e Auto-generated-cl: translation import --- res/values-et-rEE/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-hy-rAM/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-it/strings.xml | 6 ++--- res/values-ka-rGE/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-km-rKH/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-lo-rLA/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-ms-rMY/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-ne-rNP/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-si-rLK/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ 9 files changed, 499 insertions(+), 3 deletions(-) create mode 100644 res/values-et-rEE/strings.xml create mode 100644 res/values-hy-rAM/strings.xml create mode 100644 res/values-ka-rGE/strings.xml create mode 100644 res/values-km-rKH/strings.xml create mode 100644 res/values-lo-rLA/strings.xml create mode 100644 res/values-ms-rMY/strings.xml create mode 100644 res/values-ne-rNP/strings.xml create mode 100644 res/values-si-rLK/strings.xml diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml new file mode 100644 index 00000000..f413eddf --- /dev/null +++ b/res/values-et-rEE/strings.xml @@ -0,0 +1,62 @@ + + + + + "Allalaadimishaldur" + "Juurdepääs allalaadimishaldurile." + "Võimaldab rakendusel pääseda allalaadimishalduri juurde ja selle abil faile alla laadida. Pahatahtlikud rakendused saavad selle abil allalaadimisi takistada ja privaatsete andmete juurde pääseda." + "Allalaadimishalduri täpsemad funktsioonid." + "Võimaldab rakendusel pääseda allalaadimishalduri täpsemate funktsioonide juurde. Pahatahtlikud rakendused võivad selle abil allalaadimisi takistada ja privaatsete andmete juurde pääseda." + "Allalaadimisteatiste saatmine." + "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." + "USB allalaadimiste vaat." + "Vaadake kõiki allalaadimisi SD-kaardile" + "Võimaldab rakendusel näha kõiki SD-kaardile salvestatud allalaadimisi sõltumata rakendusest, mis need alla laadis." + "Reserveeri allalaadimiste vahemälus ruumi" + "Võimaldab rakendusel laadida faile allalaadimise vahemällu, mida allalaadimishaldur ei saa ruumi vabastamiseks automaatselt kustutada." + "failide teatamata allalaadimine" + "Võimaldab rakendusel allalaadimishalduri kaudu faile alla laadida kasutajale märguannet kuvamata." + "Juurdepääs kõigile süsteemi allalaadimistele" + "Võimaldab rakendusel vaadata ja muuta kõiki allalaadimisi, mille algatas süsteemis olev mis tahes rakendus." + "<Pealkirjata>" + "Allalaadimine on lõpetatud." + "Allalaadimine ebaõnnestus." + "Allalaad. on vaja WiFit." + "Peatatud taustal." + "Allalaadimine operaatori võrgu jaoks on liiga suur" + "%s suuruse allalaadimise jaoks tuleb kasutada WiFi-võrku.\n\nPuudutage valikut %s , et alustada allalaadimisega järgmine kord, kui olete WiFi-võrguga ühenduses." + "Kas lisada järjekorda hilisemaks allalaadimiseks?" + "%s 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 %s, et laadida see alla siis, kui olete WiFi-võrgus." + "Järjekord" + "Tühista" + "Alusta nüüd" + "%d %%" + + "1 faili allalaadimine" + "%d faili allalaadimine" + + + "1 fail on ootel" + "%d faili on ootel" + + "Jäänud: %s" + "Faili ei saa avada" + "Allalaadimised" + "Järjekorras" + "Töötlemisel" + "Ebaõnnestus" + diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml new file mode 100644 index 00000000..750ea405 --- /dev/null +++ b/res/values-hy-rAM/strings.xml @@ -0,0 +1,62 @@ + + + + + "Ներբեռնման կառավարիչ" + "Գործարկել ներբեռնման կառավարիչը:" + "Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարիչը և կիրառել ֆայլերի ներբեռնման համար: Վնասակար ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:" + "Ընդլայնված ներբեռնման կառավարչի գործառույթներ:" + "Թույլատրում է հավելվածին օգտագործել ներբեռնման կառավարչի ընդլայնված գործառույթները: Վնասակար ծրագրերը կարող են օգտագործել սա՝ ներբեռնումները վնասելու և անձնական տեղեկություններն օգտագործելու համար:" + "Ուղարկել ներբեռնման ծանուցումներ:" + "Թույլատրում է հավելվածին ուղարկել ավարտված ներբեռնումների մասին ծանուցումներ: Վնասակար ծրագրերը կարող են օգտագործել սա՝ այլ ֆայլեր ներբեռնող ծրագրերը վնասելու համար:" + "Տեսնել USB կրիչի բոլոր ներբեռնումները" + "Տեսնել SD քարտի բոլոր ներբեռնումները" + "Թույլատրում է հավելվածին տեսնել SD քարտի բոլոր ներբեռնումները` անտեսելով, թե որ հավելվածն է ներբեռնել դրանք:" + "Խնայել ներբեռնման շտեմի տարածությունը" + "Թույլատրում է հավելվածին ներբեռնել ֆայլերը ներբեռնման շտեմ, որոնք հնարավոր չէ ավտոմատ ջնջել, երբ ներբեռնման կառավարիչը հավելյալ ծավալի կարիք ունի:" + "ներբեռնել ֆայլերը՝ առանց ծանուցման" + "Թույլատրում է հավելվածին ներբեռնել ֆայլեր ներբեռնման կառավարչի միջոցով՝ առանց օգտագործողին որևէ ծանուցում ցուցադրելու:" + "Օգտագործել բոլոր համակարգային ներբեռնումները" + "Թույլատրում է հավելվածին դիտել և փոփոխել բոլոր ներբեռնումները` կապված համակարգի ցանկացած ծրագրի հետ:" + "<Անվերնագիր>" + "Ներբեռնումն ավարտված է:" + "Ներբեռնումը ձախողվել է:" + "Ներբեռնման ծավալը պահանջում է Wi-Fi:" + "Ընդմիջված է հետնաշերտում:" + "Ներբեռնումը չափազանց մեծ է օպերատորի ցանցի համար" + "Դուք պետք է օգտագործեք Wi-Fi՝ այս %s ներբեռնումն ավարտելու համար: \n\nՀպեք %s ՝ սկսելու այս ներբեռնումը հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:" + "Հերթագրե՞լ ավելի ուշ ներբեռնելու համար:" + "Այս %s ներբեռնումը հիմա սկսելը կարող է կարճեցնել ձեր մարտկոցի կյանքը և/կամ բերել ձեր բբջային տվյալների կապի ավելորդ օգտագործման, որը կարող է ուղեկցվել ծախսերով ձեր բջջային օպերատորի կողմից՝ կախված ձեր տվյալների փաթեթից:\n\n Հպեք %s ստորև` այս ներբեռնումը սկսելու հաջորդ անգամ, երբ միացած կլինեք որևէ Wi-Fi ցանցի:" + "Հերթականություն" + "Չեղարկել" + "Մեկնարկել հիմա" + "%d%%" + + "1 ֆայլ ներբեռնվում է" + "%d ֆայլ ներբեռնվում է" + + + "1 ֆայլ սպասում է" + "%d ֆայլ սպասում է" + + "մինչ ավարտը՝ %s" + "Հնարավոր չէ բացել ֆայլը" + "Ներբեռնումներ" + "Հերթագրված է" + "Ընթացքի մեջ է" + "Չի կատարվել" + diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index e7f42e85..37b8e943 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -17,16 +17,16 @@ "Gestione download" - "Accedere alla gestione dei download." + "Accesso alla gestione dei download." "Consente all\'applicazione di accedere a gestione dei download e di utilizzarla per scaricare file. Le applicazioni dannose possono farne uso per disturbare i download e accedere a informazioni private." "Funzioni avanzate di gestione dei download." "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." "Inviare notifiche di download." "Consente all\'applicazione di inviare notifiche relative ai download completati. Le applicazioni dannose possono farne uso per confondere altre applicazioni che scaricano file." "Tutti i download in archivio USB" - "Visualizza tutti i download sulla scheda SD" + "Visualizzazione di tutti i download sulla scheda SD" "Consente all\'applicazione di visualizzare tutti i download sulla scheda SD, a prescindere dall\'applicazione che li ha scaricati." - "Conserva spazio nella cache dei download" + "Conservazione spazio nella cache dei download" "Consente all\'applicazione di scaricare nella cache i file che non possono essere eliminati automaticamente quando a gestione dei download serve più spazio." "download file senza notifica" "Consente all\'applicazione di scaricare i file tramite gestione dei download senza mostrare alcuna notifica all\'utente." diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml new file mode 100644 index 00000000..25839d2b --- /dev/null +++ b/res/values-ka-rGE/strings.xml @@ -0,0 +1,62 @@ + + + + + "ჩამოტვირთვის მენეჯერი" + "ჩამოტვირთვის მენეჯერზე წვდომა." + "მიეცით აპლიკაციას ჩამოტვირთვის მენეჯერის წვდომისა და ფაილების ჩამოტვირთვებისთვის მისი გამოყენების უფლება. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ჩამოტვირთვის გაუმჯობესებული მენეჯერის ფუნქციები." + "მიეცით აპს ჩამოტვირთვის მენეჯერის გაუმჯობესებულ ფუნქციებზე წვდომის უფლება. ბოროტმოქმედმა აპებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ჩამოტვირთვის შეტყობინებების გაგზავნა." + "მიეცით აპს, უფლება, გააგზავნოს შეტყობინება დასრულებული ჩამოტვირთვების შესახებ. ბოროტმოქმედმა აპლიკაციებმა შეიძლება ეს გამოიყენონ ჩამოტვირთვების დასაზიანებლად და პირად ინფორმაციაზე წვდომისათვის." + "ყველა ჩამოტვირთვის USB მეხსიერებაში ნახვა" + "ყველა ჩამოტვირთვის SD ბარათზე ნახვა" + "მიეცით აპს უფლება, ნახოს ყველა ჩამოტვირთვა SD ბარათზე, განურჩევლად იმისა, თუ რომელმა აპმა ჩამოტვირთა ისინი." + "ჩამოტვირთვის ქეშში სივრცის ამობრუნება" + "მიეცით აპს უფლება ჩამოტვირთოს ფაილები ჩამოტვირთულ ქეშში. მისი წაშლა ავტომატურად შეუძლებელია მაშინ, როდესაც ჩამოტვირთვის მენეჯერს მეტი სივრცე სჭირდება." + "ფაილების ჩამოტვირთვა შეტყობინებების გარეშე" + "მიეცით აპს უფლება, ჩამოტვირთოს ფაილები ჩამოტვირთვის მენეჯერიდან მომხმარებლისთვის შეტყობინების ჩვენების გარეშე." + "ყველა სისტემურ ჩამოტვირთვაზე წვდომა" + "მიეცით აპს უფლება ნახოს და შეცვალოს ნებისმიერი ჩამოტვირთვა, რომელიც ინიცირებული იყო სისტემის ნებისმიერი აპის მიერ." + "<უსათაურო>" + "ჩამოტვირთვა დასრულდა." + "წარუმატებელი ჩამოტვირთვა." + "ჩამოტვირთვის ზომა ითხოვს Wi-Fi-ს." + "უკანა ფონზე დაპაუზებული." + "ჩამოტვირთვა ოპერატორის ქსელისთვის ძალიან დიდია" + "ამ %s ჩამოტვირთვის განსახორციელებლად უნდა გამოიყენოთ WiFi. \n\nშეეხეთ %s , რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში." + "ჩააყენებთ ჩამოტვირთვების რიგში?" + "ამ %s ჩამოტვირთვის დაწყება ახლა შეამცირებს თქვენი ელემენტის სიცოცხლეს და/ან გამოიწვევს თქვენი მობილური ინტერნეტის ინტენსიურ გამოყენებას. ეს თავისთავად განაპირობებს თქვენი მობილური ოპერატორისთვის შესაბამისი საფასურის გადახდას თქვენი ინტერნეტ გეგმიდან გამომდინარე. \n\n შეეხეთ %s, რათა დაიწყოთ ეს ჩამოტვირთვა მომავალში, როგორც კი ჩაერთვებით WiFi ქსელში." + "რიგი" + "გაუქმება" + "დაწყება ახლავე" + "%d%%" + + "1 ფაილი იტვირთება" + "%d ფაილი იტვირთება" + + + "1 ფაილი მოლოდინის რეჟმშია" + "%d ფაილი მოლოდინის რეჟიმშია" + + "%s მარცხნივ" + "ფაილის გახსნა ვერ ხერხდება" + "ჩამოტვირთვები" + "რიგშია" + "მიმდინარეობს" + "ვერ განხორციელდა" + diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml new file mode 100644 index 00000000..8117899e --- /dev/null +++ b/res/values-km-rKH/strings.xml @@ -0,0 +1,62 @@ + + + + + "កម្មវិធី​ទាញ​យក" + "ប្រើ​កម្មវិធី​គ្រប់គ្រង​ការ​ទាញ​យក។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​កម្មវិធី​ទាញ​យក ដើម្បី​ទាញ​យក​ឯកសារ។ កម្មវិធី​មិន​ល្អ​ផ្សេងទៀត​អាច​ប្រើ​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។" + "មុខងារ​កម្មវិធី​គ្រប់គ្រង​ការ​ទាញ​យក​កម្រិត​ខ្ពស់។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ប្រើ​មុខងារ​កម្រិត​ខ្ពស់​របស់​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​បង្អាក់​ការ​ទាញ​យក និង​ការ​ប្រើ​ព័ត៌មាន​ឯកជន។" + "ផ្ញើ​ព័ត៌មាន​ការ​ទាញ​យក។" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ផ្ញើ​ការ​ជូនដំណឹង​អំពី​ការ​បញ្ចប់​ការ​ទាញ​យក។ កម្មវិធី​មិន​ល្អ​អាច​ប្រើ​វា​ដើម្បី​រារាំង​កម្មវិធី​ទាញ​យក​ឯកសារ​ផ្សេងទៀត។" + "មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ឧបករណ៍​ផ្ទុក​យូអេសប៊ី" + "មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​កាត​អេសឌី" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​​មើល​ការ​ទាញ​យក​ទាំងអស់​ទៅកាន់​ការ​អេសឌី ប្រសិនបើ​គ្មាន​កម្មវិធី​ទាញ​យក​វា។" + "បម្រុងទុក​ទំហំ​នៅ​ក្នុង​ឃ្លាំង​ទាញ​យក" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​ទៅកាន់​ឃ្លាំង​ទាញ​យក ដែល​មិន​អាច​លុប​ដោយ​ស្វ័យប្រវត្តិ ពេល​កម្មវិធី​ទាញ​យក​ត្រូវការ​ទំហំ​ច្រើន។" + "ទាញ​យក​ឯកសារ​ដោយ​មិន​បាច់​ជូនដំណឹង" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​ទាញ​យក​ឯកសារ​តាម​កម្មវិធី​ទាញ​យក​ការ​គ្រប់គ្រង​​ដោយ​មិន​បាច់​មាន​ការ​ជូន​ដំណឹង​ទៅ​អ្នកប្រើ។" + "ដំណើរការ​ទាញ​យក​​ប្រព័ន្ធ​ទាំងអស់" + "អនុញ្ញាត​ឲ្យ​កម្មវិធី​មើល និង​កែ​ការ​ទាញ​យក​ទាំងអស់​ដែល​បាន​ចាប់ផ្ដើម​ដោយ​កម្មវិធី​ណាមួយ​នៅ​លើ​ប្រព័ន្ធ។" + "<Untitled>" + "បាន​បញ្ចប់​ការ​ទាញ​យក។" + "ការ​ទាញ​យក​បាន​បរាជ័យ។" + "ទំហំ​ការ​ទាញ​យក​ត្រូវការ​វ៉ាយហ្វាយ។" + "បាន​ផ្អាក​នៅ​ផ្ទៃ​ខាងក្រោយ។" + "ការ​ទាញ​យក​គឺ​ធំ​ពេក​សម្រាប់​បណ្ដាញ​ប្រតិបត្តិករ" + "អ្នក​ត្រូវតែ​ប្រើ​វ៉ាយហ្វាយ​ដើម្បី​បញ្ចប់​ការ​ទាញ​យក %s ។ \n\nប៉ះ %s ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។" + "ដាក់​ជា​ជួរ​ដើម្បី​ទាញ​យក​បន្ទាប់?" + "ចាប់ផ្ដើម​ការ​ទាញ​យក %s ឥឡូវ​អាច​បណ្ដាលឲ្យ​ថ្ម​របស់​អ្នក​មាន​អាយុ​ខ្លី និង/ឬ​បង្ហាញ​ថា​លើស​ការ​ប្រើ​នៃ​តំណ​ភ្ជាប់​ទិន្នន័យ​ទូរស័ព្ទ​របស់​អ្នក ដែល​អាច​គិត​ប្រាក់​ដោយ​ប្រតិបត្តិករ​ទូរស័ព្ទ​អាស្រ័យ​តាម​គម្រោង​ទិន្នន័យ​របស់​អ្នក។\n\n ប៉ះ %s ខាងក្រោម​ដើម្បី​ចាប់ផ្ដើម​ការ​ទាញ​យក​នេះ​នៅ​ពេល​អ្នក​បាន​តភ្ជាប់​បណ្ដាញ​វ៉ាយហ្វាយ។" + "ជួរ" + "បោះ​បង់" + "ចាប់ផ្ដើម​ឥឡូវ" + "%d%%" + + "កំពុង​ទាញ​យក​ឯកសារ ១" + "កំពុង​ទាញ​យក​ឯកសារ %d" + + + "កំពុង​រង់ចាំ​ឯកសារ ១" + "កំពុង​រង់ចាំ​ឯកសារ %d" + + "នៅសល់ %s" + "មិន​អាច​បើក​ឯកសារ" + "ទាញ​យក" + "​បាន​ដាក់​ក្នុង​ជួរ" + "កំពុង​ដំណើរការ" + "បាន​បរាជ័យ" + diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml new file mode 100644 index 00000000..3e2f2149 --- /dev/null +++ b/res/values-lo-rLA/strings.xml @@ -0,0 +1,62 @@ + + + + + "ໂຕຈັດການການດາວໂຫລດ" + "ເຂົ້າເຖິງໂຕຈັດການການດາວໂຫລດ." + "ອະນຸາຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງໂຕຈັດການການດາວໂຫລດ ແລະໃຊ້ມັນເພື່ອດາວໂຫລດໄຟລ໌. ແອັບຯທີ່ມີອັນຕະລາຍສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້." + "ຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ." + "ອະນຸຍາດໃຫ້ແອັບຯ ເຂົ້າເຖິງຄວາມສາມາດຂັ້ນສູງຂອງໂຕຈັດການການດາວໂຫລດ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ເພື່ອແຊກແຊງການດາວໂຫລດ ແລະເຂົ້າເຖິງຂໍ້ມູນສ່ວນໂຕໄດ້." + "ສົ່ງການແຈ້ງເຕືອນການດາວໂຫລດ." + "ອະນຸຍາດໃຫ້ແອັບຯ ສົ່ງການແຈ້ງເຕືອນເມື່ອດາວໂຫລດສຳເລັດແລ້ວ. ແອັບຯທີ່ມີອັນຕະລາຍ ສາມາດໃຊ້ການເຮັດວຽກນີ້ ສ້າງຄວາມສັບສົນໃຫ້ແອັບຯ ອື່ນໆທີ່ດາວໂຫລດໄຟລ໌ໄດ້." + "ເບິ່ງການດາວໂຫລດທັງໝົດໃນບ່ອນຈັດເກັບຂໍ້ມູນ USB" + "ເບິ່ງການດາວໂຫລດທັງໝົດໃນ SD card" + "ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ເຫັນການດາວໂຫລດໃນ SD ກາດທັງໝົດ, ໂດຍບໍ່ກ່ຽວວ່າມັນດາວໂຫລດມາຈາກແອັບຯໃດ." + "ເນື້ອທີ່ສະຫງວນໃນບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ" + "ອະນຸຍາດໃຫ້ແອັບຯ ດາວໂຫລດໄຟລ໌ໄປຍັງບ່ອນເກັບການດາວໂຫລດຊົ່ວຄາວ, ທີ່ບໍ່ສາມາດລຶບໂດຍອັດຕະໂນມັດ ຫາກໂຕຈັດການການດາວໂຫລດຕ້ອງການພື້ນທີ່ເພີ່ມ." + "ດາວໂຫລດໄຟລ໌ໂດຍບໍ່ແຈ້ງເຕືອນ" + "ອະນຸຍາດໃຫ້ແອັບຯດັ່ງກ່າວ ດາວໂຫລດໄຟລ໌ຜ່ານໂຕຈັດການການດາວໂຫລດ ໂດຍບໍ່ແຈ້ງເຕືອນຜູ່ໃຊ້ແຕ່ຢ່າງໃດ." + "ເຂົ້າເຖິງການດາວໂຫລດທັງໝົດຂອງລະບົບ" + "ອະນຸຍາດໃຫ້ແອັບຯ ເບິ່ງ ແລະ ແກ້ໄຂການດາວໂຫລດທັງໝົດທີ່ເລີ່ມໂດຍທຸກໆແອັບຯໃນລະບົບ." + "<ບໍ່ມີຊື່>" + "ການດາວໂຫຼດສໍາເລັດແລ້ວ." + "ດາວໂຫຼດບໍ່ສຳເລັດ." + "ຂະຫນາດການດາວໂຫຼດຕ້ອງໃຊ້ການເຊື່ອມຕໍ່ Wi-Fi." + "ຢຸດຊົ່ວຄາວໃນເບື້ອງຫຼັງແລ້ວ." + "ການດາວໂຫລດໃຫຍ່ເກີນໄປທີ່ຈະດາວໂຫລດຜ່ານລະບົບອິນເຕີເນັດມືຖື" + "ທ່ານຕ້ອງໃຊ້ Wi-Fi ເພື່ອດາວໂຫລດໄຟລ໌ຂະໜາດ %s ນີ້. \n \n ແຕະທີ່ %s ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ." + "ເຂົ້າຄິວເພື່ອດາວໂຫລດໃນພາຍຫຼັງ?" + "ການດາວໂຫລດໄຟລ໌ໃຫຍ່ຂະໜາດ %s ນີ້ ອາດເຮັດອາຍຸແບັດເຕີຣີຂອງທ່ານສັ້ນລົງ ຫຼື ນຳໃຊ້ຂໍ້ມູນການເຊື່ອມຕໍ່ຂໍ້ມູນຜ່ານມືຖືຫຼາຍ, ເຊິ່ງເຮັດໃຫ້ທ່ານອາດຕ້ອງເສຍຄ່າບໍລິການແພງຂຶ້ນ.\n\n ສຳຜັດ %s ເພື່ອເລີ່ມການດາວໂຫລດນີ້ ເມື່ອມີການທ່ານເຊື່ອມຕໍ່ WiFi ໃນຄັ້ງຕໍ່ໄປ." + "ຄິວ" + "ຍົກເລີກ" + "ເລີ່ມດຽວນີ້" + "%d%%" + + "ກຳລັງດາວໂຫລດ 1 ໄຟລ໌" + "ກຳລັງດາວໂຫລດ %d ໄຟລ໌" + + + "ລໍຖ້າ 1 ໄຟລ໌" + "ລໍຖ້າ %d ໄຟລ໌" + + "ຍັງເຫຼືອ %s" + "ບໍ່ສາມດາເປີດໄຟລ໌ໄດ້" + "ດາວໂຫລດ" + "ເຂົ້າຄິວແລ້ວ" + "ກຳລັງດຳເນີນການ" + "ບໍ່ສຳເລັດ" + diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml new file mode 100644 index 00000000..71b6b617 --- /dev/null +++ b/res/values-ms-rMY/strings.xml @@ -0,0 +1,62 @@ + + + + + "Pengurus Muat Turun" + "Akses pengurus muat turun." + "Membenarkan aplikasi untuk mengakses pengurus muat turun dan menggunakannya untuk memuat turun fail. Aplikasi berniat jahat boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi." + "Fungsi pengurus muat turun lanjutan." + "Membenarkan aplikasi mengakses fungsi-fungsi lanjutan pengurus muat turun. Aplikasi berbahaya boleh menggunakan ini untuk mengganggu muat turun dan mengakses maklumat peribadi." + "Hantar pemberitahuan muat turun." + "Membenarkan aplikasi menghantar pemberitahuan tentang muat turun yang telah siap. Aplikasi berbahaya boleh menggunakan ini untuk mengelirukan aplikasi lain yang memuat turun fail." + "Lihat m.turun ke strn USB" + "Lihat semua muat turun ke kad SD" + "Membenarkan aplikasi untuk melihat semua muat turun ke kad SD, tidak kira aplikasi mana yang memuat turun." + "Menempah ruang dalam cache muat turun" + "Membenarkan aplikasi memuat turun fail ke cache muat turun, yang tidak boleh dipadamkan secara automatik apabila pengurus muat turun memerlukan lebih banyak ruang." + "memuat turun fail tanpa pemberitahuan" + "Membenarkan aplikasi memuat turun fail melalui pengurus muat turun tanpa menunjukkan sebarang pemberitahuan kepada pengguna." + "Mengakses semua muat turun sistem" + "Membenarkan aplikasi untuk melihat dan mengubah suai semua muat turun yang dimulakan oleh mana-mana aplikasi pada sistem." + "<Tidak bertajuk>" + "Muat turun selesai." + "Muat turun tidak berjaya." + "Saiz m.trn perlukn Wi-Fi" + "Dijeda di latar belakang." + "Muat turun terlalu besar untuk operator rangkaian" + "Anda mesti menggunakan Wi-Fi untuk melengkapkan muat turun %s ini. \n\nSentuh %s untuk memulakan muat turun ini lain kali anda disambungkan ke rangkaian Wi-Fi." + "Baris gilir untuk dimuat turun kemudian?" + "Memulakan muat turun %s 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 %s untuk memulakan muat turun ini pada kali seterusnya anda disambungkan kepada rangkaian Wi-Fi." + "Baris gilir" + "Batal" + "Mulakan sekarang" + "%d%%" + + "1 fail sedang dimuat turun" + "%d fail sedang dimuat turun" + + + "1 fail sedang menunggu" + "%d fail sedang menunggu" + + "%s tinggal" + "Tidak dapat membuka fail" + "Muat turun" + "Dibaris gilir" + "Sedang berlangsung" + "Tidak berjaya" + diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml new file mode 100644 index 00000000..8edcad9a --- /dev/null +++ b/res/values-ne-rNP/strings.xml @@ -0,0 +1,62 @@ + + + + + "डाउनलोड प्रबन्धक" + "डाउनलोड प्रबन्धक पहुँच गर्नुहोस्" + "फाइल डाउनलोड गर्नका लागि अनुप्रयोगलाई डाउनलोड प्रबन्धकको पहुँचको अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोडहरू अवरूद्ध गर्न र निजी जानकारी पहुँच गर्न यसको प्रयोग गर्न सक्छन्।" + "उन्नत डाउनलोड प्रबन्धक प्रकार्यहरू" + "अनुप्रयोगलाई डाउनलोड प्रबन्धकको उन्नत प्रकार्यहरू पहुँच गर्न अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले यसलाई डाउनलोड अवरूद्ध गरी निजी जानकारी पहुँच गर्न प्रयोग गर्न सक्छ।" + "डाउनलोड सूचनाहरू पठाउनुहोस्।" + "अनुप्रयोगलाई समाप्त भएका डाउनलोडहरूका सूचनाहरू पठाउन अनुमति दिन्छ। हानिकारक अनुप्रयोगहरूले फाइल डाउनलोड गर्ने अन्य अनुप्रयोगलाई झुक्याउनका लागि यसलाई प्रयोग गर्न सक्छन्।" + "सबै डाउनलोडहरूलाई USB भण्डारणमा हेर्नुहोस्" + "सबै डाउनलोडहरूलाई SD कार्डमा हेर्नुहोस्" + "जुनसुकै अनुप्रयोगले डाउनलोड गरेको भए पनि अनुप्रयोगलाई सम्पूर्ण डाउनलोडहरूलाई SD कार्डमा देख्ने अनुमति दिन्छ ।" + "डाउनलोड केसमा ठाउँ ओगट्नुहोस्" + "अनुप्रयोगलाई फाइलहरूलाई डाउनलोड केसमा डाउनलोड गर्न अनुमति दिन्छ, जुन डाउनलोड प्रबन्धकलाई थप ठाउँ चाहिएको खण्डमा स्वचालित रूपमा हटाउन सकिदैन।" + "बिना सूचना फाइलहरू डाउनलोड गर्नुहोस्" + "अनुप्रयोगलाई डाउनलोड प्रबन्धकका माध्ययमद्वारा प्रयोगकर्तामा सूचना नदेखाई फाइलहरू डाउनलोड गर्ने अनुमति दिन्छ।" + "सम्पूर्ण प्रणाली डाउनलोडहरू पहुँच गर्नुहोस्" + "अनुप्रयोगलाई कुनै पनि अनुप्रयोगले प्रणालीमा पहल गरेको सम्पूर्ण डाउनलोडहरू हेर्ने र परिमार्जन गर्ने अनुमति दिन्छ।" + "<शीर्षकविहिन>" + "डाउनलोड पुरा भयो।" + "डाउनलोड असफल" + "डाउनलोड आकारलाई वाइ-फाइ चाहिन्छ।" + "पृष्ठभूमिमा रोकिएको छ।" + "अपरेटर सञ्जालका लागि डाउनलोड ज्यादै ठूलो" + "तपाईँले वाइफाइ प्रयोग गर्नु पर्छ यस %s डाउनलोड समाप्त गर्न। \n\nछुनुहोस् %s यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईँ वाइ-फाइ सञ्जालामा जडित भए पछि।" + "पछि डाउनलोडका लागि लाममा राख्ने हो?" + "यस %s डाउनलोडलाई सुरु गर्दा तपाईँको ब्याट्रिको काल छोट्टिन सक्छ र/वा तपाईँको मोबाइल डेटा जडानको अधिकतम प्रयोग भई तपाईँको डेटा योजना अनुसार मोबाइल अपरेटरले थप शुल्क लिन सक्छ। \n\n छुनुहोस् %sतल यस डाउनलोडलाई सुरु गर्न अर्को पटक तपाईँ वाइफाइ सन्जालमा जडित हुने बेला।" + "लाम" + "रद्द गर्नुहोस्" + "अहिले सुरु गर्नुहोस्" + "%d%%" + + "१ फाइल डाउनलोड हुँदै" + "%d फाइलहरू डाउनलोड हुँदै" + + + "१ फाइल पर्खँदै" + "%d फाइलहरू पर्खँदै" + + "%s बाँकी छ" + "फाइल खोल्न सक्दैन" + "डाउनलोडहरू" + "लाममा राखियो" + "प्रगतिमा" + "असफल" + diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml new file mode 100644 index 00000000..67804315 --- /dev/null +++ b/res/values-si-rLK/strings.xml @@ -0,0 +1,62 @@ + + + + + "බාගැනීමේ කළමනාකරු" + "බාගැනීම් කළමනාකරු ප්‍රවේශ කරන්න." + "යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරු ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක." + "උසස් බාගැනීම් කළමනාකරු විශේෂාංග." + "යෙදුම් හට මෙය භාවිතා කර බාගැනීම් කළමනාකරුගේ උසස් විශේෂාංග ප්‍රවේශ කර ගොනු බාගැනීමට අවසර දෙන්න. කරදරකාරී යෙදුම් හට මෙය භාවිතා කර බාගැනීම් වලට බාධා පමුණුවා පෞද්ගලික තොරතුරු ප්‍රවේශ කිරීමට යොදාගත හැක." + "බාගැනීමේ දැනුම්දීම් යවන්න." + "සම්පුර්ණ වූ බාගැනීම් පිලිබඳ දැනුම්දීම් යැවීමට යෙදුමට අවසර දෙන්න. කරදරකාරී යෙදුම් වලට මෙය යොදාගනිමින් ගොනු බාගත කරන වෙනත් යෙදුම් අමාරුවේ දැමිය හැක." + "USB ආචයනය වෙත සියලු බාගැනීම් බලන්න" + "SD පත වෙත සියලු බාගැනීම් බලන්න" + "බාගත්තේ කුමන යෙදුමද යන්න සැලකිල්ලට නොගෙන, SD කාඩ්පත වෙත සියලු බාගැනීම් බැලීමට යෙදුමට අවසර දෙන්න." + "බාගැනීම් හැඹිලියේ ඉඩ වෙන් කරගන්න" + "යෙදුමට ගොනු බාගැනීමේ හැඹිලියට බාගැනීමට අවසර දෙන්න, එය බාගැනීමේ කළමනාකරුට තවත් ඉඩ අවශ්‍ය වූ විට ස්වයංක්‍රීයව මැකිය නොහැක." + "දැනුම්දීමකින් තොරව ගොනු බාගන්න" + "පරිශීලකයාට කිසිඳු දැනුම්දීමක් කිරීමකින් තොරව බාගැනීම් කළමනාකරු හරහා ගොනු බාගත කරගැනීමට යෙදුමට අවසර දෙන්න." + "සියලු පද්ධති බාගැනීම් ප්‍රවේශ කරන්න" + "පද්ධතියේ ඕනෑම යෙදුමකින් ආරම්භ කරන ලද සියලු බාගැනීම් දර්ශනය කිරීමට සහ වෙනස් කිරීමට යෙදුමට අවසර දෙන්න." + "<නම් නොකළ>" + "බාගැනීම සම්පූර්ණයි." + "බාගැනීම අසාර්ථකයි." + "බාගැනීමේ ප්‍රමාණයට Wi-Fi අවශ්‍යවේ." + "පසුබිමේ නවතා ඇත." + "ක්‍රියාකරු ජාලයට බාගැනීම විශාල වැඩිය" + "මෙම %s බාගැනීම සිදු කිරීමට ඔබ Wi-Fi භාවිතා කළ යුතුය. \n\nඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත %s ස්පර්ශ කරන්න." + "පසුව බාගැනීමට පෝලිමේ තබන්නද?" + "මෙම %s බාගැනීම දැන් ආරම්භ කිරීමෙන් ඔබගේ බැටරි ආයු කාලය අඩුවේ සහ/හෝ ඔබගේ ජංගම දත්ත සම්බන්ධතාවය භාවිතය අධික වේ, එය ඔබගේ දත්ත සැලසුමට අනුව විශාල ගෙවීමක් සිදුවිය හැක.\n\n ඔබ මීළඟට WiFi ජාලයකට සම්බන්ධ වූ පසු බාගැනීම ආරම්භ කිරීමට පහත %s ස්පර්ශ කරන්න." + "පෝලිම" + "අවලංගු කරන්න" + "දැන් අරඹන්න" + "%d%%" + + "ගොනු 1 ක් බාගත වෙමින්" + "ගොනු %d බාගත වෙමින්" + + + "ගොනු 1 රැඳී සිටිමින්" + "ගොනු %d රැඳී සිටිමින්" + + "%s ඉතිරියි" + "ගොනුව විවෘත කළ නොහැකි විය" + "බාගැනීම්" + "පෙළ ගසන ලදි" + "ක්‍රියාවේ පවතී" + "අසාර්ථකයි" + -- cgit v1.2.3 From ec62bdf20cbfa709c9dea9101fe668fec315c103 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 28 Aug 2013 17:54:21 -0700 Subject: Follow stronger DocumentsProvider contract. Provides same functionality, but follows updated DocumentsProvider contract in framework. Bug: 10497206 Change-Id: Ie1f6180047ff7bad289679a14f3368238d47b1d6 --- AndroidManifest.xml | 3 +- src/com/android/providers/downloads/Constants.java | 2 +- .../downloads/DownloadStorageProvider.java | 288 +++++++-------------- .../providers/downloads/TrampolineActivity.java | 10 +- .../providers/downloads/ui/DownloadList.java | 6 +- 5 files changed, 104 insertions(+), 205 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index cd8aec5f..398f8f4c 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -110,7 +110,8 @@ + android:theme="@android:style/Theme.NoDisplay" + android:permission="android.permission.MANAGE_DOCUMENTS"> diff --git a/src/com/android/providers/downloads/Constants.java b/src/com/android/providers/downloads/Constants.java index 3fbd400f..e33a6362 100644 --- a/src/com/android/providers/downloads/Constants.java +++ b/src/com/android/providers/downloads/Constants.java @@ -176,5 +176,5 @@ public class Constants { public static final boolean LOGVV = LOCAL_LOGVV && LOGV; public static final String STORAGE_AUTHORITY = "com.android.providers.downloads.documents"; - public static final String STORAGE_ROOT = "downloads"; + public static final String STORAGE_DOC_ID_ROOT = "downloads"; } diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index b606e652..58df58a7 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -18,63 +18,55 @@ package com.android.providers.downloads; import android.app.DownloadManager; import android.app.DownloadManager.Query; -import android.content.ContentProvider; -import android.content.ContentValues; import android.content.Context; -import android.content.UriMatcher; +import android.content.res.AssetFileDescriptor; import android.database.Cursor; import android.database.MatrixCursor; import android.database.MatrixCursor.RowBuilder; -import android.net.Uri; +import android.graphics.Point; import android.os.Binder; +import android.os.CancellationSignal; import android.os.ParcelFileDescriptor; import android.provider.DocumentsContract; import android.provider.DocumentsContract.DocumentColumns; +import android.provider.DocumentsContract.DocumentRoot; import android.provider.DocumentsContract.Documents; -import android.provider.DocumentsContract.RootColumns; -import android.provider.DocumentsContract.Roots; +import android.provider.DocumentsProvider; + +import com.google.common.collect.Lists; import libcore.io.IoUtils; import java.io.FileNotFoundException; +import java.util.List; /** * Presents a {@link DocumentsContract} view of {@link DownloadManager} * contents. */ -public class DownloadStorageProvider extends ContentProvider { - private static final String AUTHORITY = Constants.STORAGE_AUTHORITY; - private static final String ROOT = Constants.STORAGE_ROOT; - - private static final UriMatcher sMatcher = new UriMatcher(UriMatcher.NO_MATCH); - - private static final int URI_ROOTS = 1; - private static final int URI_ROOTS_ID = 2; - private static final int URI_DOCS_ID = 3; - private static final int URI_DOCS_ID_CONTENTS = 4; - - static { - sMatcher.addURI(AUTHORITY, "roots", URI_ROOTS); - sMatcher.addURI(AUTHORITY, "roots/*", URI_ROOTS_ID); - sMatcher.addURI(AUTHORITY, "roots/*/docs/*", URI_DOCS_ID); - sMatcher.addURI(AUTHORITY, "roots/*/docs/*/contents", URI_DOCS_ID_CONTENTS); - } +public class DownloadStorageProvider extends DocumentsProvider { + private static final String DOC_ID_ROOT = Constants.STORAGE_DOC_ID_ROOT; - private static final String[] ALL_ROOTS_COLUMNS = new String[] { - RootColumns.ROOT_ID, RootColumns.ROOT_TYPE, RootColumns.ICON, RootColumns.TITLE, - RootColumns.SUMMARY, RootColumns.AVAILABLE_BYTES - }; - - private static final String[] ALL_DOCUMENTS_COLUMNS = new String[] { + private static final String[] SUPPORTED_COLUMNS = new String[] { DocumentColumns.DOC_ID, DocumentColumns.DISPLAY_NAME, DocumentColumns.SIZE, DocumentColumns.MIME_TYPE, DocumentColumns.LAST_MODIFIED, DocumentColumns.FLAGS }; + private DocumentRoot mRoot; + private DownloadManager mDm; private DownloadManager.Query mBaseQuery; @Override public boolean onCreate() { + + mRoot = new DocumentRoot(); + mRoot.docId = DOC_ID_ROOT; + mRoot.rootType = DocumentRoot.ROOT_TYPE_SHORTCUT; + mRoot.title = getContext().getString(R.string.root_downloads); + mRoot.icon = R.mipmap.ic_launcher_download; + mRoot.flags = DocumentRoot.FLAG_LOCAL_ONLY; + mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); mDm.setAccessAllDownloads(true); mBaseQuery = new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true); @@ -83,91 +75,98 @@ public class DownloadStorageProvider extends ContentProvider { } @Override - public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, - String sortOrder) { - switch (sMatcher.match(uri)) { - case URI_ROOTS: { - final MatrixCursor result = new MatrixCursor( - projection != null ? projection : ALL_ROOTS_COLUMNS); - includeDefaultRoot(result); - return result; - } - case URI_ROOTS_ID: { - final MatrixCursor result = new MatrixCursor( - projection != null ? projection : ALL_ROOTS_COLUMNS); - includeDefaultRoot(result); - return result; - } - case URI_DOCS_ID: { - final String docId = DocumentsContract.getDocId(uri); - final MatrixCursor result = new MatrixCursor( - projection != null ? projection : ALL_DOCUMENTS_COLUMNS); + public List getDocumentRoots() { + return Lists.newArrayList(mRoot); + } - if (Documents.DOC_ID_ROOT.equals(docId)) { - includeDefaultDocument(result); - } else { - // Delegate to real provider - final long token = Binder.clearCallingIdentity(); - Cursor cursor = null; - try { - cursor = mDm.query( - new Query().setFilterById(getDownloadFromDocument(docId))); - if (cursor.moveToFirst()) { - includeDownloadFromCursor(result, cursor); - } - } finally { - IoUtils.closeQuietly(cursor); - Binder.restoreCallingIdentity(token); - } - } - return result; + @Override + public void deleteDocument(String docId) throws FileNotFoundException { + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + try { + if (mDm.remove(Long.parseLong(docId)) != 1) { + throw new IllegalStateException("Failed to delete " + docId); } - case URI_DOCS_ID_CONTENTS: { - final String docId = DocumentsContract.getDocId(uri); - final MatrixCursor result = new MatrixCursor( - projection != null ? projection : ALL_DOCUMENTS_COLUMNS); - - if (!Documents.DOC_ID_ROOT.equals(docId)) { - throw new UnsupportedOperationException("Unsupported Uri " + uri); - } + } finally { + Binder.restoreCallingIdentity(token); + } + } - // Delegate to real provider - final long token = Binder.clearCallingIdentity(); - Cursor cursor = null; - try { - cursor = mDm.query(mBaseQuery); - while (cursor.moveToNext()) { - includeDownloadFromCursor(result, cursor); - } - } finally { - IoUtils.closeQuietly(cursor); - Binder.restoreCallingIdentity(token); + @Override + public Cursor queryDocument(String docId) throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(SUPPORTED_COLUMNS); + + if (DOC_ID_ROOT.equals(docId)) { + includeDefaultDocument(result); + } else { + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + cursor = mDm.query(new Query().setFilterById(Long.parseLong(docId))); + if (cursor.moveToFirst()) { + includeDownloadFromCursor(result, cursor); } - return result; + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); } - default: { - throw new UnsupportedOperationException("Unsupported Uri " + uri); + } + return result; + } + + @Override + public Cursor queryDocumentChildren(String docId) throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(SUPPORTED_COLUMNS); + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + cursor = mDm.query(mBaseQuery); + while (cursor.moveToNext()) { + includeDownloadFromCursor(result, cursor); } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); } + return result; } - private void includeDefaultRoot(MatrixCursor result) { - final RowBuilder row = result.newRow(); - row.offer(RootColumns.ROOT_ID, ROOT); - row.offer(RootColumns.ROOT_TYPE, Roots.ROOT_TYPE_SHORTCUT); - row.offer(RootColumns.TITLE, getContext().getString(R.string.root_downloads)); + @Override + public ParcelFileDescriptor openDocument(String docId, String mode, CancellationSignal signal) + throws FileNotFoundException { + if (!"r".equals(mode)) { + throw new IllegalArgumentException("Downloads are read-only"); + } + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + try { + return mDm.openDownloadedFile(Long.parseLong(docId)); + } finally { + Binder.restoreCallingIdentity(token); + } + } + + @Override + public AssetFileDescriptor openDocumentThumbnail( + String docId, Point sizeHint, CancellationSignal signal) throws FileNotFoundException { + // TODO: extend ExifInterface to support fds + final ParcelFileDescriptor pfd = openDocument(docId, "r", signal); + return new AssetFileDescriptor(pfd, 0, AssetFileDescriptor.UNKNOWN_LENGTH); } private void includeDefaultDocument(MatrixCursor result) { final RowBuilder row = result.newRow(); - row.offer(DocumentColumns.DOC_ID, Documents.DOC_ID_ROOT); - row.offer(DocumentColumns.DISPLAY_NAME, getContext().getString(R.string.root_downloads)); + row.offer(DocumentColumns.DOC_ID, DOC_ID_ROOT); row.offer(DocumentColumns.MIME_TYPE, Documents.MIME_TYPE_DIR); } private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { final long id = cursor.getLong(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ID)); - final String docId = getDocumentFromDownload(id); + final String docId = String.valueOf(id); final String displayName = cursor.getString( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TITLE)); @@ -225,101 +224,4 @@ public class DownloadStorageProvider extends ContentProvider { row.offer(DocumentColumns.LAST_MODIFIED, lastModified); row.offer(DocumentColumns.FLAGS, flags); } - - private interface TypeQuery { - final String[] PROJECTION = { - DocumentColumns.MIME_TYPE }; - - final int MIME_TYPE = 0; - } - - @Override - public String getType(Uri uri) { - switch (sMatcher.match(uri)) { - case URI_ROOTS: { - return Roots.MIME_TYPE_DIR; - } - case URI_ROOTS_ID: { - return Roots.MIME_TYPE_ITEM; - } - case URI_DOCS_ID: { - final Cursor cursor = query(uri, TypeQuery.PROJECTION, null, null, null); - try { - if (cursor.moveToFirst()) { - return cursor.getString(TypeQuery.MIME_TYPE); - } else { - return null; - } - } finally { - IoUtils.closeQuietly(cursor); - } - } - default: { - throw new UnsupportedOperationException("Unsupported Uri " + uri); - } - } - } - - public static long getDownloadFromDocument(String docId) { - return Long.parseLong(docId.substring(docId.indexOf(':') + 1)); - } - - private String getDocumentFromDownload(long id) { - return "id:" + id; - } - - @Override - public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { - switch (sMatcher.match(uri)) { - case URI_DOCS_ID: { - final String docId = DocumentsContract.getDocId(uri); - - if (!"r".equals(mode)) { - throw new IllegalArgumentException("Downloads are read-only"); - } - - // Delegate to real provider - final long token = Binder.clearCallingIdentity(); - try { - return mDm.openDownloadedFile(getDownloadFromDocument(docId)); - } finally { - Binder.restoreCallingIdentity(token); - } - } - default: { - throw new UnsupportedOperationException("Unsupported Uri " + uri); - } - } - } - - @Override - public Uri insert(Uri uri, ContentValues values) { - throw new UnsupportedOperationException("Unsupported Uri " + uri); - } - - @Override - public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { - throw new UnsupportedOperationException("Unsupported Uri " + uri); - } - - @Override - public int delete(Uri uri, String selection, String[] selectionArgs) { - switch (sMatcher.match(uri)) { - case URI_DOCS_ID: { - final String docId = DocumentsContract.getDocId(uri); - - // Delegate to real provider - // TODO: only storage UI should be allowed to delete? - final long token = Binder.clearCallingIdentity(); - try { - return mDm.remove(getDownloadFromDocument(docId)); - } finally { - Binder.restoreCallingIdentity(token); - } - } - default: { - throw new UnsupportedOperationException("Unsupported Uri " + uri); - } - } - } } diff --git a/src/com/android/providers/downloads/TrampolineActivity.java b/src/com/android/providers/downloads/TrampolineActivity.java index a1e99161..0f494cff 100644 --- a/src/com/android/providers/downloads/TrampolineActivity.java +++ b/src/com/android/providers/downloads/TrampolineActivity.java @@ -17,10 +17,9 @@ package com.android.providers.downloads; import android.app.Activity; +import android.content.ContentUris; import android.content.Intent; -import android.net.Uri; import android.os.Bundle; -import android.provider.DocumentsContract; /** * PackageInstaller really wants raw files. @@ -30,11 +29,8 @@ public class TrampolineActivity extends Activity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final Uri documentUri = getIntent().getData(); - final String docId = DocumentsContract.getDocId(documentUri); - final long downloadId = DownloadStorageProvider.getDownloadFromDocument(docId); - - final Intent intent = OpenHelper.buildViewIntent(this, downloadId); + final long id = ContentUris.parseId(getIntent().getData()); + final Intent intent = OpenHelper.buildViewIntent(this, id); startActivity(intent); finish(); } diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index 57530474..443491a9 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -151,9 +151,9 @@ public class DownloadList extends Activity { super.onCreate(icicle); // Trampoline over to new management UI - final Intent intent = new Intent(Intent.ACTION_MANAGE_DOCUMENT); - intent.setData(DocumentsContract.buildRootUri( - Constants.STORAGE_AUTHORITY, Constants.STORAGE_ROOT)); + final Intent intent = new Intent(DocumentsContract.ACTION_MANAGE_DOCUMENTS); + intent.setData(DocumentsContract.buildDocumentUri( + Constants.STORAGE_AUTHORITY, Constants.STORAGE_DOC_ID_ROOT)); startActivity(intent); finish(); } -- cgit v1.2.3 From a91059d402aca0d7f5cbe8123b6820eac0974a80 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Thu, 29 Aug 2013 01:30:59 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I107503db5dd53420ad908e8bd6e489ebf5971e71 Auto-generated-cl: translation import --- res/values-az-rAZ/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-mn-rMN/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 res/values-az-rAZ/strings.xml create mode 100644 res/values-mn-rMN/strings.xml diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml new file mode 100644 index 00000000..cb1bb740 --- /dev/null +++ b/res/values-az-rAZ/strings.xml @@ -0,0 +1,62 @@ + + + + + "Endirmə İdarəçisi" + "Endirmə idarəçisinə daxil ol." + "Tətbiqə faylları endirmək üçün endirmə idarçisinə daxil olmağa imkan verir. Zərərli tətbiqlər bundan endirmələri pozmaq və özəl məlumatlara daxil olmaq üçün istifadə edə bilər." + "Ətraflı endirmə idarəçisi funksiyaları." + "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." + "Endirmə məlumatı göndər." + "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." + "USB yaddaşına bütün endirmələrə baxın" + "SD karta endirmələrə baxın" + "Tətbiqə hansı tətbiqin endirdiyindən asılı olmayaraq yaddaş kartındakı endirilən faylları görmə imkanı verir." + "Endirmə keşində ehtiyat yer mühafizə et" + "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." + "xəbərdarlıq etmədən faylları endir" + "Bu tətbiq istifadəçiyə hər hansı bir məlumat göstərmədən faylları endirmə idarəçisi vasitəsi ilə endirmək imkanı verir." + "Sistemdəki bütün endirilənlərə gir" + "Tətbiqə başqa bir tətbiq vasitəsi ilə başladılan endirmələri göstərmək və dəyişdirmək imkanı verir." + "<Başlıqsız>" + "Endirmə tamamlandı." + "Endirmə uğursuz oldu." + "Endirmə həcmi Wi-Fi tələb edir." + "Arxa fonda dayandırıldı." + "Endirmə operator şəbəkə üçün çox böyükdür" + "Bu %s 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 %s toxunun." + "Daha sonra endirmək üçün növbəyə salmaq istəyirsiniz?" + "Bu %s 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 %s toxunun." + "Növbəyə sal" + "Ləğv et" + "İndi başlat" + "%d %%" + + "1 fayl endirilir" + "%d fayl endirilir" + + + "1 fayl gözləyir" + "%d fayl gözləyir" + + "%s qalır" + "Fayl açılmır" + "Endirmələr" + "Növbəyə salınıb" + "Davam edir" + "Uğursuz" + diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml new file mode 100644 index 00000000..7019d6e7 --- /dev/null +++ b/res/values-mn-rMN/strings.xml @@ -0,0 +1,62 @@ + + + + + "Татан авалтын Менежер" + "Татан авалтын менежерт хандалт хийх." + "Апп нь татан авалтын менежерт хандалт хийх, үүнийг ашиглан файл татах боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой." + "Татан авалтын менежерийн дэлгэрэнгүй функцууд." + "Апп нь татан авалтын менежерийн дэлгэрэнгүй функцуудад хандалт хийх боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой." + "Татан авалтын мэдэгдэл илгээх." + "Апп нь татан авч дууссан талаарх мэдэгдэл явуулах боломжтой. Хортой апп-ууд энийг ашиглан файл татдаг бусад апп-уудыг төөрөгдөлд оруулж болно." + "Татаж авсан бүх файлыг USB сангаас харах" + "Татаж авсан бүх файлыг SD картаас харах" + "Апп нь аль апп-с татсанаас хамаарахгүйгээр SD картад хадгалагдсан бүх файлыг харах боломжтой." + "Татан авалтын кеш дотор зай нөөцлөх" + "Апп нь татан авалтын менежерт илүү зай хэрэгтэй болсон үед автоматаар устгалгүйгээр файлыг татан авалтын кеш-д хадгалах боломжтой." + "мэдэгдэл өгөхгүйгээр файлуудыг татаж авах" + "Апп нь хэрэглэгчид ямар нэгэн мэдэгдэл харуулахгүйгээр татан авагчаар дамжуулан файл татаж авах боломжтой." + "Системийн татан авсан бүх файлуудад хандалт хийх" + "Апп нь системийн дурын апп-н эхлүүлсэн бүх татан авалтуудыг үзэх, өөрчлөх боломжтой." + "<Гарчиггүй>" + "Татаж авч дууслаа." + "Амжилттай татаж авлаа." + "Татаж авах хэмжээ Wi-Fi шаардана." + "Ар талд түр зогсоогдсон" + "Татан авалт нь операторын сүлжээнд хэт том байна" + "Та энэ %s татан авалтыг гүйцээхийн тулд Wi-Fi-д холбогдох шаардлагатай. Та дараагийн удаа Wi-Fi сүлжээнд холбогдмогц энэ татан авалтыг эхлүүлэхийн тулд \n\nХүрнэ үү %s " + "Дараа татахаар хүлээлгэх үү?" + "Энэ %s татан авалтыг одоо эхлүүлснээр таны зайны цэнэг дуусах болон/эсхүл мобайл дата холболтыг хэт их хэрэглэх, улмаар өндөр төлбөр төлөхөд хүрч болзошгүй. Дараагийн удаа WiFi сүлжээнд холбогдохдоо татаж эхлүүлэхийн тулд доорхыг \n\n Товшино уу %s." + "Хүлээх" + "Цуцлах" + "Одоо эхлүүлэх" + "%d%%" + + "1 файл татаж байна" + "%d файл татаж байна" + + + "1 файл хүлээлгэнд" + "%d файл хүлээлгэнд" + + "%s үлдсэн" + "Файлыг нээж чадахгүй байна" + "Татан авалтууд" + "Хүлээлгэнд" + "Үргэлжилж байгаа" + "Амжилтгүй" + -- cgit v1.2.3 From 3c56a64a6433bbcae8f837ea1a965c4031f05c80 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Thu, 29 Aug 2013 01:30:59 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I107503db5dd53420ad908e8bd6e489ebf5971e71 Auto-generated-cl: translation import --- res/values-az-rAZ/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ res/values-mn-rMN/strings.xml | 62 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 res/values-az-rAZ/strings.xml create mode 100644 res/values-mn-rMN/strings.xml diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml new file mode 100644 index 00000000..cb1bb740 --- /dev/null +++ b/res/values-az-rAZ/strings.xml @@ -0,0 +1,62 @@ + + + + + "Endirmə İdarəçisi" + "Endirmə idarəçisinə daxil ol." + "Tətbiqə faylları endirmək üçün endirmə idarçisinə daxil olmağa imkan verir. Zərərli tətbiqlər bundan endirmələri pozmaq və özəl məlumatlara daxil olmaq üçün istifadə edə bilər." + "Ətraflı endirmə idarəçisi funksiyaları." + "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." + "Endirmə məlumatı göndər." + "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." + "USB yaddaşına bütün endirmələrə baxın" + "SD karta endirmələrə baxın" + "Tətbiqə hansı tətbiqin endirdiyindən asılı olmayaraq yaddaş kartındakı endirilən faylları görmə imkanı verir." + "Endirmə keşində ehtiyat yer mühafizə et" + "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." + "xəbərdarlıq etmədən faylları endir" + "Bu tətbiq istifadəçiyə hər hansı bir məlumat göstərmədən faylları endirmə idarəçisi vasitəsi ilə endirmək imkanı verir." + "Sistemdəki bütün endirilənlərə gir" + "Tətbiqə başqa bir tətbiq vasitəsi ilə başladılan endirmələri göstərmək və dəyişdirmək imkanı verir." + "<Başlıqsız>" + "Endirmə tamamlandı." + "Endirmə uğursuz oldu." + "Endirmə həcmi Wi-Fi tələb edir." + "Arxa fonda dayandırıldı." + "Endirmə operator şəbəkə üçün çox böyükdür" + "Bu %s 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 %s toxunun." + "Daha sonra endirmək üçün növbəyə salmaq istəyirsiniz?" + "Bu %s 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 %s toxunun." + "Növbəyə sal" + "Ləğv et" + "İndi başlat" + "%d %%" + + "1 fayl endirilir" + "%d fayl endirilir" + + + "1 fayl gözləyir" + "%d fayl gözləyir" + + "%s qalır" + "Fayl açılmır" + "Endirmələr" + "Növbəyə salınıb" + "Davam edir" + "Uğursuz" + diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml new file mode 100644 index 00000000..7019d6e7 --- /dev/null +++ b/res/values-mn-rMN/strings.xml @@ -0,0 +1,62 @@ + + + + + "Татан авалтын Менежер" + "Татан авалтын менежерт хандалт хийх." + "Апп нь татан авалтын менежерт хандалт хийх, үүнийг ашиглан файл татах боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой." + "Татан авалтын менежерийн дэлгэрэнгүй функцууд." + "Апп нь татан авалтын менежерийн дэлгэрэнгүй функцуудад хандалт хийх боломжтой. Хортой апп-ууд үүнийг ашиглан татан авалтыг тасалдуулах, хувийн мэдээлэлд хандалт хийх боломжтой." + "Татан авалтын мэдэгдэл илгээх." + "Апп нь татан авч дууссан талаарх мэдэгдэл явуулах боломжтой. Хортой апп-ууд энийг ашиглан файл татдаг бусад апп-уудыг төөрөгдөлд оруулж болно." + "Татаж авсан бүх файлыг USB сангаас харах" + "Татаж авсан бүх файлыг SD картаас харах" + "Апп нь аль апп-с татсанаас хамаарахгүйгээр SD картад хадгалагдсан бүх файлыг харах боломжтой." + "Татан авалтын кеш дотор зай нөөцлөх" + "Апп нь татан авалтын менежерт илүү зай хэрэгтэй болсон үед автоматаар устгалгүйгээр файлыг татан авалтын кеш-д хадгалах боломжтой." + "мэдэгдэл өгөхгүйгээр файлуудыг татаж авах" + "Апп нь хэрэглэгчид ямар нэгэн мэдэгдэл харуулахгүйгээр татан авагчаар дамжуулан файл татаж авах боломжтой." + "Системийн татан авсан бүх файлуудад хандалт хийх" + "Апп нь системийн дурын апп-н эхлүүлсэн бүх татан авалтуудыг үзэх, өөрчлөх боломжтой." + "<Гарчиггүй>" + "Татаж авч дууслаа." + "Амжилттай татаж авлаа." + "Татаж авах хэмжээ Wi-Fi шаардана." + "Ар талд түр зогсоогдсон" + "Татан авалт нь операторын сүлжээнд хэт том байна" + "Та энэ %s татан авалтыг гүйцээхийн тулд Wi-Fi-д холбогдох шаардлагатай. Та дараагийн удаа Wi-Fi сүлжээнд холбогдмогц энэ татан авалтыг эхлүүлэхийн тулд \n\nХүрнэ үү %s " + "Дараа татахаар хүлээлгэх үү?" + "Энэ %s татан авалтыг одоо эхлүүлснээр таны зайны цэнэг дуусах болон/эсхүл мобайл дата холболтыг хэт их хэрэглэх, улмаар өндөр төлбөр төлөхөд хүрч болзошгүй. Дараагийн удаа WiFi сүлжээнд холбогдохдоо татаж эхлүүлэхийн тулд доорхыг \n\n Товшино уу %s." + "Хүлээх" + "Цуцлах" + "Одоо эхлүүлэх" + "%d%%" + + "1 файл татаж байна" + "%d файл татаж байна" + + + "1 файл хүлээлгэнд" + "%d файл хүлээлгэнд" + + "%s үлдсэн" + "Файлыг нээж чадахгүй байна" + "Татан авалтууд" + "Хүлээлгэнд" + "Үргэлжилж байгаа" + "Амжилтгүй" + -- cgit v1.2.3 From a80bb06d5563377253906adebdc3ff9ef64d6500 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Sat, 31 Aug 2013 16:59:13 -0700 Subject: Follow refactoring of DocumentsContract. Bug: 10567557 Change-Id: If03f352f865073b0e332a6a1c40cc34d83425b62 --- .../downloads/DownloadStorageProvider.java | 78 ++++++++++++---------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 58df58a7..728a5aa0 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -28,17 +28,13 @@ import android.os.Binder; import android.os.CancellationSignal; import android.os.ParcelFileDescriptor; import android.provider.DocumentsContract; -import android.provider.DocumentsContract.DocumentColumns; -import android.provider.DocumentsContract.DocumentRoot; -import android.provider.DocumentsContract.Documents; +import android.provider.DocumentsContract.Document; +import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; -import com.google.common.collect.Lists; - import libcore.io.IoUtils; import java.io.FileNotFoundException; -import java.util.List; /** * Presents a {@link DocumentsContract} view of {@link DownloadManager} @@ -47,26 +43,22 @@ import java.util.List; public class DownloadStorageProvider extends DocumentsProvider { private static final String DOC_ID_ROOT = Constants.STORAGE_DOC_ID_ROOT; - private static final String[] SUPPORTED_COLUMNS = new String[] { - DocumentColumns.DOC_ID, DocumentColumns.DISPLAY_NAME, DocumentColumns.SIZE, - DocumentColumns.MIME_TYPE, DocumentColumns.LAST_MODIFIED, DocumentColumns.FLAGS + private static final String[] DEFAULT_ROOT_PROJECTION = new String[] { + Root.COLUMN_ROOT_ID, Root.COLUMN_ROOT_TYPE, Root.COLUMN_FLAGS, Root.COLUMN_ICON, + Root.COLUMN_TITLE, Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID, + Root.COLUMN_AVAILABLE_BYTES, }; - private DocumentRoot mRoot; + private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] { + Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE, Document.COLUMN_DISPLAY_NAME, + Document.COLUMN_LAST_MODIFIED, Document.COLUMN_FLAGS, Document.COLUMN_SIZE, + }; private DownloadManager mDm; private DownloadManager.Query mBaseQuery; @Override public boolean onCreate() { - - mRoot = new DocumentRoot(); - mRoot.docId = DOC_ID_ROOT; - mRoot.rootType = DocumentRoot.ROOT_TYPE_SHORTCUT; - mRoot.title = getContext().getString(R.string.root_downloads); - mRoot.icon = R.mipmap.ic_launcher_download; - mRoot.flags = DocumentRoot.FLAG_LOCAL_ONLY; - mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); mDm.setAccessAllDownloads(true); mBaseQuery = new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true); @@ -74,9 +66,26 @@ public class DownloadStorageProvider extends DocumentsProvider { return true; } + private static String[] resolveRootProjection(String[] projection) { + return projection != null ? projection : DEFAULT_ROOT_PROJECTION; + } + + private static String[] resolveDocumentProjection(String[] projection) { + return projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION; + } + @Override - public List getDocumentRoots() { - return Lists.newArrayList(mRoot); + public Cursor queryRoots(String[] projection) throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection)); + final RowBuilder row = result.newRow(); + row.offer(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); + row.offer(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); + row.offer(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_PROVIDES_AUDIO + | Root.FLAG_PROVIDES_VIDEO | Root.FLAG_PROVIDES_IMAGES); + row.offer(Root.COLUMN_ICON, R.mipmap.ic_launcher_download); + row.offer(Root.COLUMN_TITLE, getContext().getString(R.string.root_downloads)); + row.offer(Root.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); + return result; } @Override @@ -93,8 +102,8 @@ public class DownloadStorageProvider extends DocumentsProvider { } @Override - public Cursor queryDocument(String docId) throws FileNotFoundException { - final MatrixCursor result = new MatrixCursor(SUPPORTED_COLUMNS); + public Cursor queryDocument(String docId, String[] projection) throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); if (DOC_ID_ROOT.equals(docId)) { includeDefaultDocument(result); @@ -116,8 +125,9 @@ public class DownloadStorageProvider extends DocumentsProvider { } @Override - public Cursor queryDocumentChildren(String docId) throws FileNotFoundException { - final MatrixCursor result = new MatrixCursor(SUPPORTED_COLUMNS); + public Cursor queryChildDocuments(String docId, String[] projection, String sortOrder) + throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); // Delegate to real provider final long token = Binder.clearCallingIdentity(); @@ -160,8 +170,8 @@ public class DownloadStorageProvider extends DocumentsProvider { private void includeDefaultDocument(MatrixCursor result) { final RowBuilder row = result.newRow(); - row.offer(DocumentColumns.DOC_ID, DOC_ID_ROOT); - row.offer(DocumentColumns.MIME_TYPE, Documents.MIME_TYPE_DIR); + row.offer(Document.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); + row.offer(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); } private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { @@ -208,20 +218,20 @@ public class DownloadStorageProvider extends DocumentsProvider { break; } - int flags = Documents.FLAG_SUPPORTS_DELETE; + int flags = Document.FLAG_SUPPORTS_DELETE; if (mimeType != null && mimeType.startsWith("image/")) { - flags |= Documents.FLAG_SUPPORTS_THUMBNAIL; + flags |= Document.FLAG_SUPPORTS_THUMBNAIL; } final long lastModified = cursor.getLong( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)); final RowBuilder row = result.newRow(); - row.offer(DocumentColumns.DOC_ID, docId); - row.offer(DocumentColumns.DISPLAY_NAME, displayName); - row.offer(DocumentColumns.SIZE, size); - row.offer(DocumentColumns.MIME_TYPE, mimeType); - row.offer(DocumentColumns.LAST_MODIFIED, lastModified); - row.offer(DocumentColumns.FLAGS, flags); + row.offer(Document.COLUMN_DOCUMENT_ID, docId); + row.offer(Document.COLUMN_DISPLAY_NAME, displayName); + row.offer(Document.COLUMN_SIZE, size); + row.offer(Document.COLUMN_MIME_TYPE, mimeType); + row.offer(Document.COLUMN_LAST_MODIFIED, lastModified); + row.offer(Document.COLUMN_FLAGS, flags); } } -- cgit v1.2.3 From db9020e34a49a3eedc42d67ada0ae98ee29e813f Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 2 Sep 2013 15:30:28 -0700 Subject: New recent documents behavior. Bug: 10593596 Change-Id: I708d2396266d083a494e57eab2637471e54e1cdc --- .../downloads/DownloadStorageProvider.java | 24 +++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 728a5aa0..bc2ec0c7 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -81,7 +81,8 @@ public class DownloadStorageProvider extends DocumentsProvider { row.offer(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); row.offer(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); row.offer(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_PROVIDES_AUDIO - | Root.FLAG_PROVIDES_VIDEO | Root.FLAG_PROVIDES_IMAGES); + | Root.FLAG_PROVIDES_VIDEO | Root.FLAG_PROVIDES_IMAGES + | Root.FLAG_SUPPORTS_RECENTS); row.offer(Root.COLUMN_ICON, R.mipmap.ic_launcher_download); row.offer(Root.COLUMN_TITLE, getContext().getString(R.string.root_downloads)); row.offer(Root.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); @@ -144,6 +145,27 @@ public class DownloadStorageProvider extends DocumentsProvider { return result; } + @Override + public Cursor queryRecentDocuments(String rootId, String[] projection) + throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + cursor = mDm.query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true) + .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL)); + while (cursor.moveToNext() && result.getCount() < 12) { + includeDownloadFromCursor(result, cursor); + } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); + } + return result; + } + @Override public ParcelFileDescriptor openDocument(String docId, String mode, CancellationSignal signal) throws FileNotFoundException { -- cgit v1.2.3 From d311f51e57dbd9c9c98d5f363f6db4ccae3a37f4 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 2 Sep 2013 17:41:08 -0700 Subject: Remove content flags to indicate */* support. Bug: 10597317 Change-Id: Ia32f4ec34847680135c300dfe8fe73694da4c57a --- src/com/android/providers/downloads/DownloadStorageProvider.java | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index bc2ec0c7..87c9f5b0 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -80,9 +80,7 @@ public class DownloadStorageProvider extends DocumentsProvider { final RowBuilder row = result.newRow(); row.offer(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); row.offer(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); - row.offer(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_PROVIDES_AUDIO - | Root.FLAG_PROVIDES_VIDEO | Root.FLAG_PROVIDES_IMAGES - | Root.FLAG_SUPPORTS_RECENTS); + row.offer(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_RECENTS); row.offer(Root.COLUMN_ICON, R.mipmap.ic_launcher_download); row.offer(Root.COLUMN_TITLE, getContext().getString(R.string.root_downloads)); row.offer(Root.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); -- cgit v1.2.3 From ec96960f2ce6d2aa79bbdc9895909ff11c3bc2b5 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Tue, 3 Sep 2013 15:52:44 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I78ad6b89138262e745cb31d0e145a97d1bedf377 Auto-generated-cl: translation import --- res/values-ka-rGE/strings.xml | 2 +- res/values-nb/strings.xml | 2 +- res/values-pl/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index 25839d2b..ef817ab3 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -53,7 +53,7 @@ "1 ფაილი მოლოდინის რეჟმშია" "%d ფაილი მოლოდინის რეჟიმშია" - "%s მარცხნივ" + "დარჩა %s" "ფაილის გახსნა ვერ ხერხდება" "ჩამოტვირთვები" "რიგშია" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 4f960805..01c5f2aa 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -22,7 +22,7 @@ "Avansert nedlastingsfunksjonalitet." "Gir appen adgang til avanserte funksjoner i nedlastingsbehandlingen. Skadelig programvare kan bruke dette til å forstyrre nedlastinger og få tilgang til privat informasjon." "Sende nedlastingsvarslinger" - "Gir appen tillatelse til å sende varslinger om fullførte nedlastinger. Skadelig programvare kan bruke dette til å forstyrre andre programmer som laster ned filer." + "Gir appen tillatelse til å sende varslinger om fullførte nedlastinger. Skadelig programvare kan bruke dette til å forstyrre andre apper som laster ned filer." "Se nedlastinger til USB-lagr." "Se alle nedlastinger til minnekort" "Gir appen tilgang til alle nedlastinger på SD-kortet, uavhengig av hvilken app som lastet dem ned." diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 1bdaa363..9e53d460 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -28,7 +28,7 @@ "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." "Zarezerwuj miejsce w pamięci podręcznej pobierania" "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." - "pobieraj pliki bez powiadomienia" + "pobieranie plików bez powiadomienia" "Zezwala aplikacji na pobieranie plików przez menedżera pobierania bez wyświetlania powiadomień." "Dostęp do wszystkich pobranych pozycji w systemie" "Zezwala aplikacji na wyświetlanie i modyfikowanie wszystkich plików pobranych w dowolnej aplikacji w systemie." -- cgit v1.2.3 From e4b402b205fd958f28ffcf32262f485d2a78e3d0 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 5 Sep 2013 14:09:17 -0700 Subject: Relay content change notifications to documents. Bug: 10531347 Change-Id: Ia704b233623e913da3a5cb7c8aa5e024900e1d3a --- src/com/android/providers/downloads/DownloadStorageProvider.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 87c9f5b0..04cbf090 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -74,6 +74,10 @@ public class DownloadStorageProvider extends DocumentsProvider { return projection != null ? projection : DEFAULT_DOCUMENT_PROJECTION; } + private void copyNotificationUri(MatrixCursor result, Cursor cursor) { + result.setNotificationUri(getContext().getContentResolver(), cursor.getNotificationUri()); + } + @Override public Cursor queryRoots(String[] projection) throws FileNotFoundException { final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection)); @@ -112,6 +116,7 @@ public class DownloadStorageProvider extends DocumentsProvider { Cursor cursor = null; try { cursor = mDm.query(new Query().setFilterById(Long.parseLong(docId))); + copyNotificationUri(result, cursor); if (cursor.moveToFirst()) { includeDownloadFromCursor(result, cursor); } @@ -133,6 +138,7 @@ public class DownloadStorageProvider extends DocumentsProvider { Cursor cursor = null; try { cursor = mDm.query(mBaseQuery); + copyNotificationUri(result, cursor); while (cursor.moveToNext()) { includeDownloadFromCursor(result, cursor); } @@ -154,6 +160,7 @@ public class DownloadStorageProvider extends DocumentsProvider { try { cursor = mDm.query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true) .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL)); + copyNotificationUri(result, cursor); while (cursor.moveToNext() && result.getCount() < 12) { includeDownloadFromCursor(result, cursor); } -- cgit v1.2.3 From 3c03d1b8b7d96209d7b83b6881421ddfc17ccc52 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 5 Sep 2013 17:13:59 -0700 Subject: Extend trampoline to show dialogs. Handle incoming manage requests by launching finished downloads, or showing various retry dialogs. Pipe through summary, show percentage when in progress, and always show total size and MIME type. Bug: 10531347, 10599641 Change-Id: I3be2bc67ea3c0ef795146177200f5be77ad5114e --- AndroidManifest.xml | 15 -- res/values/strings.xml | 3 + src/com/android/providers/downloads/Constants.java | 2 +- .../downloads/DownloadStorageProvider.java | 30 +-- .../providers/downloads/TrampolineActivity.java | 37 ---- ui/AndroidManifest.xml | 14 ++ .../providers/downloads/ui/DownloadList.java | 6 +- .../providers/downloads/ui/TrampolineActivity.java | 225 +++++++++++++++++++++ 8 files changed, 263 insertions(+), 69 deletions(-) delete mode 100644 src/com/android/providers/downloads/TrampolineActivity.java create mode 100644 ui/src/com/android/providers/downloads/ui/TrampolineActivity.java diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 398f8f4c..49f039ef 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -106,20 +106,5 @@ - - - - - - - - - diff --git a/res/values/strings.xml b/res/values/strings.xml index 620e3fad..c5712194 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -226,4 +226,7 @@ an individual item in the download list. [CHAR LIMIT=24] --> Unsuccessful + + In progress, %d%% + diff --git a/src/com/android/providers/downloads/Constants.java b/src/com/android/providers/downloads/Constants.java index e33a6362..89210a25 100644 --- a/src/com/android/providers/downloads/Constants.java +++ b/src/com/android/providers/downloads/Constants.java @@ -176,5 +176,5 @@ public class Constants { public static final boolean LOGVV = LOCAL_LOGVV && LOGV; public static final String STORAGE_AUTHORITY = "com.android.providers.downloads.documents"; - public static final String STORAGE_DOC_ID_ROOT = "downloads"; + public static final String STORAGE_ROOT_ID = "downloads"; } diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 04cbf090..f1cd8fa9 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -41,7 +41,7 @@ import java.io.FileNotFoundException; * contents. */ public class DownloadStorageProvider extends DocumentsProvider { - private static final String DOC_ID_ROOT = Constants.STORAGE_DOC_ID_ROOT; + private static final String DOC_ID_ROOT = Constants.STORAGE_ROOT_ID; private static final String[] DEFAULT_ROOT_PROJECTION = new String[] { Root.COLUMN_ROOT_ID, Root.COLUMN_ROOT_TYPE, Root.COLUMN_FLAGS, Root.COLUMN_ICON, @@ -51,7 +51,8 @@ public class DownloadStorageProvider extends DocumentsProvider { private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] { Document.COLUMN_DOCUMENT_ID, Document.COLUMN_MIME_TYPE, Document.COLUMN_DISPLAY_NAME, - Document.COLUMN_LAST_MODIFIED, Document.COLUMN_FLAGS, Document.COLUMN_SIZE, + Document.COLUMN_SUMMARY, Document.COLUMN_LAST_MODIFIED, Document.COLUMN_FLAGS, + Document.COLUMN_SIZE, }; private DownloadManager mDm; @@ -214,33 +215,35 @@ public class DownloadStorageProvider extends DocumentsProvider { if (mimeType == null) { mimeType = "application/octet-stream"; } - Long size = null; + Long size = cursor.getLong( + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); + if (size == -1) { + size = null; + } final int status = cursor.getInt( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS)); switch (status) { case DownloadManager.STATUS_SUCCESSFUL: - size = cursor.getLong( - cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); - if (size == -1) { - size = null; - } break; case DownloadManager.STATUS_PAUSED: - mimeType = null; summary = getContext().getString(R.string.download_queued); break; case DownloadManager.STATUS_PENDING: - mimeType = null; summary = getContext().getString(R.string.download_queued); break; case DownloadManager.STATUS_RUNNING: - mimeType = null; - summary = getContext().getString(R.string.download_running); + final long progress = cursor.getLong(cursor.getColumnIndexOrThrow( + DownloadManager.COLUMN_BYTES_DOWNLOADED_SO_FAR)); + if (size != null) { + final long percent = progress * 100 / size; + summary = getContext().getString(R.string.download_running_percent, percent); + } else { + summary = getContext().getString(R.string.download_running); + } break; case DownloadManager.STATUS_FAILED: default: - mimeType = null; summary = getContext().getString(R.string.download_error); break; } @@ -256,6 +259,7 @@ public class DownloadStorageProvider extends DocumentsProvider { final RowBuilder row = result.newRow(); row.offer(Document.COLUMN_DOCUMENT_ID, docId); row.offer(Document.COLUMN_DISPLAY_NAME, displayName); + row.offer(Document.COLUMN_SUMMARY, summary); row.offer(Document.COLUMN_SIZE, size); row.offer(Document.COLUMN_MIME_TYPE, mimeType); row.offer(Document.COLUMN_LAST_MODIFIED, lastModified); diff --git a/src/com/android/providers/downloads/TrampolineActivity.java b/src/com/android/providers/downloads/TrampolineActivity.java deleted file mode 100644 index 0f494cff..00000000 --- a/src/com/android/providers/downloads/TrampolineActivity.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright (C) 2013 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.app.Activity; -import android.content.ContentUris; -import android.content.Intent; -import android.os.Bundle; - -/** - * PackageInstaller really wants raw files. - */ -public class TrampolineActivity extends Activity { - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - - final long id = ContentUris.parseId(getIntent().getData()); - final Intent intent = OpenHelper.buildViewIntent(this, id); - startActivity(intent); - finish(); - } -} diff --git a/ui/AndroidManifest.xml b/ui/AndroidManifest.xml index 61669154..93fb5223 100644 --- a/ui/AndroidManifest.xml +++ b/ui/AndroidManifest.xml @@ -25,5 +25,19 @@ + + + + + + + + diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index 443491a9..991d70b6 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -151,9 +151,9 @@ public class DownloadList extends Activity { super.onCreate(icicle); // Trampoline over to new management UI - final Intent intent = new Intent(DocumentsContract.ACTION_MANAGE_DOCUMENTS); - intent.setData(DocumentsContract.buildDocumentUri( - Constants.STORAGE_AUTHORITY, Constants.STORAGE_DOC_ID_ROOT)); + final Intent intent = new Intent(DocumentsContract.ACTION_MANAGE_ROOT); + intent.setData(DocumentsContract.buildRootUri( + Constants.STORAGE_AUTHORITY, Constants.STORAGE_ROOT_ID)); startActivity(intent); finish(); } diff --git a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java new file mode 100644 index 00000000..e9cc17ef --- /dev/null +++ b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java @@ -0,0 +1,225 @@ +/* + * Copyright (C) 2013 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.ui; + +import android.app.Activity; +import android.app.AlertDialog; +import android.app.Dialog; +import android.app.DialogFragment; +import android.app.DownloadManager; +import android.app.DownloadManager.Query; +import android.app.FragmentManager; +import android.content.ContentUris; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.database.Cursor; +import android.os.Bundle; +import android.util.Log; +import android.widget.Toast; + +import com.android.providers.downloads.Constants; +import com.android.providers.downloads.OpenHelper; + +import libcore.io.IoUtils; + +/** + * Intercept all download clicks to provide special behavior. For example, + * PackageInstaller really wants raw file paths. + */ +public class TrampolineActivity extends Activity { + private static final String TAG_PAUSED = "paused"; + private static final String TAG_FAILED = "failed"; + + private static final String KEY_ID = "id"; + private static final String KEY_REASON = "reason"; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + final long id = ContentUris.parseId(getIntent().getData()); + + final DownloadManager dm = (DownloadManager) getSystemService(Context.DOWNLOAD_SERVICE); + dm.setAccessAllDownloads(true); + + final int status; + final int reason; + + final Cursor cursor = dm.query(new Query().setFilterById(id)); + try { + if (cursor.moveToFirst()) { + status = cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_STATUS)); + reason = cursor.getInt(cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_REASON)); + } else { + Toast.makeText(this, R.string.dialog_file_missing_body, Toast.LENGTH_SHORT).show(); + finish(); + return; + } + } finally { + IoUtils.closeQuietly(cursor); + } + + Log.d(Constants.TAG, "Found " + id + " with status " + status + ", reason " + reason); + switch (status) { + case DownloadManager.STATUS_PENDING: + case DownloadManager.STATUS_RUNNING: + sendRunningDownloadClickedBroadcast(id); + finish(); + break; + + case DownloadManager.STATUS_PAUSED: + if (reason == DownloadManager.PAUSED_QUEUED_FOR_WIFI) { + PausedDialogFragment.show(getFragmentManager(), id); + } else { + sendRunningDownloadClickedBroadcast(id); + finish(); + } + break; + + case DownloadManager.STATUS_SUCCESSFUL: + final Intent intent = OpenHelper.buildViewIntent(this, id); + startActivity(intent); + finish(); + break; + + case DownloadManager.STATUS_FAILED: + FailedDialogFragment.show(getFragmentManager(), id, reason); + break; + } + } + + private void sendRunningDownloadClickedBroadcast(long id) { + final Intent intent = new Intent(Constants.ACTION_LIST); + intent.setPackage(Constants.PROVIDER_PACKAGE_NAME); + intent.putExtra(DownloadManager.EXTRA_NOTIFICATION_CLICK_DOWNLOAD_IDS, new long[] { id }); + sendBroadcast(intent); + } + + public static class PausedDialogFragment extends DialogFragment { + public static void show(FragmentManager fm, long id) { + final PausedDialogFragment dialog = new PausedDialogFragment(); + final Bundle args = new Bundle(); + args.putLong(KEY_ID, id); + dialog.setArguments(args); + dialog.show(fm, TAG_PAUSED); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Context context = getActivity(); + + final DownloadManager dm = (DownloadManager) context.getSystemService( + Context.DOWNLOAD_SERVICE); + dm.setAccessAllDownloads(true); + + final long id = getArguments().getLong(KEY_ID); + + final AlertDialog.Builder builder = new AlertDialog.Builder( + context, AlertDialog.THEME_HOLO_LIGHT); + builder.setTitle(R.string.dialog_title_queued_body); + builder.setMessage(R.string.dialog_queued_body); + + builder.setPositiveButton(R.string.keep_queued_download, null); + + builder.setNegativeButton( + R.string.remove_download, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dm.remove(id); + } + }); + + return builder.create(); + } + + @Override + public void onDismiss(DialogInterface dialog) { + super.onDismiss(dialog); + getActivity().finish(); + } + } + + public static class FailedDialogFragment extends DialogFragment { + public static void show(FragmentManager fm, long id, int reason) { + final FailedDialogFragment dialog = new FailedDialogFragment(); + final Bundle args = new Bundle(); + args.putLong(KEY_ID, id); + args.putInt(KEY_REASON, reason); + dialog.setArguments(args); + dialog.show(fm, TAG_FAILED); + } + + @Override + public Dialog onCreateDialog(Bundle savedInstanceState) { + final Context context = getActivity(); + + final DownloadManager dm = (DownloadManager) context.getSystemService( + Context.DOWNLOAD_SERVICE); + dm.setAccessAllDownloads(true); + + final long id = getArguments().getLong(KEY_ID); + final int reason = getArguments().getInt(KEY_REASON); + + final AlertDialog.Builder builder = new AlertDialog.Builder( + context, AlertDialog.THEME_HOLO_LIGHT); + builder.setTitle(R.string.dialog_title_not_available); + + final String message; + switch (reason) { + case DownloadManager.ERROR_FILE_ALREADY_EXISTS: + builder.setMessage(R.string.dialog_file_already_exists); + break; + case DownloadManager.ERROR_INSUFFICIENT_SPACE: + builder.setMessage(R.string.dialog_insufficient_space_on_external); + break; + case DownloadManager.ERROR_DEVICE_NOT_FOUND: + builder.setMessage(R.string.dialog_media_not_found); + break; + case DownloadManager.ERROR_CANNOT_RESUME: + builder.setMessage(R.string.dialog_cannot_resume); + break; + default: + builder.setMessage(R.string.dialog_failed_body); + } + + builder.setNegativeButton( + R.string.delete_download, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dm.remove(id); + } + }); + + builder.setPositiveButton( + R.string.retry_download, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dm.restartDownload(id); + } + }); + + return builder.create(); + } + + @Override + public void onDismiss(DialogInterface dialog) { + super.onDismiss(dialog); + getActivity().finish(); + } + } +} -- cgit v1.2.3 From c2abf90b0cd290fda4880660e08232a65bfecb86 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 9 Sep 2013 15:16:54 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I0514b35f22ed9a725d76734c300e1501047975a6 Auto-generated-cl: translation import --- res/values-af/strings.xml | 1 + res/values-am/strings.xml | 1 + res/values-ar/strings.xml | 1 + res/values-az-rAZ/strings.xml | 1 + res/values-be/strings.xml | 2 ++ res/values-bg/strings.xml | 1 + res/values-ca/strings.xml | 1 + res/values-cs/strings.xml | 1 + res/values-da/strings.xml | 1 + res/values-de/strings.xml | 1 + res/values-el/strings.xml | 1 + res/values-en-rGB/strings.xml | 1 + res/values-en-rIN/strings.xml | 1 + res/values-es-rUS/strings.xml | 2 ++ res/values-es/strings.xml | 1 + res/values-et-rEE/strings.xml | 1 + res/values-fa/strings.xml | 2 ++ res/values-fi/strings.xml | 1 + res/values-fr-rCA/strings.xml | 2 ++ res/values-fr/strings.xml | 2 ++ res/values-hi/strings.xml | 1 + res/values-hr/strings.xml | 1 + res/values-hu/strings.xml | 1 + res/values-hy-rAM/strings.xml | 2 ++ res/values-in/strings.xml | 2 ++ res/values-it/strings.xml | 1 + res/values-iw/strings.xml | 1 + res/values-ja/strings.xml | 1 + res/values-ka-rGE/strings.xml | 2 ++ res/values-km-rKH/strings.xml | 1 + res/values-ko/strings.xml | 2 ++ res/values-lo-rLA/strings.xml | 1 + res/values-lt/strings.xml | 1 + res/values-lv/strings.xml | 1 + res/values-mn-rMN/strings.xml | 1 + res/values-ms-rMY/strings.xml | 2 ++ res/values-nb/strings.xml | 1 + res/values-ne-rNP/strings.xml | 2 ++ res/values-nl/strings.xml | 1 + res/values-pl/strings.xml | 1 + res/values-pt-rPT/strings.xml | 1 + res/values-pt/strings.xml | 1 + res/values-ro/strings.xml | 2 ++ res/values-ru/strings.xml | 2 ++ res/values-si-rLK/strings.xml | 2 ++ res/values-sk/strings.xml | 2 ++ res/values-sl/strings.xml | 2 ++ res/values-sr/strings.xml | 1 + res/values-sv/strings.xml | 1 + res/values-sw/strings.xml | 2 ++ res/values-th/strings.xml | 1 + res/values-tl/strings.xml | 1 + res/values-tr/strings.xml | 2 ++ res/values-uk/strings.xml | 1 + res/values-vi/strings.xml | 1 + res/values-zh-rCN/strings.xml | 2 ++ res/values-zh-rHK/strings.xml | 1 + res/values-zh-rTW/strings.xml | 1 + res/values-zu/strings.xml | 1 + 59 files changed, 78 insertions(+) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 281b0de0..5173224d 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -59,4 +59,5 @@ "In waglys" "Besig" "Onsuksesvol" + "Gaan tans voort, %d%%" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index a490b8f9..fd5a94f9 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -59,4 +59,5 @@ "ወረፋ ይዟል" "በሂደት ላይ" "ስኬታማ ያልሆነ" + "በሂደት ላይ፣ %d%%" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 9c95950b..dd6694b7 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -59,4 +59,5 @@ "في قائمة الانتظار" "قيد التقدم" "أخفق الاتصال بالشبكة" + "قيد التقدم، %d%%" diff --git a/res/values-az-rAZ/strings.xml b/res/values-az-rAZ/strings.xml index cb1bb740..28af64d4 100644 --- a/res/values-az-rAZ/strings.xml +++ b/res/values-az-rAZ/strings.xml @@ -59,4 +59,5 @@ "Növbəyə salınıb" "Davam edir" "Uğursuz" + "İrəliləyir, %d %%" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 84ac21f6..c3d33acf 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -63,4 +63,6 @@ + + diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 85b54fb0..03416817 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -59,4 +59,5 @@ "На опашка" "В ход" "Неуспешно" + "В ход – %d%%" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 14ae6690..4d95aa83 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -59,4 +59,5 @@ "En cua" "En curs" "Incorrecte" + "En curs, %d%%" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 8f94466b..b8c37574 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -59,4 +59,5 @@ "Ve frontě" "Probíhá" "Neúspěšné" + "Probíhá (%d %%)" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index a526beb9..bfbe9fd7 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -59,4 +59,5 @@ "I kø" "I gang" "Mislykkedes" + "I gang, %d %%" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 454aedd9..5fa35c11 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -59,4 +59,5 @@ "In der Warteschlange" "In Bearbeitung" "Nicht erfolgreich" + "Läuft, %d %%" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 5f0ebb5d..ba745681 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -59,4 +59,5 @@ "Σε ουρά" "Σε εξέλιξη" "Ανεπιτυχής" + "Σε εξέλιξη, %d%%" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 80a78090..26fede38 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -59,4 +59,5 @@ "Queued" "In progress" "Unsuccessful" + "In progress, %d%%" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 80a78090..26fede38 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -59,4 +59,5 @@ "Queued" "In progress" "Unsuccessful" + "In progress, %d%%" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index f70120b4..dce39c54 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -59,4 +59,6 @@ "Pendiente" "En curso" "Error" + + diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 576dfd67..8ab2eeb7 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -59,4 +59,5 @@ "En cola" "En curso" "No se ha completado" + "En curso (%d%%)" diff --git a/res/values-et-rEE/strings.xml b/res/values-et-rEE/strings.xml index f413eddf..16b97b62 100644 --- a/res/values-et-rEE/strings.xml +++ b/res/values-et-rEE/strings.xml @@ -59,4 +59,5 @@ "Järjekorras" "Töötlemisel" "Ebaõnnestus" + "Edenemine: %d%%" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 02f1cc29..44f1a89b 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -59,4 +59,6 @@ "در صف" "در حال انجام" "ناموفق" + + diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 4b8b30b6..6bc88074 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -59,4 +59,5 @@ "Jonossa" "Kesken" "Epäonnistui" + "Käynnissä, %d %%" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 9a470125..9f6ad434 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -59,4 +59,6 @@ "Placé en file d\'attente" "En cours de traitement" "Échec" + + diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index c50e2a9f..32d1ef8f 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -59,4 +59,6 @@ "Placé en file d\'attente" "En cours" "Échec" + + diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index b0bbcd61..e41d5f52 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -59,4 +59,5 @@ "कतारबद्ध" "जारी है" "असफल" + "प्रगति में, %d%%" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 1f99e92b..48bec502 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -59,4 +59,5 @@ "Na čekanju" "U tijeku" "Neuspješno" + "U tijeku, %d%%" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index b75dd200..a627faad 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -59,4 +59,5 @@ "Várólistán" "Folyamatban" "Sikertelen" + "Folyamatban: %d%%" diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml index 750ea405..8eefd710 100644 --- a/res/values-hy-rAM/strings.xml +++ b/res/values-hy-rAM/strings.xml @@ -59,4 +59,6 @@ "Հերթագրված է" "Ընթացքի մեջ է" "Չի կատարվել" + + diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index e1fffc27..6bbb783c 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -59,4 +59,6 @@ "Diantrekan" "Sedang berlangsung" "Gagal" + + diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 37b8e943..f53b7da5 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -59,4 +59,5 @@ "In coda" "In corso" "Operazione non riuscita" + "In corso, %d%%" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 0f308f3c..ffaa5ea3 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -59,4 +59,5 @@ "בתור" "מתבצע" "נכשל" + "מתבצע, %d%%" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index f136c9b3..b8f5809e 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -59,4 +59,5 @@ "キューに追加済み" "処理中" "失敗しました" + "処理中(%d%%)" diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index ef817ab3..b9298e44 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -59,4 +59,6 @@ "რიგშია" "მიმდინარეობს" "ვერ განხორციელდა" + + diff --git a/res/values-km-rKH/strings.xml b/res/values-km-rKH/strings.xml index 8117899e..2dc768cf 100644 --- a/res/values-km-rKH/strings.xml +++ b/res/values-km-rKH/strings.xml @@ -59,4 +59,5 @@ "​បាន​ដាក់​ក្នុង​ជួរ" "កំពុង​ដំណើរការ" "បាន​បរាជ័យ" + "កំពុង​ដំណើរការ​, %d %%" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index d2b5352c..bd8e9c90 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -59,4 +59,6 @@ "대기 중" "진행 중" "실패" + + diff --git a/res/values-lo-rLA/strings.xml b/res/values-lo-rLA/strings.xml index 3e2f2149..c5d87f9c 100644 --- a/res/values-lo-rLA/strings.xml +++ b/res/values-lo-rLA/strings.xml @@ -59,4 +59,5 @@ "ເຂົ້າຄິວແລ້ວ" "ກຳລັງດຳເນີນການ" "ບໍ່ສຳເລັດ" + "ກຳລັງດຳເນີນການ, %d%%" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index a7e7af10..dd3dd6fb 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -59,4 +59,5 @@ "Laukia eilėje" "Vykdoma" "Nesėkminga" + "Vykdoma, %d %%" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 4ac41336..c3276712 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -59,4 +59,5 @@ "Ievietots rindā" "Notiek lejupielāde" "Neizdevās" + "Norise: %d%%" diff --git a/res/values-mn-rMN/strings.xml b/res/values-mn-rMN/strings.xml index 7019d6e7..268b699d 100644 --- a/res/values-mn-rMN/strings.xml +++ b/res/values-mn-rMN/strings.xml @@ -59,4 +59,5 @@ "Хүлээлгэнд" "Үргэлжилж байгаа" "Амжилтгүй" + "Татаж байна, %d%%" diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml index 71b6b617..6a76018c 100644 --- a/res/values-ms-rMY/strings.xml +++ b/res/values-ms-rMY/strings.xml @@ -59,4 +59,6 @@ "Dibaris gilir" "Sedang berlangsung" "Tidak berjaya" + + diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 01c5f2aa..5faf89ea 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -59,4 +59,5 @@ "I kø" "Pågår" "Mislyktes" + "Pågår – %d%%" diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml index 8edcad9a..349bec7f 100644 --- a/res/values-ne-rNP/strings.xml +++ b/res/values-ne-rNP/strings.xml @@ -59,4 +59,6 @@ "लाममा राखियो" "प्रगतिमा" "असफल" + + diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 4c993443..6f37aff9 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -59,4 +59,5 @@ "In wachtrij" "In uitvoering" "Mislukt" + "Bezig: %d%%" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 9e53d460..cc57448e 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -59,4 +59,5 @@ "W kolejce" "W toku" "Niepowodzenie" + "W toku, %d%%" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index 21b82fd2..1bd74bb5 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -59,4 +59,5 @@ "Em fila" "Em curso" "Sem êxito" + "Em curso, %d%%" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 1568c120..83eb6886 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -59,4 +59,5 @@ "Na fila" "Em andamento" "Falha" + "Em andamento, %d%%" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 1e8a2ecc..8949f244 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -59,4 +59,6 @@ "În coadă" "În desfășurare" "Nereușit" + + diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 31684d33..d102d2b6 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -59,4 +59,6 @@ "В очереди" "Загружается" "Сбой" + + diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml index 67804315..5a0785e2 100644 --- a/res/values-si-rLK/strings.xml +++ b/res/values-si-rLK/strings.xml @@ -59,4 +59,6 @@ "පෙළ ගසන ලදි" "ක්‍රියාවේ පවතී" "අසාර්ථකයි" + + diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index dc39e49a..e8ad5f42 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -59,4 +59,6 @@ "V poradí" "Prebieha" "Neúspešné" + + diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index d874a1fb..652d4c28 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -59,4 +59,6 @@ "V čakalni vrsti" "Poteka" "Neuspešno" + + diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 96ce029d..5585ce3e 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -59,4 +59,5 @@ "Стављено је на чекање" "У току је" "Није успело" + "У току је, %d%%" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 9f5a69f7..80407303 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -59,4 +59,5 @@ "I kö" "Pågår" "Misslyckades" + "Hämtningen pågår: %d %%" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 9601042c..432dbbd5 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -59,4 +59,6 @@ "Zilizowekwa kwenye foleni" "Unaendelea" "Haijafanikiwa" + + diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 75312054..a4f842d9 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -59,4 +59,5 @@ "อยู่ในคิว" "กำลังดำเนินการ" "ไม่สำเร็จ" + "กำลังดำเนินการ %d%%" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index cb935b84..ddf6b21d 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -59,4 +59,5 @@ "Naka-queue" "Isinasagawa" "Hindi matagumpay" + "Kasalukuyang nagaganap, %d%%" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 3bd9665b..30d2130d 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -59,4 +59,6 @@ "Sıraya alındı" "Devam ediyor" "Başarısız" + + diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 628263c7..10eeea6e 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -59,4 +59,5 @@ "У черзі" "Виконується" "Помилка" + "Виконується, %d%%" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 349b1f01..2067acea 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -59,4 +59,5 @@ "Đã xếp hàng" "Đang thực hiện" "Không thành công" + "Đang tải xuống, %d%%" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index e6f43f05..d25a26e7 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -59,4 +59,6 @@ "已加入队列" "正在下载" "失败" + + diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index e8622ca3..d69bcba9 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -59,4 +59,5 @@ "已加入序列" "進行中" "不成功" + "處理中,已完成 %d%%" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index d048df53..8a180b3d 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -59,4 +59,5 @@ "已加入佇列" "進行中" "失敗" + "處理中,已完成 %d%%" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 91bf0441..63bfdb09 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -59,4 +59,5 @@ "Kusemugqeni" "kuyaqhubeka" "Akuphumelelanga" + "Iyaqhubeka, %d%%" -- cgit v1.2.3 From 66bdbe486e572aee1b06e3dbea9daf87ceb0e1bb Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 9 Sep 2013 09:16:29 -0700 Subject: Hint sorting, remove XML, follow refactor. Bug: 10672973, 10577809 Change-Id: I92314c35b37ac590830e881489e6a88afd860de4 --- AndroidManifest.xml | 2 +- res/xml/document_provider.xml | 19 ------------- .../downloads/DownloadStorageProvider.java | 31 +++++++++++----------- 3 files changed, 17 insertions(+), 35 deletions(-) delete mode 100644 res/xml/document_provider.xml diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 49f039ef..8e848d50 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -87,7 +87,7 @@ android:permission="android.permission.MANAGE_DOCUMENTS"> + android:value="true" /> - - - - diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index f1cd8fa9..9315ea32 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -83,12 +83,12 @@ public class DownloadStorageProvider extends DocumentsProvider { public Cursor queryRoots(String[] projection) throws FileNotFoundException { final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection)); final RowBuilder row = result.newRow(); - row.offer(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); - row.offer(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); - row.offer(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_RECENTS); - row.offer(Root.COLUMN_ICON, R.mipmap.ic_launcher_download); - row.offer(Root.COLUMN_TITLE, getContext().getString(R.string.root_downloads)); - row.offer(Root.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); + row.add(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); + row.add(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); + row.add(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_RECENTS); + 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); return result; } @@ -198,8 +198,9 @@ public class DownloadStorageProvider extends DocumentsProvider { private void includeDefaultDocument(MatrixCursor result) { final RowBuilder row = result.newRow(); - row.offer(Document.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); - row.offer(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); + row.add(Document.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); + row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); + row.add(Document.COLUMN_FLAGS, Document.FLAG_DIR_PREFERS_LAST_MODIFIED); } private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { @@ -257,12 +258,12 @@ public class DownloadStorageProvider extends DocumentsProvider { cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)); final RowBuilder row = result.newRow(); - row.offer(Document.COLUMN_DOCUMENT_ID, docId); - row.offer(Document.COLUMN_DISPLAY_NAME, displayName); - row.offer(Document.COLUMN_SUMMARY, summary); - row.offer(Document.COLUMN_SIZE, size); - row.offer(Document.COLUMN_MIME_TYPE, mimeType); - row.offer(Document.COLUMN_LAST_MODIFIED, lastModified); - row.offer(Document.COLUMN_FLAGS, flags); + 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_MIME_TYPE, mimeType); + row.add(Document.COLUMN_LAST_MODIFIED, lastModified); + row.add(Document.COLUMN_FLAGS, flags); } } -- cgit v1.2.3 From 1aad6c663ee188b02449e5e4d3e40e5c09c8fc14 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 10 Sep 2013 16:42:40 -0700 Subject: Omit duplicate images, query for management UI. When returning recent files, omit images that have been scanned and provided by the Images backend. Return in-progress files when queried for management UI, otherwise only return complete files. Bug: 10659651 Change-Id: I8f05e6fcf53422905d7f51cc55611ca00af301bf --- .../downloads/DownloadStorageProvider.java | 42 +++++++++++++++++++--- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 9315ea32..7268c5c6 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -31,6 +31,7 @@ import android.provider.DocumentsContract; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; +import android.text.TextUtils; import libcore.io.IoUtils; @@ -56,14 +57,11 @@ public class DownloadStorageProvider extends DocumentsProvider { }; private DownloadManager mDm; - private DownloadManager.Query mBaseQuery; @Override public boolean onCreate() { mDm = (DownloadManager) getContext().getSystemService(Context.DOWNLOAD_SERVICE); mDm.setAccessAllDownloads(true); - mBaseQuery = new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true); - return true; } @@ -138,7 +136,31 @@ public class DownloadStorageProvider extends DocumentsProvider { final long token = Binder.clearCallingIdentity(); Cursor cursor = null; try { - cursor = mDm.query(mBaseQuery); + cursor = mDm.query(new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true) + .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL)); + copyNotificationUri(result, cursor); + while (cursor.moveToNext()) { + includeDownloadFromCursor(result, cursor); + } + } finally { + IoUtils.closeQuietly(cursor); + Binder.restoreCallingIdentity(token); + } + return result; + } + + @Override + public Cursor queryChildDocumentsForManage( + String parentDocumentId, String[] projection, String sortOrder) + throws FileNotFoundException { + final MatrixCursor result = new MatrixCursor(resolveDocumentProjection(projection)); + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + Cursor cursor = null; + try { + cursor = mDm.query( + new DownloadManager.Query().setOnlyIncludeVisibleInDownloadsUi(true)); copyNotificationUri(result, cursor); while (cursor.moveToNext()) { includeDownloadFromCursor(result, cursor); @@ -163,6 +185,18 @@ public class DownloadStorageProvider extends DocumentsProvider { .setFilterByStatus(DownloadManager.STATUS_SUCCESSFUL)); copyNotificationUri(result, cursor); while (cursor.moveToNext() && result.getCount() < 12) { + 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))) { + continue; + } + includeDownloadFromCursor(result, cursor); } } finally { -- cgit v1.2.3 From 9c5ea82e4fd9f73ee4e450614ec7d89d97a4d399 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Wed, 11 Sep 2013 17:18:48 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Idd5f313073965a7763af3a1241b169f879ce8fde Auto-generated-cl: translation import --- res/values-af/strings.xml | 2 +- res/values-es-rUS/strings.xml | 3 +-- res/values-fa/strings.xml | 3 +-- res/values-fr-rCA/strings.xml | 3 +-- res/values-fr/strings.xml | 3 +-- res/values-hi/strings.xml | 12 ++++++------ res/values-hy-rAM/strings.xml | 3 +-- res/values-in/strings.xml | 3 +-- res/values-ka-rGE/strings.xml | 3 +-- res/values-ko/strings.xml | 3 +-- res/values-ms-rMY/strings.xml | 3 +-- res/values-ne-rNP/strings.xml | 3 +-- res/values-ro/strings.xml | 3 +-- res/values-ru/strings.xml | 3 +-- res/values-si-rLK/strings.xml | 3 +-- res/values-sk/strings.xml | 3 +-- res/values-sl/strings.xml | 3 +-- res/values-sw/strings.xml | 5 ++--- res/values-tr/strings.xml | 3 +-- res/values-zh-rCN/strings.xml | 3 +-- res/values-zh-rHK/strings.xml | 2 +- 21 files changed, 27 insertions(+), 45 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 5173224d..a8984e37 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -59,5 +59,5 @@ "In waglys" "Besig" "Onsuksesvol" - "Gaan tans voort, %d%%" + "Tans aan die gang, %d%%" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index dce39c54..9abcb6d7 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -59,6 +59,5 @@ "Pendiente" "En curso" "Error" - - + "En curso, %d %%" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 44f1a89b..7138e075 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -59,6 +59,5 @@ "در صف" "در حال انجام" "ناموفق" - - + "در حال انجام، %d%%" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 9f6ad434..3ccab1a8 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -59,6 +59,5 @@ "Placé en file d\'attente" "En cours de traitement" "Échec" - - + "En cours : %d %%" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 32d1ef8f..3a1dfb36 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -59,6 +59,5 @@ "Placé en file d\'attente" "En cours" "Échec" - - + "En cours (%d %%)" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index e41d5f52..b4e0fae5 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -18,20 +18,20 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "डाउनलोड प्रबंधक" "डाउनलोड प्रबंधक में पहुंच प्राप्त करें." - "एप्लिकेशन को डाउनलोड प्रबंधक तक पहुंचने देता और फ़ाइलें डाउनलोड करने के लिए इसका उपयोग करने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग डाउनलोड को बाधित करने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं." + "एप्स को डाउनलोड प्रबंधक तक पहुंचने देता और फ़ाइलें डाउनलोड करने के लिए इसका उपयोग करने देता है. दुर्भावनापूर्ण एप्स इसका उपयोग डाउनलोड को बाधित करने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं." "उन्‍नत डाउनलोड प्रबंधक प्रकार्य." - "एप्लिकेशन को डाउनलोड प्रबंधक के उन्नत फ़ंक्शन तक पहुंचने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग डाउनलोड को बाधित करने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं." + "एप्स को डाउनलोड प्रबंधक के उन्नत फ़ंक्शन तक पहुंचने देता है. दुर्भावनापूर्ण एप्स इसका उपयोग डाउनलोड को बाधित करने और निजी जानकारी तक पहुंचने के लिए कर सकते हैं." "डाउनलोड सूचनाएं भेजें." - "पूर्ण किए गए डाउनलोड के बारे में एप्लिकेशन को सूचना भेजने देता है. दुर्भावनापूर्ण एप्लिकेशन इसका उपयोग फ़ाइलों को डाउनलोड करने वाले अन्य एप्लिकेशन को भ्रमित करने के लिए कर सकते हैं." + "पूर्ण किए गए डाउनलोड के बारे में एप्स को सूचना भेजने देता है. दुर्भावनापूर्ण एप्स इसका उपयोग फ़ाइलों को डाउनलोड करने वाले अन्य एप्स को भ्रमित करने के लिए कर सकते हैं." "USB संग्रहण के सभी डाउनलोड देखें" "SD कार्ड के लिए सभी डाउनलोड देखें" - "इस बात पर ध्यान दिए बिना कि किस एप्लिकेशन ने उन्हें डाउनलोड किया है, एप्लिकेशन को SD कार्ड पर किए गए सभी डाउनलोड देखने देता है." + "इस बात पर ध्यान दिए बिना कि किस एप्स ने उन्हें डाउनलोड किया है, एप्स को SD कार्ड पर किए गए सभी डाउनलोड देखने देता है." "डाउनलोड कैश में स्थान सुरक्षित रखें" - "एप्लिकेशन को डाउनलोड संचय पर फ़ाइलें डाउनलोड करने देता है, जिन्हें अपने आप तब हटाया नहीं जा सकता, जब डाउनलोड प्रबंधक को अधिक स्थान की आवश्‍यकता होती है." + "एप्स को डाउनलोड संचय पर फ़ाइलें डाउनलोड करने देता है, जिन्हें अपने आप तब हटाया नहीं जा सकता, जब डाउनलोड प्रबंधक को अधिक स्थान की आवश्‍यकता होती है." "बिना सूचना के फ़ाइलें डाउनलोड करें" "उपयोगकर्ता को कोई भी सूचना दिखाए बिना एप्‍लिकेशन को डाउनलोड प्रबंधक द्वारा फ़ाइलें डाउनलोड करने देता है." "सभी सिस्‍टम डाउनलोड में पहुंच प्राप्त करें" - "एप्लिकेशन को सिस्टम पर किसी भी एप्लिकेशन द्वारा शुरू किए गए सभी डाउनलोड देखने और संशोधित करने देता है." + "एप्स को सिस्टम पर किसी भी एप्स द्वारा शुरू किए गए सभी डाउनलोड देखने और संशोधित करने देता है." "<शीर्षक-रहित>" "डाउनलोड पूर्ण." "डाउनलोड विफल." diff --git a/res/values-hy-rAM/strings.xml b/res/values-hy-rAM/strings.xml index 8eefd710..05a5001d 100644 --- a/res/values-hy-rAM/strings.xml +++ b/res/values-hy-rAM/strings.xml @@ -59,6 +59,5 @@ "Հերթագրված է" "Ընթացքի մեջ է" "Չի կատարվել" - - + "Ընթացքում է՝ %d%%" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 6bbb783c..71a69d3d 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -59,6 +59,5 @@ "Diantrekan" "Sedang berlangsung" "Gagal" - - + "Dalam proses, %d%%" diff --git a/res/values-ka-rGE/strings.xml b/res/values-ka-rGE/strings.xml index b9298e44..8da7b31b 100644 --- a/res/values-ka-rGE/strings.xml +++ b/res/values-ka-rGE/strings.xml @@ -59,6 +59,5 @@ "რიგშია" "მიმდინარეობს" "ვერ განხორციელდა" - - + "მიმდინარეობს, %d%%" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index bd8e9c90..2e2a4263 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -59,6 +59,5 @@ "대기 중" "진행 중" "실패" - - + "%d%% 진행 중" diff --git a/res/values-ms-rMY/strings.xml b/res/values-ms-rMY/strings.xml index 6a76018c..6832ee50 100644 --- a/res/values-ms-rMY/strings.xml +++ b/res/values-ms-rMY/strings.xml @@ -59,6 +59,5 @@ "Dibaris gilir" "Sedang berlangsung" "Tidak berjaya" - - + "Sedang berjalan, %d%%" diff --git a/res/values-ne-rNP/strings.xml b/res/values-ne-rNP/strings.xml index 349bec7f..e1b2606b 100644 --- a/res/values-ne-rNP/strings.xml +++ b/res/values-ne-rNP/strings.xml @@ -59,6 +59,5 @@ "लाममा राखियो" "प्रगतिमा" "असफल" - - + "प्रगतिमा, %d %%" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 8949f244..a6798289 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -59,6 +59,5 @@ "În coadă" "În desfășurare" "Nereușit" - - + "În curs, %d%%" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index d102d2b6..80c39242 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -59,6 +59,5 @@ "В очереди" "Загружается" "Сбой" - - + "Скачано %d%%" diff --git a/res/values-si-rLK/strings.xml b/res/values-si-rLK/strings.xml index 5a0785e2..bbe85277 100644 --- a/res/values-si-rLK/strings.xml +++ b/res/values-si-rLK/strings.xml @@ -59,6 +59,5 @@ "පෙළ ගසන ලදි" "ක්‍රියාවේ පවතී" "අසාර්ථකයි" - - + "ක්‍රියාවේ පවතී, %d%%" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index e8ad5f42..13cbeda7 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -59,6 +59,5 @@ "V poradí" "Prebieha" "Neúspešné" - - + "Prebieha (%d %%)" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 652d4c28..79e772fb 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -59,6 +59,5 @@ "V čakalni vrsti" "Poteka" "Neuspešno" - - + "Poteka – %d%%" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 432dbbd5..798d4ece 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -55,10 +55,9 @@ "%s zinazosalia" "Haiwezi kufungua faili" - "Vipakuzi" + "Vipakuliwa" "Zilizowekwa kwenye foleni" "Unaendelea" "Haijafanikiwa" - - + "Inaendelea, %d %%" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 30d2130d..3b8c6a14 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -59,6 +59,5 @@ "Sıraya alındı" "Devam ediyor" "Başarısız" - - + "Devam ediyor, %%%d" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index d25a26e7..18b7771e 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -59,6 +59,5 @@ "已加入队列" "正在下载" "失败" - - + "正在下载:%d%%" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index d69bcba9..25ab4955 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -59,5 +59,5 @@ "已加入序列" "進行中" "不成功" - "處理中,已完成 %d%%" + "進行中,已完成 %d%%" -- cgit v1.2.3 From be00864e2f3a73a7e7dbc6d435094e25e0e7cc40 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Sat, 14 Sep 2013 01:40:48 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I139438cac8c3d1830501ad6d4f992985bde2e143 Auto-generated-cl: translation import --- res/values-hi/strings.xml | 2 +- res/values-zu/strings.xml | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index b4e0fae5..50421cb6 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -29,7 +29,7 @@ "डाउनलोड कैश में स्थान सुरक्षित रखें" "एप्स को डाउनलोड संचय पर फ़ाइलें डाउनलोड करने देता है, जिन्हें अपने आप तब हटाया नहीं जा सकता, जब डाउनलोड प्रबंधक को अधिक स्थान की आवश्‍यकता होती है." "बिना सूचना के फ़ाइलें डाउनलोड करें" - "उपयोगकर्ता को कोई भी सूचना दिखाए बिना एप्‍लिकेशन को डाउनलोड प्रबंधक द्वारा फ़ाइलें डाउनलोड करने देता है." + "उपयोगकर्ता को कोई भी सूचना दिखाए बिना एप्‍स को डाउनलोड प्रबंधक द्वारा फ़ाइलें डाउनलोड करने देता है." "सभी सिस्‍टम डाउनलोड में पहुंच प्राप्त करें" "एप्स को सिस्टम पर किसी भी एप्स द्वारा शुरू किए गए सभी डाउनलोड देखने और संशोधित करने देता है." "<शीर्षक-रहित>" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 63bfdb09..7584bf3a 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -18,11 +18,11 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Umphathi wokulayisha" "Finyelela kumphathi wokulayisha" - "Ivuela insiza ukuthi ifinyelele izintweni ezijulile zomphathi wokulayisha. Izinsiza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo." + "Ivumela uhlelo lokusebenza lufinyelele isiphathi sokulandiwe namafayela alandiwe. Izinhlelo zokusebenza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo." "Izici zomphathi wokulayisha othuthukisiwe." - "Ivuela insiz ukuthi ifinyelele izinto ezijulile zomphathi wokulayisha. Izinsiza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo." + "Ivumela uhlelo lokusebenza lufinyelele izinto ezijulile zesiphathi sokulayisha. Izinhlelo zokusebenza ezinobungozi zingakusebenzisa lokhu ukuphazamisa ukulanda ziphinde zifinyelele emininingwaneni eyimfihlo." "Thumela izaziso zokulayisha" - "Ivumela insiza ukuthi ithumele izaziso yelana nokulayishwa okuqediwe. Izinsiza ezinobungozi zingakusebenzisa lokhu ukudida ezinye izinsiz ezilayisha amafayel." + "Ivumela uhlelo lokusebenza ukuthi ithumele izaziso yelana nokulayishwa okuqediwe. Izuhlelo lokusebenza ezinobungozi zingakusebenzisa lokhu ukudida ezinye izinsiz ezilayisha amafayel." "Bona konke ukulanda kwisitoreji se-USB" "Bona konke ukulanda ekhadini le-SD" "Ivumela uhlelo lokusebenza ukuthi ibone konke okulandiwe ekhadini le-SD ngale kokubona ukuthi iluphi uhlelo lokusebenza elulandile." -- cgit v1.2.3 From e00d56d349fff8a9c5dc86739448603986ba6cb5 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Sat, 14 Sep 2013 21:46:06 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I95b1ceb95e746e87aeff59de9a9f002deb53901d Auto-generated-cl: translation import --- ui/res/values-en-rIN/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-et-rEE/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-fr-rCA/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-hy-rAM/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-ka-rGE/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-km-rKH/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-lo-rLA/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-mn-rMN/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-ms-rMY/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ ui/res/values-zh-rHK/strings.xml | 50 ++++++++++++++++++++++++++++++++++++++++ 10 files changed, 500 insertions(+) create mode 100644 ui/res/values-en-rIN/strings.xml create mode 100644 ui/res/values-et-rEE/strings.xml create mode 100644 ui/res/values-fr-rCA/strings.xml create mode 100644 ui/res/values-hy-rAM/strings.xml create mode 100644 ui/res/values-ka-rGE/strings.xml create mode 100644 ui/res/values-km-rKH/strings.xml create mode 100644 ui/res/values-lo-rLA/strings.xml create mode 100644 ui/res/values-mn-rMN/strings.xml create mode 100644 ui/res/values-ms-rMY/strings.xml create mode 100644 ui/res/values-zh-rHK/strings.xml diff --git a/ui/res/values-en-rIN/strings.xml b/ui/res/values-en-rIN/strings.xml new file mode 100644 index 00000000..15cab92d --- /dev/null +++ b/ui/res/values-en-rIN/strings.xml @@ -0,0 +1,50 @@ + + + + + "Downloads" + "Downloads - Sorted by date" + "Downloads - Sorted by size" + "No downloads." + "<Unknown>" + "Sort by size" + "Sort by date" + "Queued" + "In progress" + "Complete" + "Unsuccessful" + "Couldn\'t download" + "Do you want to retry downloading the file later or delete it from the queue?" + "File in queue" + "This file is queued for future download, so isn\'t available yet." + "Can\'t find the downloaded file." + "Can\'t finish download. There isn\'t enough space on external storage." + "Cannot finish download. There is not enough space on internal download storage." + "Download was interrupted and can\'t be resumed." + "Can\'t download. The destination file already exists." + "Cannot download. The external media are not available." + "Can\'t open file" + "Remove" + "Delete" + "Keep" + "Cancel" + "Retry" + "Deselect all" + "Select all" + "Selected %1$d out of %2$d" + "Share via" + diff --git a/ui/res/values-et-rEE/strings.xml b/ui/res/values-et-rEE/strings.xml new file mode 100644 index 00000000..e2602e5d --- /dev/null +++ b/ui/res/values-et-rEE/strings.xml @@ -0,0 +1,50 @@ + + + + + "Allalaadimised" + "Allalaadimised - sorditud kuupäeva järgi" + "Allalaadimised - sorditud suuruse järgi" + "Allalaadimisi pole." + "<Tundmatu>" + "Sordi suuruse järgi" + "Sordi kuupäeva järgi" + "Järjekorras" + "Edenemine" + "Lõpetatud" + "Ebaõnnestus" + "Ei saanud alla laadida." + "Kas soovite proovida faili hiljem uuesti alla laadida või kustutada selle järjekorrast?" + "Järjekorras olev fail" + "Fail on allalaadimise järjekorras ega ole seetõttu veel saadaval." + "Ei leia allalaaditud faili." + "Allalaadimist ei saa lõpetada. Välismäluseadmes ei ole piisavalt ruumi." + "Allalaadimist ei saa lõpule viia. Sisest allalaadimisruumi ei ole piisavalt." + "Allalaadimine katkes ja seda ei saa jätkata." + "Ei saa alla laadida. Sihtfail on juba olemas." + "Ei saa alla laadida. Väline andmekandja ei ole saadaval." + "Faili ei saa avada" + "Eemalda" + "Kustuta" + "Jäta alles" + "Tühista" + "Proovi uuesti" + "Tühista kõik valikud" + "Vali kõik" + "Valitud %1$d/%2$d" + "Jaga rakendusest" + diff --git a/ui/res/values-fr-rCA/strings.xml b/ui/res/values-fr-rCA/strings.xml new file mode 100644 index 00000000..69dacc94 --- /dev/null +++ b/ui/res/values-fr-rCA/strings.xml @@ -0,0 +1,50 @@ + + + + + "Téléchargements" + "Téléchargements : triés par date" + "Téléchargements : triés par taille" + "Aucun téléchargement" + "<Inconnu>" + "Trier par taille" + "Trier par date" + "Placée en file d\'attente" + "En cours de traitement" + "Terminé" + "Échec" + "Téléchargement impossible" + "Souhaitez-vous réessayer de télécharger le fichier plus tard ou préférez-vous le supprimer de la file d\'attente?" + "Fichier en attente" + "Ce fichier est en attente de téléchargement et n\'est donc pas encore disponible." + "Impossible de trouver le fichier téléchargé." + "Impossible de terminer le téléchargement. L\'espace disponible sur la mémoire de stockage externe est insuffisant." + "Impossible de terminer le téléchargement. L\'espace disponible sur la mémoire de stockage interne est insuffisant." + "Le téléchargement a été interrompu et ne peut pas être repris." + "Impossible de procéder au téléchargement. Le fichier de destination existe déjà." + "Impossible de procéder au téléchargement. Le support externe n\'est pas disponible." + "Impossible d\'ouvrir le fichier." + "Supprimer" + "Supprimer" + "Conserver" + "Annuler" + "Réessayer" + "Tout désélectionner" + "Tout sélectionner" + "%1$d téléchargements sélectionnés sur %2$d" + "Partager via" + diff --git a/ui/res/values-hy-rAM/strings.xml b/ui/res/values-hy-rAM/strings.xml new file mode 100644 index 00000000..0b494a6c --- /dev/null +++ b/ui/res/values-hy-rAM/strings.xml @@ -0,0 +1,50 @@ + + + + + "Ներբեռնումներ" + "Ներբեռնումներ՝ դասավորված ըստ ամսաթվի" + "Ներբեռնումներ՝ դասավորված ըստ չափի" + "Ներբեռնումներ չկան:" + "<Անհայտ>" + "Դասավորել ըստ չափի" + "Դասավորել ըստ ամսաթվի" + "Հերթագրված է" + "Ընթացքի մեջ է" + "Ավարտված է" + "Ձախողվել է" + "Հնարավոր չէ ներբեռնել" + "Ցանկանու՞մ եք կրկնել ֆայլի ներբեռնումը ավելի ուշ, թե՞ ջնջել այն հերթացանկից:" + "Ֆայլը հերթացանկում է" + "Այս ֆայլը հերթագրված է հետագայում ներբեռնման համար, այնպես որ` դեռ հասանելի չէ:" + "Հնարավոր չէ գնտել ներբեռնված ֆայլը:" + "Հնարավոր չէ ավարտել ներբեռնումը: Չկա բավարար տարածություն արտաքին պահուստում:" + "Հնարավոր չէ ավարտել ներբեռնումը: Չկա բավարար տարածություն ներքին ներբեռնման պահուստում:" + "Ներբեռնումը խզվել է, և այն հնարավոր չէ վերականգնել:" + "Հնարավոր չէ ներբեռնել: Նպատակային ֆայլն արդեն գոյություն ունի:" + "Հնարավոր չէ ներբեռնել: Արտաքին կրիչը հասանելի չէ:" + "Հնարավոր չէ բացել ֆայլը" + "Հեռացնել" + "Ջնջել" + "Պահել" + "Չեղարկել" + "Կրկնել" + "Ապանշել բոլորը" + "Ընտրել բոլորը" + "Ընտրված են %1$d%2$d-ից" + "Տարածել" + diff --git a/ui/res/values-ka-rGE/strings.xml b/ui/res/values-ka-rGE/strings.xml new file mode 100644 index 00000000..17dab2af --- /dev/null +++ b/ui/res/values-ka-rGE/strings.xml @@ -0,0 +1,50 @@ + + + + + "ჩამოტვირთულები" + "ჩამოტვირთულები - სორტირებულია თარიღის მიხედვით" + "ჩამოტვირთულები - სორტირებულია ზომის მიხედვით" + "ჩამოტვირთულები არ არის." + "<უცნობი>" + "სორტირება ზომის მიხედვით" + "სორტირება თარიღის მიხედვით" + "რიგშია" + "მიმდინარეობს" + "დასრულება" + "წარუმატებელი" + "ჩამოტვირთვა ვერ განხორციელდა" + "გსურთ, ფაილის ჩამოტვირთვა სცადოთ ხელახლა მოგვიანებით თუ წაშალოთ ის რიგიდან?" + "ფაილი რიგშია" + "ეს ფაილი რიგშია მომავალი ჩამოტვირთვისთვის და ჯერ მიუწვდომელია." + "ჩამოტვირთული ფაილის მოძიება ვერ ხერხდება." + "ჩამოტვირთვა ვერ დასრულდა. გარე მეხსიერებაში არ არის საკმარისი სივრცე." + "Can\'t finish download. There isn\'t enough space on internal download storage." + "ჩამოტვირთვა შეწყდა და გაგრძელება შეუძლებელია." + "ჩამოტვირთვა შეუძლებელია. დანიშნულების ფაილი უკვე არსებობს." + "ჩამოტვირთვა ვერ ხერხდება. გარე მედია მიუწვდომელია." + "ფაილის გახსნა ვერ ხერხდება" + "წაშლა" + "წაშლა" + "შენარჩუნება" + "გაუქმება" + "გამეორება" + "ყველა მონიშვნის მოხსნა" + "ყველას არჩევა" + "მონიშნულია %1$d, სულ %2$d-დან" + "გაზიარება" + diff --git a/ui/res/values-km-rKH/strings.xml b/ui/res/values-km-rKH/strings.xml new file mode 100644 index 00000000..5bcc6851 --- /dev/null +++ b/ui/res/values-km-rKH/strings.xml @@ -0,0 +1,50 @@ + + + + + "ទាញ​យក" + "ទាញ​យក-តម្រៀប​តាម​កាលបរិច្ឆេទ" + "ទាញ​យក-តម្រៀប​តាម​ទំហំ" + "មិន​មាន​ការ​ទាញ​យក" + "<មិន​ស្គាល់>" + "តម្រៀប​តាម​ទំហំ" + "តម្រៀប​តាម​ថ្ងៃ" + "​បាន​ដាក់​ជា​ជួរ" + "កំពុង​ដំណើរការ" + "រួចរាល់" + "បរាជ័យ" + "មិន​អាច​ទាញ​យក" + "តើ​អ្នក​ចង់​ព្យាយាម​ទាញ​យក​ឯកសារ​ម្ដងទៀត​នៅ​ពេល​ក្រោយ ឬ​លុប​វា​ចេញពី​ជួរ?" + "ឯកសារ​ស្ថិត​ក្នុង​ជួរ" + "ឯកសារ​គឺ​ស្ថិត​ក្នុង​ជួរ​សម្រាប់​ការ​ទាញ​យក​បន្ទាប់ ដូច្នេះ​វា​មិន​មាន​នៅឡើយ​ទេ។" + "រក​មិន​ឃើញ​ឯកសារ​ដែល​បាន​ទាញ​យក។" + "មិន​អាច​បញ្ចប់​ការ​ទាញ​យក។ មិន​មាន​ទំហំ​គ្រប់គ្រាន់​នៅ​លើ​ឧបករណ៍​ផ្ទុក​ការ​ទាញ​យក​ខាងក្រៅ។" + "មិន​អាច​បញ្ចប់​ការ​ទាញ​យក។ មិន​មាន​ទំហំ​គ្រប់គ្រាន់​នៅ​លើ​ឧបករណ៍​ផ្ទុក​ការ​ទាញ​យក​ខាងក្នុង។" + "បាន​បង្អាក់​ការ​ទាញ​យក ហើយ​វា​មិន​អាច​បន្ត​ទៀត​បាន​ទេ។" + "មិន​អាច​ទាញ​យក, ឯកសារ​ទិសដៅ​មាន​រួចហើយ។" + "មិន​អាច​បញ្ចប់​ការ​ទាញ​យក។ មិន​មាន​មេឌៀ​ខាងក្រៅ។" + "មិន​អាច​បើក​ឯកសារ" + "លុប​ចេញ" + "លុប" + "បន្ត" + "បោះ​បង់" + "សាកល្បង​ម្ដងទៀត" + "មិន​ជ្រើស​ទាំងអស់" + "ជ្រើស​ទាំងអស់" + "បាន​ជ្រើស %1$d ក្នុង​ចំណោម %2$d" + "ចែករំលែក​តាម" + diff --git a/ui/res/values-lo-rLA/strings.xml b/ui/res/values-lo-rLA/strings.xml new file mode 100644 index 00000000..70eb8d67 --- /dev/null +++ b/ui/res/values-lo-rLA/strings.xml @@ -0,0 +1,50 @@ + + + + + "ດາວໂຫລດ" + "ດາວໂຫລດ - ຮຽງຕາມວັນທີ" + "ດາວໂຫລດ - ຮຽງຕາມຂະຫນາດ" + "ບໍ່ມີການດາວໂຫລດ." + "<ບໍ່ຮູ້ຈັກ>" + "ຮຽງຕາມຂະຫນາດ" + "ຮຽງຕາມວັນທີ" + "ເຂົ້າຄິວແລ້ວ" + "ກຳລັງດຳເນີນການ" + "ສໍາເລັດ" + "ບໍ່ສຳເລັດ" + "ບໍ່ສາມາດດາວໂຫລດໄດ້" + "ທ່ານຕ້ອງການລອງດາວໂຫລດໄຟລ໌ນີ້ໃໝ່ໃນພາຍຫຼັງບໍ່ ຫຼືຈະລຶບມັນອອກຈາກຄິວ?" + "ໄຟລ໌ຢູ່ໃນຄິວ" + "ໄຟລ໌ນີ້ຖືກເຂົ້າຄິວໄວ້ເພື່ອການດາວໂຫລດໃນອະນາຄົດ ມັນຍັງບໍ່ສາມາດໃຊ້ໄດ້ເທື່ອ." + "ບໍ່ສາມາດຊອກຫາໄຟລ໌ທີ່ດາວໂຫລດມາໄດ້." + "ບໍ່ສາມາດດາວໂຫລດໃຫ້ສຳເລັດໄດ້. ບ່ອນຈັດເກັບຂໍ້ມູນດາວໂຫລດພາຍນອກບໍ່ພຽງພໍ." + "ບໍ່ສາມາດດາວໂຫລດໃຫ້ສຳເລັດໄດ້. ບ່ອນຈັດເກັບຂໍ້ມູນດາວໂຫລດພາຍໃນບໍ່ພຽງພໍ." + "ການດາວໂຫລດຖືກລົບກວນ ແລະບໍ່ສາມາດສືບຕໍ່ໄດ້." + "ບໍ່ສາມາດດາວໂຫລດໄດ້. ໄຟລ໌ເປົ້າໝາຍມີຢູ່ແລ້ວ." + "ບໍ່ສາມາດດາວໂຫລດໄດ້. ອຸປະກອນພາຍນອກບໍ່ສາມາດນຳໃຊ້ໄດ້." + "ບໍ່ສາມາດເປີດໄຟລ໌" + "ລຶບ" + "ລຶບ" + "ເກັບໄວ້" + "ຍົກເລີກ" + "ລອງໃໝ່" + "ບໍ່ເລືອກທັງໝົດ" + "ເລືອກທັງຫມົດ" + "ເລືອກ %1$d ຈາກ %2$d" + "ແບ່ງປັນຜ່ານ" + diff --git a/ui/res/values-mn-rMN/strings.xml b/ui/res/values-mn-rMN/strings.xml new file mode 100644 index 00000000..3890a24f --- /dev/null +++ b/ui/res/values-mn-rMN/strings.xml @@ -0,0 +1,50 @@ + + + + + "Татан авалтууд" + "Татан авалтууд - Хугацаагаар эрэмбэлсэн" + "Татан авалтууд - Хэмжээгээр эрэмбэлэгдсэн" + "Татан авалт байхгүй." + "<Тодорхойгүй>" + "Хэмжээгээр эрэмбэлэх" + "Огноогоор эрэмбэлэх" + "Хүлээлгэнд" + "Үргэлжилж байгаа" + "Дуусгах" + "Амжилтгүй" + "Татан авч чадсангүй" + "Та файлыг дараа татан авахаар үлдээх үү эсхүл хүлээлгээс хасах уу?" + "Файл хүлээлгэнд" + "Файлыг ирээдүйд татаж авахаар хүлээлгэнд оруулсан бөгөөд одоо алга байна." + "Татаж авсан файлыг олох боломжгүй байна." + "Татан авалтыг дуусгаж чадангүй. Гадаад татан авалтын санд хангалттай зай байхгүй байна." + "Татан авалтыг дуусгаж чадангүй. Дотоод татан авалтын санд хангалттай зай байхгүй байна." + "Татан авалт таслагдсан бөгөөд дахин үргэлжлүүлэх боломжгүй." + "Татаж авах боломжгүй. Хуулах файл байна." + "Татаж авах боломжгүй. Гадаад медиа холбох боломжгүй." + "Файлыг нээх боломжгүй" + "Устгах" + "Устгах" + "Байлгах" + "Цуцлах" + "Дахин оролдох" + "Бүгдийг сонгохгүй" + "Бүгдийг сонгох" + "%2$d%1$d нь сонгогдсон" + "Дараахаар дамжуулан хуваалцах" + diff --git a/ui/res/values-ms-rMY/strings.xml b/ui/res/values-ms-rMY/strings.xml new file mode 100644 index 00000000..e1e9f666 --- /dev/null +++ b/ui/res/values-ms-rMY/strings.xml @@ -0,0 +1,50 @@ + + + + + "Muat turun" + "Muat turun - Diisih mengikut tarikh" + "Muat turun - Diisih mengikut saiz" + "Tiada muat turun." + "<Tidak diketahui>" + "Isih mengikut saiz" + "Isih mengikut tarikh" + "Baris gilir" + "Sdg dijlnkn" + "Selesai" + "Tidak berjaya" + "Tidak dapat memuat turun" + "Adakah anda mahu mencuba semula muat turun fail kemudian atau memadamnya dari baris gilir?" + "Fail dalam giliran" + "Fail ini digilirkan untuk muat turun pada masa akan datang jadi ia belum lagi tersedia." + "Tidak dapat mencari fail yang dimuat turun." + "Tidak dapat menyelesaikan muat turun. Ruang pada storan luaran tidak mencukupi." + "Tidak dapat menyelesaikan muat turun. Ruang pada storan muat turun dalaman tidak mencukupi." + "Muat turun terganggu dan tidak dapat disambung semula." + "Tidak dapat memuat turun. Fail destinasi sudah pun wujud." + "Tidak dapat memuat turun. Media luaran tidak tersedia." + "Tidak dapat membuka fail" + "Alih keluar" + "Padam" + "Simpan" + "Batal" + "Cuba semula" + "Nyahpilih semua" + "Pilih semua" + "Pilihan %1$d dari %2$d" + "Kongsi melalui" + diff --git a/ui/res/values-zh-rHK/strings.xml b/ui/res/values-zh-rHK/strings.xml new file mode 100644 index 00000000..c8cd5777 --- /dev/null +++ b/ui/res/values-zh-rHK/strings.xml @@ -0,0 +1,50 @@ + + + + + "下載" + "下載項目 - 依日期排序" + "下載項目 - 依大小排序" + "沒有下載。" + "<未知>" + "依大小排序" + "依日期排序" + "已加入下載佇列" + "進行中" + "完成" + "失敗" + "無法下載" + "您要稍後再重試下載檔案,或是從下載佇列中刪除檔案?" + "佇列中的檔案" + "檔案已排入之後要下載的佇列中,因此目前尚無法取得。" + "找不到已下載的檔案。" + "無法完成下載,外部儲存空間不足。" + "無法完成下載,內部下載儲存空間不足。" + "下載中斷,無法恢復。" + "無法下載,目標位置已有相同檔案。" + "無法下載,外部媒體無法使用。" + "無法開啟檔案" + "移除" + "刪除" + "保留" + "取消" + "重試" + "全部不選" + "全部選取" + "已選取 %1$d 個,共 %2$d 個" + "分享方式:" + -- cgit v1.2.3 From 8ec87ea5a5c191554d6205d4c779768664b1724b Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 18 Sep 2013 12:53:39 -0700 Subject: Unified handling of errors around opening. Handle both missing downloads and missing activities. Bug: 10799449, 10713636 Change-Id: I592b07fc5cf530526803379d7f7a99e8a6b207c4 --- .../providers/downloads/DownloadReceiver.java | 10 ++---- .../android/providers/downloads/OpenHelper.java | 36 +++++++++++++++++----- .../providers/downloads/ui/DownloadList.java | 8 ++--- .../providers/downloads/ui/TrampolineActivity.java | 6 ++-- 4 files changed, 36 insertions(+), 24 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadReceiver.java b/src/com/android/providers/downloads/DownloadReceiver.java index 42f029a3..f3d23766 100644 --- a/src/com/android/providers/downloads/DownloadReceiver.java +++ b/src/com/android/providers/downloads/DownloadReceiver.java @@ -20,7 +20,6 @@ import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMP import static android.app.DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_ONLY_COMPLETION; import android.app.DownloadManager; -import android.content.ActivityNotFoundException; import android.content.BroadcastReceiver; import android.content.ContentUris; import android.content.ContentValues; @@ -162,13 +161,8 @@ public class DownloadReceiver extends BroadcastReceiver { * {@link DownloadManager#COLUMN_ID}. */ private void openDownload(Context context, long id) { - final Intent intent = OpenHelper.buildViewIntent(context, id); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - try { - context.startActivity(intent); - } catch (ActivityNotFoundException ex) { - Log.d(Constants.TAG, "no activity for " + intent, ex); - Toast.makeText(context, R.string.download_no_application_title, Toast.LENGTH_LONG) + if (!OpenHelper.startViewIntent(context, id, Intent.FLAG_ACTIVITY_NEW_TASK)) { + Toast.makeText(context, R.string.download_no_application_title, Toast.LENGTH_SHORT) .show(); } } diff --git a/src/com/android/providers/downloads/OpenHelper.java b/src/com/android/providers/downloads/OpenHelper.java index 0d5f5e92..af7a37f2 100644 --- a/src/com/android/providers/downloads/OpenHelper.java +++ b/src/com/android/providers/downloads/OpenHelper.java @@ -21,23 +21,47 @@ import static android.app.DownloadManager.COLUMN_LOCAL_URI; import static android.app.DownloadManager.COLUMN_MEDIA_TYPE; import static android.app.DownloadManager.COLUMN_URI; import static android.provider.Downloads.Impl.ALL_DOWNLOADS_CONTENT_URI; +import static com.android.providers.downloads.Constants.TAG; import android.app.DownloadManager; +import android.content.ActivityNotFoundException; import android.content.ContentUris; import android.content.Context; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.provider.Downloads.Impl.RequestHeaders; +import android.util.Log; import java.io.File; public class OpenHelper { /** - * Build an {@link Intent} to view the download at current {@link Cursor} - * position, handling subtleties around installing packages. + * Build and start an {@link Intent} to view the download with given ID, + * handling subtleties around installing packages. */ - public static Intent buildViewIntent(Context context, long id) { + public static boolean startViewIntent(Context context, long id, int intentFlags) { + final Intent intent = OpenHelper.buildViewIntent(context, id); + if (intent == null) { + Log.w(TAG, "No intent built for " + id); + return false; + } + + intent.addFlags(intentFlags); + try { + context.startActivity(intent); + return true; + } catch (ActivityNotFoundException e) { + Log.w(TAG, "Failed to start " + intent + ": " + e); + return false; + } + } + + /** + * Build an {@link Intent} to view the download with given ID, handling + * subtleties around installing packages. + */ + private static Intent buildViewIntent(Context context, long id) { final DownloadManager downManager = (DownloadManager) context.getSystemService( Context.DOWNLOAD_SERVICE); downManager.setAccessAllDownloads(true); @@ -45,7 +69,7 @@ public class OpenHelper { final Cursor cursor = downManager.query(new DownloadManager.Query().setFilterById(id)); try { if (!cursor.moveToFirst()) { - throw new IllegalArgumentException("Missing download " + id); + return null; } final Uri localUri = getCursorUri(cursor, COLUMN_LOCAL_URI); @@ -121,10 +145,6 @@ public class OpenHelper { return Uri.parse(getCursorString(cursor, column)); } - private static long getCursorLong(Cursor cursor, String column) { - return cursor.getLong(cursor.getColumnIndexOrThrow(column)); - } - private static File getCursorFile(Cursor cursor, String column) { return new File(cursor.getString(cursor.getColumnIndexOrThrow(column))); } diff --git a/ui/src/com/android/providers/downloads/ui/DownloadList.java b/ui/src/com/android/providers/downloads/ui/DownloadList.java index 991d70b6..107940c0 100644 --- a/ui/src/com/android/providers/downloads/ui/DownloadList.java +++ b/ui/src/com/android/providers/downloads/ui/DownloadList.java @@ -19,7 +19,6 @@ package com.android.providers.downloads.ui; import android.app.Activity; import android.app.AlertDialog; import android.app.DownloadManager; -import android.content.ActivityNotFoundException; import android.content.ContentUris; import android.content.Context; import android.content.DialogInterface; @@ -530,11 +529,8 @@ public class DownloadList extends Activity { } final long id = cursor.getLong(cursor.getColumnIndexOrThrow(BaseColumns._ID)); - final Intent intent = OpenHelper.buildViewIntent(this, id); - try { - startActivity(intent); - } catch (ActivityNotFoundException ex) { - Toast.makeText(this, R.string.download_no_application_title, Toast.LENGTH_LONG).show(); + if (!OpenHelper.startViewIntent(this, id, 0)) { + Toast.makeText(this, R.string.download_no_application_title, Toast.LENGTH_SHORT).show(); } } diff --git a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java index e9cc17ef..f96c04ee 100644 --- a/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java +++ b/ui/src/com/android/providers/downloads/ui/TrampolineActivity.java @@ -92,8 +92,10 @@ public class TrampolineActivity extends Activity { break; case DownloadManager.STATUS_SUCCESSFUL: - final Intent intent = OpenHelper.buildViewIntent(this, id); - startActivity(intent); + if (!OpenHelper.startViewIntent(this, id, 0)) { + Toast.makeText(this, R.string.download_no_application_title, Toast.LENGTH_SHORT) + .show(); + } finish(); break; -- cgit v1.2.3 From e0b9b881187362aea61249952a913d794834b728 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Thu, 19 Sep 2013 04:22:16 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I7eed8b3ec497e3064cfb97a50cd94db372c11369 Auto-generated-cl: translation import --- res/values-iw/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index ffaa5ea3..5eae498b 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -18,20 +18,20 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "מנהל ההורדות" "גישה למנהל ההורדות." - "מאפשר ליישום לגשת למנהל ההורדות ולהשתמש בו לצורך הורדת קבצים. יישומים זדוניים עלולים לנצל אפשרות זו כדי לשבש הורדות ולגשת למידע פרטי." + "מאפשר לאפליקציה לגשת למנהל ההורדות ולהשתמש בו לצורך הורדת קבצים. אפליקציות זדוניות עלולות לנצל אפשרות זו כדי לשבש הורדות ולגשת למידע פרטי." "פונקציות מתקדמות של מנהל ההורדות." - "מאפשר ליישום לגשת לפונקציות המתקדמות של מנהל ההורדות. יישומים זדוניים עלולים לנצל אפשרות זו כדי לשבש הורדות ולגשת למידע פרטי." + "מאפשר לאפליקציה לגשת לפונקציות המתקדמות של מנהל ההורדות. אפליקציות זדוניות עלולות לנצל אפשרות זו כדי לשבש הורדות ולגשת למידע פרטי." "שלח התראות על הורדות." - "מאפשר ליישום לשלוח התראות לגבי הורדות שהסתיימו. יישומים זדוניים עלולים לנצל אפשרות זו כדי לבלבל יישומים אחרים המורידים קבצים." + "מאפשר לאפליקציה לשלוח התראות לגבי הורדות שהסתיימו. אפליקציות זדוניות עלולות לנצל אפשרות זו כדי לבלבל אפליקציות אחרות המורידות קבצים." "הצג את כל ההורדות לאמצעי אחסון מסוג USB" "הצג את כל ההורדות לכרטיס SD" - "מאפשר ליישום לראות את כל ההורדות לכרטיס ה-SD, בלי קשר ליישום שהוריד אותן." + "מאפשר לאפליקציה לראות את כל ההורדות לכרטיס ה-SD, בלי קשר לאפליקציה שהורידה אותן." "שמור מקום בקובץ השמור של ההורדות" - "מאפשר ליישום להוריד קבצים לקובץ השמור של הורדות שלא ניתן למחוק באופן אוטומטי כאשר דרוש למנהל ההורדות שטח נוסף." + "מאפשר לאפליקציה להוריד קבצים לקובץ השמור של הורדות שלא ניתן למחוק באופן אוטומטי כאשר דרוש למנהל ההורדות שטח נוסף." "הורד קבצים ללא התראה" - "מאפשר ליישום להוריד קבצים דרך מנהל ההורדות מבלי להציג התראות כלשהן בפני המשתמש." + "מאפשר לאפליקציה להוריד קבצים דרך מנהל ההורדות מבלי להציג התראות כלשהן בפני המשתמש." "גישה לכל הורדות המערכת" - "מאפשר ליישום להציג ולשנות את כל ההורדות שהופעלו על ידי יישום כלשהו במערכת." + "מאפשר לאפליקציה להציג ולשנות את כל ההורדות שהופעלו על ידי אפליקציה כלשהי במערכת." "<ללא כותרת>" "ההורדה הסתיימה." "ההורדה נכשלה." -- cgit v1.2.3 From c067c8be21dc4a6dc5f49b2b1aed7f91aab47063 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Mon, 23 Sep 2013 14:21:55 -0700 Subject: Allow saving to Downloads. Add column to mark downloads as being writable, and allow documents to be created under Downloads backend. Update database when writing is finished, and generate unique filenames when they already exist. Check canonical path on incoming _DATA paths. Bug: 10667164, 10892621, 10893268 Change-Id: I8c203b96ff042a895b58686903fcd07fc755a00f --- .../providers/downloads/DownloadProvider.java | 55 +++++++++++--- .../downloads/DownloadStorageProvider.java | 87 ++++++++++++++++++++-- src/com/android/providers/downloads/Helpers.java | 10 ++- 3 files changed, 135 insertions(+), 17 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index e0b5842d..999134f0 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -35,7 +35,9 @@ import android.database.sqlite.SQLiteOpenHelper; import android.net.Uri; import android.os.Binder; import android.os.Environment; +import android.os.Handler; import android.os.ParcelFileDescriptor; +import android.os.ParcelFileDescriptor.OnCloseListener; import android.os.Process; import android.os.SELinux; import android.provider.BaseColumns; @@ -49,6 +51,8 @@ import com.android.internal.util.IndentingPrintWriter; import com.google.android.collect.Maps; import com.google.common.annotations.VisibleForTesting; +import libcore.io.IoUtils; + import java.io.File; import java.io.FileDescriptor; import java.io.FileNotFoundException; @@ -69,7 +73,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 = 108; + private static final int DB_VERSION = 109; /** Name of table in the database */ private static final String DB_TABLE = "downloads"; @@ -166,6 +170,8 @@ public final class DownloadProvider extends ContentProvider { private static final List downloadManagerColumnsList = Arrays.asList(DownloadManager.UNDERLYING_COLUMNS); + private Handler mHandler; + /** The database that lies underneath this content provider */ private SQLiteOpenHelper mOpenHelper = null; @@ -319,6 +325,11 @@ public final class DownloadProvider extends ContentProvider { "INTEGER NOT NULL DEFAULT 1"); break; + case 109: + addColumn(db, DB_TABLE, Downloads.Impl.COLUMN_ALLOW_WRITE, + "BOOLEAN NOT NULL DEFAULT 0"); + break; + default: throw new IllegalStateException("Don't know how to upgrade to " + version); } @@ -432,6 +443,8 @@ public final class DownloadProvider extends ContentProvider { mSystemFacade = new RealSystemFacade(getContext()); } + mHandler = new Handler(); + mOpenHelper = new DatabaseHelper(getContext()); // Initialize the system uid mSystemUid = Process.SYSTEM_UID; @@ -590,6 +603,7 @@ public final class DownloadProvider extends ContentProvider { 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 { filteredValues.put(Downloads.Impl.COLUMN_STATUS, Downloads.Impl.STATUS_PENDING); filteredValues.put(Downloads.Impl.COLUMN_TOTAL_BYTES, -1); @@ -784,6 +798,7 @@ public final class DownloadProvider extends ContentProvider { values.remove(Downloads.Impl.COLUMN_ALLOW_METERED); values.remove(Downloads.Impl.COLUMN_IS_VISIBLE_IN_DOWNLOADS_UI); values.remove(Downloads.Impl.COLUMN_MEDIA_SCANNED); + values.remove(Downloads.Impl.COLUMN_ALLOW_WRITE); Iterator> iterator = values.valueSet().iterator(); while (iterator.hasNext()) { String key = iterator.next().getKey(); @@ -1162,13 +1177,15 @@ public final class DownloadProvider extends ContentProvider { * Remotely opens a file */ @Override - public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { + public ParcelFileDescriptor openFile(final Uri uri, String mode) throws FileNotFoundException { if (Constants.LOGVV) { logVerboseOpenFileInfo(uri, mode); } - Cursor cursor = query(uri, new String[] {"_data"}, null, null, null); + final Cursor cursor = query(uri, new String[] { + Downloads.Impl._DATA, Downloads.Impl.COLUMN_ALLOW_WRITE }, null, null, null); String path; + boolean allowWrite; try { int count = (cursor != null) ? cursor.getCount() : 0; if (count != 1) { @@ -1181,10 +1198,9 @@ public final class DownloadProvider extends ContentProvider { cursor.moveToFirst(); path = cursor.getString(0); + allowWrite = cursor.getInt(1) != 0; } finally { - if (cursor != null) { - cursor.close(); - } + IoUtils.closeQuietly(cursor); } if (path == null) { @@ -1193,12 +1209,33 @@ public final class DownloadProvider extends ContentProvider { if (!Helpers.isFilenameValid(path, mDownloadsDataDir)) { throw new FileNotFoundException("Invalid filename: " + path); } - if (!"r".equals(mode)) { + if (!allowWrite && !"r".equals(mode)) { throw new FileNotFoundException("Bad mode for " + uri + ": " + mode); } - ParcelFileDescriptor ret = ParcelFileDescriptor.open(new File(path), - ParcelFileDescriptor.MODE_READ_ONLY); + final File file = new File(path); + + ParcelFileDescriptor ret; + if ("r".equals(mode)) { + ret = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); + } else { + try { + // When finished writing, update size and timestamp + ret = ParcelFileDescriptor.open(file, ParcelFileDescriptor.parseMode(mode), + mHandler, new OnCloseListener() { + @Override + public void onClose(IOException e) { + final ContentValues values = new ContentValues(); + values.put(Downloads.Impl.COLUMN_TOTAL_BYTES, file.length()); + values.put(Downloads.Impl.COLUMN_LAST_MODIFICATION, + System.currentTimeMillis()); + update(uri, values, null, null); + } + }); + } catch (IOException e) { + throw new FileNotFoundException("Failed to open for writing: " + e); + } + } if (ret == null) { if (Constants.LOGV) { diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 7268c5c6..d982f2a1 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -18,6 +18,7 @@ package com.android.providers.downloads; import android.app.DownloadManager; import android.app.DownloadManager.Query; +import android.content.ContentResolver; import android.content.Context; import android.content.res.AssetFileDescriptor; import android.database.Cursor; @@ -26,16 +27,20 @@ import android.database.MatrixCursor.RowBuilder; import android.graphics.Point; import android.os.Binder; import android.os.CancellationSignal; +import android.os.Environment; import android.os.ParcelFileDescriptor; import android.provider.DocumentsContract; import android.provider.DocumentsContract.Document; import android.provider.DocumentsContract.Root; import android.provider.DocumentsProvider; import android.text.TextUtils; +import android.webkit.MimeTypeMap; import libcore.io.IoUtils; +import java.io.File; import java.io.FileNotFoundException; +import java.io.IOException; /** * Presents a {@link DocumentsContract} view of {@link DownloadManager} @@ -83,13 +88,48 @@ public class DownloadStorageProvider extends DocumentsProvider { final RowBuilder row = result.newRow(); row.add(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); row.add(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); - row.add(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_RECENTS); + row.add(Root.COLUMN_FLAGS, + Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_RECENTS | Root.FLAG_SUPPORTS_CREATE); 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); return result; } + @Override + public String createDocument(String docId, String mimeType, String displayName) + throws FileNotFoundException { + final File parent = Environment.getExternalStoragePublicDirectory( + Environment.DIRECTORY_DOWNLOADS); + + // Delegate to real provider + final long token = Binder.clearCallingIdentity(); + try { + displayName = removeExtension(mimeType, displayName); + File file = new File(parent, addExtension(mimeType, displayName)); + + // If conflicting file, try adding counter suffix + int n = 0; + while (file.exists() && n++ < 32) { + file = new File(parent, addExtension(mimeType, displayName + " (" + n + ")")); + } + + try { + if (!file.createNewFile()) { + throw new IllegalStateException("Failed to touch " + file); + } + } catch (IOException e) { + throw new IllegalStateException("Failed to touch " + file + ": " + e); + } + + return Long.toString(mDm.addCompletedDownload( + file.getName(), file.getName(), false, mimeType, file.getAbsolutePath(), 0L, + false, true)); + } finally { + Binder.restoreCallingIdentity(token); + } + } + @Override public void deleteDocument(String docId) throws FileNotFoundException { // Delegate to real provider @@ -209,14 +249,12 @@ public class DownloadStorageProvider extends DocumentsProvider { @Override public ParcelFileDescriptor openDocument(String docId, String mode, CancellationSignal signal) throws FileNotFoundException { - if (!"r".equals(mode)) { - throw new IllegalArgumentException("Downloads are read-only"); - } - // Delegate to real provider final long token = Binder.clearCallingIdentity(); try { - return mDm.openDownloadedFile(Long.parseLong(docId)); + final long id = Long.parseLong(docId); + final ContentResolver resolver = getContext().getContentResolver(); + return resolver.openFileDescriptor(mDm.getDownloadUri(id), mode, signal); } finally { Binder.restoreCallingIdentity(token); } @@ -234,7 +272,8 @@ public class DownloadStorageProvider extends DocumentsProvider { final RowBuilder row = result.newRow(); row.add(Document.COLUMN_DOCUMENT_ID, DOC_ID_ROOT); row.add(Document.COLUMN_MIME_TYPE, Document.MIME_TYPE_DIR); - row.add(Document.COLUMN_FLAGS, Document.FLAG_DIR_PREFERS_LAST_MODIFIED); + row.add(Document.COLUMN_FLAGS, + Document.FLAG_DIR_PREFERS_LAST_MODIFIED | Document.FLAG_DIR_SUPPORTS_CREATE); } private void includeDownloadFromCursor(MatrixCursor result, Cursor cursor) { @@ -288,6 +327,12 @@ public class DownloadStorageProvider extends DocumentsProvider { flags |= Document.FLAG_SUPPORTS_THUMBNAIL; } + final int allowWrite = cursor.getInt( + cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ALLOW_WRITE)); + if (allowWrite != 0) { + flags |= Document.FLAG_SUPPORTS_WRITE; + } + final long lastModified = cursor.getLong( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)); @@ -300,4 +345,32 @@ public class DownloadStorageProvider extends DocumentsProvider { row.add(Document.COLUMN_LAST_MODIFIED, lastModified); row.add(Document.COLUMN_FLAGS, flags); } + + /** + * Remove file extension from name, but only if exact MIME type mapping + * exists. This means we can reapply the extension later. + */ + private static String removeExtension(String mimeType, String name) { + final int lastDot = name.lastIndexOf('.'); + if (lastDot >= 0) { + final String extension = name.substring(lastDot + 1); + final String nameMime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension); + if (mimeType.equals(nameMime)) { + return name.substring(0, lastDot); + } + } + return name; + } + + /** + * Add file extension to name, but only if exact MIME type mapping exists. + */ + private static String addExtension(String mimeType, String name) { + final String extension = MimeTypeMap.getSingleton() + .getExtensionFromMimeType(mimeType); + if (extension != null) { + return name + "." + extension; + } + return name; + } } diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java index 33205557..aa763de2 100644 --- a/src/com/android/providers/downloads/Helpers.java +++ b/src/com/android/providers/downloads/Helpers.java @@ -16,6 +16,8 @@ package com.android.providers.downloads; +import static com.android.providers.downloads.Constants.TAG; + import android.content.Context; import android.net.Uri; import android.os.Environment; @@ -342,7 +344,13 @@ public class Helpers { * Checks whether the filename looks legitimate */ static boolean isFilenameValid(String filename, File downloadsDataDir) { - filename = filename.replaceFirst("/+", "/"); // normalize leading slashes + try { + filename = new File(filename).getCanonicalPath(); + } catch (IOException e) { + Log.w(TAG, "Failed to resolve canonical path: " + e); + return false; + } + return filename.startsWith(Environment.getDownloadCacheDirectory().toString()) || filename.startsWith(downloadsDataDir.toString()) || filename.startsWith(Environment.getExternalStorageDirectory().toString()); -- cgit v1.2.3 From 776e4f7991c4f5637f9a945ed9190a26ff295446 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 25 Sep 2013 14:19:04 -0700 Subject: Always check against canonical paths. Bug: 10920351 Change-Id: I8c7e5344d9fd9d15565eaf93b91ce457a98ab98c --- src/com/android/providers/downloads/Helpers.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java index aa763de2..013faf27 100644 --- a/src/com/android/providers/downloads/Helpers.java +++ b/src/com/android/providers/downloads/Helpers.java @@ -344,16 +344,26 @@ public class Helpers { * Checks whether the filename looks legitimate */ static boolean isFilenameValid(String filename, File downloadsDataDir) { + final String[] whitelist; try { filename = new File(filename).getCanonicalPath(); + whitelist = new String[] { + downloadsDataDir.getCanonicalPath(), + Environment.getDownloadCacheDirectory().getCanonicalPath(), + Environment.getExternalStorageDirectory().getCanonicalPath(), + }; } catch (IOException e) { Log.w(TAG, "Failed to resolve canonical path: " + e); return false; } - return filename.startsWith(Environment.getDownloadCacheDirectory().toString()) - || filename.startsWith(downloadsDataDir.toString()) - || filename.startsWith(Environment.getExternalStorageDirectory().toString()); + for (String test : whitelist) { + if (filename.startsWith(test)) { + return true; + } + } + + return false; } /** -- cgit v1.2.3 From e1a64ef38f1effbe99cc8149cb2706df0f1f5916 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 25 Sep 2013 14:19:04 -0700 Subject: Always check against canonical paths. Bug: 10920351 Change-Id: I8c7e5344d9fd9d15565eaf93b91ce457a98ab98c --- src/com/android/providers/downloads/Helpers.java | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/com/android/providers/downloads/Helpers.java b/src/com/android/providers/downloads/Helpers.java index aa763de2..013faf27 100644 --- a/src/com/android/providers/downloads/Helpers.java +++ b/src/com/android/providers/downloads/Helpers.java @@ -344,16 +344,26 @@ public class Helpers { * Checks whether the filename looks legitimate */ static boolean isFilenameValid(String filename, File downloadsDataDir) { + final String[] whitelist; try { filename = new File(filename).getCanonicalPath(); + whitelist = new String[] { + downloadsDataDir.getCanonicalPath(), + Environment.getDownloadCacheDirectory().getCanonicalPath(), + Environment.getExternalStorageDirectory().getCanonicalPath(), + }; } catch (IOException e) { Log.w(TAG, "Failed to resolve canonical path: " + e); return false; } - return filename.startsWith(Environment.getDownloadCacheDirectory().toString()) - || filename.startsWith(downloadsDataDir.toString()) - || filename.startsWith(Environment.getExternalStorageDirectory().toString()); + for (String test : whitelist) { + if (filename.startsWith(test)) { + return true; + } + } + + return false; } /** -- cgit v1.2.3 From afaf53bd2b1322167b6f31eda941e38335c4a952 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 26 Sep 2013 14:30:47 -0700 Subject: Revoke grants when downloads are deleted. When deleting downloads, revoke any Uri permission grants, which removes from getPersistedUriPermissions(). Bug: 10928851 Change-Id: I3e90c4071385832dcb3e0cf9ca3fdccafbe30037 --- src/com/android/providers/downloads/DownloadProvider.java | 13 +++++++++++++ .../providers/downloads/DownloadStorageProvider.java | 7 +++++++ 2 files changed, 20 insertions(+) diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index 999134f0..cb3dc18b 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -1162,6 +1162,19 @@ public final class DownloadProvider extends ContentProvider { case ALL_DOWNLOADS_ID: SqlSelection selection = getWhereClause(uri, where, whereArgs, match); deleteRequestHeaders(db, selection.getSelection(), selection.getParameters()); + + final Cursor cursor = db.query(DB_TABLE, new String[] { + Downloads.Impl._ID }, selection.getSelection(), selection.getParameters(), + null, null, null); + try { + while (cursor.moveToNext()) { + final long id = cursor.getLong(0); + DownloadStorageProvider.onDownloadProviderDelete(getContext(), id); + } + } finally { + IoUtils.closeQuietly(cursor); + } + count = db.delete(DB_TABLE, selection.getSelection(), selection.getParameters()); break; diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index d982f2a1..1b7b6916 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -25,6 +25,7 @@ import android.database.Cursor; import android.database.MatrixCursor; import android.database.MatrixCursor.RowBuilder; import android.graphics.Point; +import android.net.Uri; import android.os.Binder; import android.os.CancellationSignal; import android.os.Environment; @@ -47,6 +48,7 @@ import java.io.IOException; * contents. */ public class DownloadStorageProvider extends DocumentsProvider { + private static final String AUTHORITY = Constants.STORAGE_AUTHORITY; private static final String DOC_ID_ROOT = Constants.STORAGE_ROOT_ID; private static final String[] DEFAULT_ROOT_PROJECTION = new String[] { @@ -82,6 +84,11 @@ public class DownloadStorageProvider extends DocumentsProvider { result.setNotificationUri(getContext().getContentResolver(), cursor.getNotificationUri()); } + static void onDownloadProviderDelete(Context context, long id) { + final Uri uri = DocumentsContract.buildDocumentUri(AUTHORITY, Long.toString(id)); + context.revokeUriPermission(uri, ~0); + } + @Override public Cursor queryRoots(String[] projection) throws FileNotFoundException { final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection)); -- cgit v1.2.3 From ba91f541fc210c817e0a307c4d7c65b586d4e547 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Thu, 26 Sep 2013 14:55:32 -0700 Subject: Update Downloads icon. Bug: 10900560 Change-Id: Idd7578a33a6cad86ccb4b1244a571aca22a3c6ce --- res/mipmap-hdpi/ic_launcher_download.png | Bin 10593 -> 9282 bytes res/mipmap-mdpi/ic_launcher_download.png | Bin 23509 -> 5420 bytes res/mipmap-xhdpi/ic_launcher_download.png | Bin 32416 -> 13962 bytes res/mipmap-xxhdpi/ic_launcher_download.png | Bin 21228 -> 40279 bytes res/mipmap-xxxhdpi/ic_launcher_download.png | Bin 0 -> 35468 bytes ui/res/mipmap-hdpi/ic_launcher_download.png | Bin 10593 -> 9282 bytes ui/res/mipmap-mdpi/ic_launcher_download.png | Bin 23509 -> 5420 bytes ui/res/mipmap-xhdpi/ic_launcher_download.png | Bin 32416 -> 13962 bytes ui/res/mipmap-xxhdpi/ic_launcher_download.png | Bin 21228 -> 40279 bytes ui/res/mipmap-xxxhdpi/ic_launcher_download.png | Bin 0 -> 35468 bytes 10 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 res/mipmap-xxxhdpi/ic_launcher_download.png create mode 100644 ui/res/mipmap-xxxhdpi/ic_launcher_download.png diff --git a/res/mipmap-hdpi/ic_launcher_download.png b/res/mipmap-hdpi/ic_launcher_download.png index 3f092d39..2450cfbb 100644 Binary files a/res/mipmap-hdpi/ic_launcher_download.png and b/res/mipmap-hdpi/ic_launcher_download.png differ diff --git a/res/mipmap-mdpi/ic_launcher_download.png b/res/mipmap-mdpi/ic_launcher_download.png index 76652fb9..7b56ada3 100644 Binary files a/res/mipmap-mdpi/ic_launcher_download.png and b/res/mipmap-mdpi/ic_launcher_download.png differ diff --git a/res/mipmap-xhdpi/ic_launcher_download.png b/res/mipmap-xhdpi/ic_launcher_download.png index 7d7b1b11..775004f2 100644 Binary files a/res/mipmap-xhdpi/ic_launcher_download.png and b/res/mipmap-xhdpi/ic_launcher_download.png differ diff --git a/res/mipmap-xxhdpi/ic_launcher_download.png b/res/mipmap-xxhdpi/ic_launcher_download.png index 0921c124..ed8c7827 100644 Binary files a/res/mipmap-xxhdpi/ic_launcher_download.png and b/res/mipmap-xxhdpi/ic_launcher_download.png differ diff --git a/res/mipmap-xxxhdpi/ic_launcher_download.png b/res/mipmap-xxxhdpi/ic_launcher_download.png new file mode 100644 index 00000000..2dbe0f2d Binary files /dev/null and b/res/mipmap-xxxhdpi/ic_launcher_download.png differ diff --git a/ui/res/mipmap-hdpi/ic_launcher_download.png b/ui/res/mipmap-hdpi/ic_launcher_download.png index 3f092d39..2450cfbb 100644 Binary files a/ui/res/mipmap-hdpi/ic_launcher_download.png and b/ui/res/mipmap-hdpi/ic_launcher_download.png differ diff --git a/ui/res/mipmap-mdpi/ic_launcher_download.png b/ui/res/mipmap-mdpi/ic_launcher_download.png index 76652fb9..7b56ada3 100644 Binary files a/ui/res/mipmap-mdpi/ic_launcher_download.png and b/ui/res/mipmap-mdpi/ic_launcher_download.png differ diff --git a/ui/res/mipmap-xhdpi/ic_launcher_download.png b/ui/res/mipmap-xhdpi/ic_launcher_download.png index 7d7b1b11..775004f2 100644 Binary files a/ui/res/mipmap-xhdpi/ic_launcher_download.png and b/ui/res/mipmap-xhdpi/ic_launcher_download.png differ diff --git a/ui/res/mipmap-xxhdpi/ic_launcher_download.png b/ui/res/mipmap-xxhdpi/ic_launcher_download.png index 0921c124..ed8c7827 100644 Binary files a/ui/res/mipmap-xxhdpi/ic_launcher_download.png and b/ui/res/mipmap-xxhdpi/ic_launcher_download.png differ diff --git a/ui/res/mipmap-xxxhdpi/ic_launcher_download.png b/ui/res/mipmap-xxxhdpi/ic_launcher_download.png new file mode 100644 index 00000000..2dbe0f2d Binary files /dev/null and b/ui/res/mipmap-xxxhdpi/ic_launcher_download.png differ -- cgit v1.2.3 From 3d1eb366ef744a8790d89535a585bb50bcc7c113 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 27 Sep 2013 17:08:13 -0700 Subject: Follow API changes. Bug: 10964412 Change-Id: Ia452bd056b6e01aace33acc5f1aa741af4d77c5f --- src/com/android/providers/downloads/DownloadStorageProvider.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 1b7b6916..622633a8 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -52,9 +52,8 @@ public class DownloadStorageProvider extends DocumentsProvider { private static final String DOC_ID_ROOT = Constants.STORAGE_ROOT_ID; private static final String[] DEFAULT_ROOT_PROJECTION = new String[] { - Root.COLUMN_ROOT_ID, Root.COLUMN_ROOT_TYPE, Root.COLUMN_FLAGS, Root.COLUMN_ICON, - Root.COLUMN_TITLE, Root.COLUMN_SUMMARY, Root.COLUMN_DOCUMENT_ID, - Root.COLUMN_AVAILABLE_BYTES, + Root.COLUMN_ROOT_ID, Root.COLUMN_FLAGS, Root.COLUMN_ICON, + Root.COLUMN_TITLE, Root.COLUMN_DOCUMENT_ID, }; private static final String[] DEFAULT_DOCUMENT_PROJECTION = new String[] { @@ -94,7 +93,6 @@ public class DownloadStorageProvider extends DocumentsProvider { final MatrixCursor result = new MatrixCursor(resolveRootProjection(projection)); final RowBuilder row = result.newRow(); row.add(Root.COLUMN_ROOT_ID, DOC_ID_ROOT); - row.add(Root.COLUMN_ROOT_TYPE, Root.ROOT_TYPE_SHORTCUT); row.add(Root.COLUMN_FLAGS, Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_RECENTS | Root.FLAG_SUPPORTS_CREATE); row.add(Root.COLUMN_ICON, R.mipmap.ic_launcher_download); -- cgit v1.2.3 From e4dc524e195b2dd8d86dd80504500f8f5bb11d92 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Mon, 30 Sep 2013 16:06:37 -0700 Subject: Import translations. DO NOT MERGE Change-Id: Ia9624a3605f4c3322c025d29ae490652e8451fa5 Auto-generated-cl: translation import --- res/values-am/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index fd5a94f9..26947fd1 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -42,7 +42,7 @@ "ለኋላ አውርድ ወረፋ?" "ይህን %s አውርድ አሁን መጀመር የባትሪህን ዕድሜ ሊያሳጥረው ይችል ይሆናል እና/ወይም የአንተን ተንቀሳቃሽ ውሂብ ግንኙነት ከልክ ያለፈ አጠቃቀም ሊያስከስት ይችል ይሆናል፣ ይህም የአንተ ተንቀሳቃሽ ከዋኝ በአንተ ውሂብ ክፍያ ዕቅድ ስምምነት መሰረት ተጨማሪ ክፍያ እንድትከፍል ሊጠይቅህ ይዳርገው ይሆናል፡፡ ይህን አውርድ በሚቀጥለው ጊዜ ከWi-Fi አውታረመረብ ጋር ስትገናኝ ለመጀመር \n\n ንካ%s፡፡" "ወረፋ" - "ይቅር" + "ሰርዝ" "አሁን ጀምር" "%d%%" -- cgit v1.2.3 From 04c1c2afb7481e7fb9b66f96023c79d19cad8c90 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Tue, 1 Oct 2013 14:02:35 -0700 Subject: Allow all downloads to be writable. Bug: 10943812 Change-Id: Ib0cb3e608c1f40a2e2fcd6e493c8f920d8b4221b --- .../providers/downloads/DownloadProvider.java | 22 +++------------------- .../downloads/DownloadStorageProvider.java | 11 +++-------- .../android/providers/downloads/OpenHelper.java | 4 +++- 3 files changed, 9 insertions(+), 28 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index cb3dc18b..750ee0fe 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -1195,10 +1195,8 @@ public final class DownloadProvider extends ContentProvider { logVerboseOpenFileInfo(uri, mode); } - final Cursor cursor = query(uri, new String[] { - Downloads.Impl._DATA, Downloads.Impl.COLUMN_ALLOW_WRITE }, null, null, null); + final Cursor cursor = query(uri, new String[] { Downloads.Impl._DATA }, null, null, null); String path; - boolean allowWrite; try { int count = (cursor != null) ? cursor.getCount() : 0; if (count != 1) { @@ -1211,7 +1209,6 @@ public final class DownloadProvider extends ContentProvider { cursor.moveToFirst(); path = cursor.getString(0); - allowWrite = cursor.getInt(1) != 0; } finally { IoUtils.closeQuietly(cursor); } @@ -1222,19 +1219,14 @@ public final class DownloadProvider extends ContentProvider { if (!Helpers.isFilenameValid(path, mDownloadsDataDir)) { throw new FileNotFoundException("Invalid filename: " + path); } - if (!allowWrite && !"r".equals(mode)) { - throw new FileNotFoundException("Bad mode for " + uri + ": " + mode); - } final File file = new File(path); - - ParcelFileDescriptor ret; if ("r".equals(mode)) { - ret = ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); + return ParcelFileDescriptor.open(file, ParcelFileDescriptor.MODE_READ_ONLY); } else { try { // When finished writing, update size and timestamp - ret = ParcelFileDescriptor.open(file, ParcelFileDescriptor.parseMode(mode), + return ParcelFileDescriptor.open(file, ParcelFileDescriptor.parseMode(mode), mHandler, new OnCloseListener() { @Override public void onClose(IOException e) { @@ -1249,14 +1241,6 @@ public final class DownloadProvider extends ContentProvider { throw new FileNotFoundException("Failed to open for writing: " + e); } } - - if (ret == null) { - if (Constants.LOGV) { - Log.v(Constants.TAG, "couldn't open file"); - } - throw new FileNotFoundException("couldn't open file"); - } - return ret; } @Override diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index 622633a8..c32f7459 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -292,7 +292,8 @@ public class DownloadStorageProvider extends DocumentsProvider { String mimeType = cursor.getString( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_MEDIA_TYPE)); if (mimeType == null) { - mimeType = "application/octet-stream"; + // Provide fake MIME type so it's openable + mimeType = "vnd.android.document/file"; } Long size = cursor.getLong( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_TOTAL_SIZE_BYTES)); @@ -327,17 +328,11 @@ public class DownloadStorageProvider extends DocumentsProvider { break; } - int flags = Document.FLAG_SUPPORTS_DELETE; + int flags = Document.FLAG_SUPPORTS_DELETE | Document.FLAG_SUPPORTS_WRITE; if (mimeType != null && mimeType.startsWith("image/")) { flags |= Document.FLAG_SUPPORTS_THUMBNAIL; } - final int allowWrite = cursor.getInt( - cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_ALLOW_WRITE)); - if (allowWrite != 0) { - flags |= Document.FLAG_SUPPORTS_WRITE; - } - final long lastModified = cursor.getLong( cursor.getColumnIndexOrThrow(DownloadManager.COLUMN_LAST_MODIFIED_TIMESTAMP)); diff --git a/src/com/android/providers/downloads/OpenHelper.java b/src/com/android/providers/downloads/OpenHelper.java index af7a37f2..4eb319c4 100644 --- a/src/com/android/providers/downloads/OpenHelper.java +++ b/src/com/android/providers/downloads/OpenHelper.java @@ -78,7 +78,6 @@ public class OpenHelper { mimeType = DownloadDrmHelper.getOriginalMimeType(context, file, mimeType); final Intent intent = new Intent(Intent.ACTION_VIEW); - intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); if ("application/vnd.android.package-archive".equals(mimeType)) { // PackageInstaller doesn't like content URIs, so open file @@ -90,9 +89,12 @@ public class OpenHelper { intent.putExtra(Intent.EXTRA_REFERRER, getRefererUri(context, id)); intent.putExtra(Intent.EXTRA_ORIGINATING_UID, getOriginatingUid(context, id)); } else if ("file".equals(localUri.getScheme())) { + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION + | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); intent.setDataAndType( ContentUris.withAppendedId(ALL_DOWNLOADS_CONTENT_URI, id), mimeType); } else { + intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); intent.setDataAndType(localUri, mimeType); } -- cgit v1.2.3 From dfb6502136dc6683166f2104d93c22e1b72e1818 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 4 Oct 2013 13:35:55 -0700 Subject: Ensure Downloads directory exists before create. Bug: 11080980 Change-Id: Iffa5402ae632ceda06e0aec6bdc73c0c4fcbeaa1 --- src/com/android/providers/downloads/DownloadStorageProvider.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index c32f7459..d9a0aa63 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -106,6 +106,7 @@ public class DownloadStorageProvider extends DocumentsProvider { throws FileNotFoundException { final File parent = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS); + parent.mkdirs(); // Delegate to real provider final long token = Binder.clearCallingIdentity(); -- cgit v1.2.3 From 1225c34df262ece7a9f95ee5fe61c1985bf16df1 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 4 Oct 2013 16:02:50 -0700 Subject: Always update notifications, media scanner. insert() was trying to be too clever, and it would end up delaying the media scanner until the next download happened. This resulted in duplicate photos in DocumentsUI. Bug: 11081685 Change-Id: Ic9549ede38118372849119dd3a21415a4723e9f5 --- .../providers/downloads/DownloadProvider.java | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/src/com/android/providers/downloads/DownloadProvider.java b/src/com/android/providers/downloads/DownloadProvider.java index 750ee0fe..ad3cf7ac 100644 --- a/src/com/android/providers/downloads/DownloadProvider.java +++ b/src/com/android/providers/downloads/DownloadProvider.java @@ -683,23 +683,12 @@ public final class DownloadProvider extends ContentProvider { } insertRequestHeaders(db, rowID, values); - /* - * requests coming from - * DownloadManager.addCompletedDownload(String, String, String, - * boolean, String, String, long) need special treatment - */ - Context context = getContext(); - if (values.getAsInteger(Downloads.Impl.COLUMN_DESTINATION) == - Downloads.Impl.DESTINATION_NON_DOWNLOADMANAGER_DOWNLOAD) { - // When notification is requested, kick off service to process all - // relevant downloads. - if (Downloads.Impl.isNotificationToBeDisplayed(vis)) { - context.startService(new Intent(context, DownloadService.class)); - } - } else { - context.startService(new Intent(context, DownloadService.class)); - } notifyContentChanged(uri, match); + + // Always start service to handle notifications and/or scanning + final Context context = getContext(); + context.startService(new Intent(context, DownloadService.class)); + return ContentUris.withAppendedId(Downloads.Impl.CONTENT_URI, rowID); } -- cgit v1.2.3 From 9770a3c402da1e09f3a5143f089173805edff32b Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 4 Oct 2013 16:41:10 -0700 Subject: Treat deleted in-progress downloads as canceled. Otherwise the download thread would keep going! Bug: 11081405 Change-Id: Ib8f1b624b29cabc782b8a0047d7b5db7e39a17de --- src/com/android/providers/downloads/DownloadThread.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/providers/downloads/DownloadThread.java b/src/com/android/providers/downloads/DownloadThread.java index def4d7fe..93f8d650 100644 --- a/src/com/android/providers/downloads/DownloadThread.java +++ b/src/com/android/providers/downloads/DownloadThread.java @@ -519,7 +519,7 @@ public class DownloadThread implements Runnable { throw new StopRequestException( Downloads.Impl.STATUS_PAUSED_BY_APP, "download paused by owner"); } - if (mInfo.mStatus == Downloads.Impl.STATUS_CANCELED) { + if (mInfo.mStatus == Downloads.Impl.STATUS_CANCELED || mInfo.mDeleted) { throw new StopRequestException(Downloads.Impl.STATUS_CANCELED, "download canceled"); } } -- cgit v1.2.3 From c2ae9019d014c13bc6295d6e5ffcdf0444b99332 Mon Sep 17 00:00:00 2001 From: Baligh Uddin Date: Fri, 4 Oct 2013 20:46:25 -0700 Subject: Import translations. DO NOT MERGE Change-Id: I907729d9e67673ed032b9b4a15552c607f72ec58 Auto-generated-cl: translation import --- res/values-ar/strings.xml | 4 ++-- ui/res/values-am/strings.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index dd6694b7..4d3325d1 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -21,8 +21,8 @@ "للسماح للتطبيق بالدخول إلى إدارة التنزيل واستخدامها لتنزيل الملفات. يمكن للتطبيقات الضارة استخدام هذا لتعطيل التنزيلات والدخول إلى المعلومات الخاصة." "وظائف إدارة التنزيل المتقدمة." "للسماح للتطبيق بالدخول إلى وظائف إدارة التنزيل المتقدمة. يمكن للتطبيقات الضارة استخدام هذا لتعطيل التنزيلات والدخول إلى المعلومات الخاصة." - "إرسال تنبيهات بالتنزيل." - "للسماح للتطبيق بإرسال تنبيهات عن التنزيلات المكتملة. يمكن للتطبيقات الضارة استخدام هذا لإرباك التطبيقات الأخرى التي تنزل الملفات." + "إرسال اشعارات بالتنزيل." + "للسماح للتطبيق بإرسال اشعارات عن التنزيلات المكتملة. يمكن للتطبيقات الضارة استخدام هذا لإرباك التطبيقات الأخرى التي تنزل الملفات." "عرض جميع التنزيلات إلى وحدة تخزين USB" "مشاهدة جميع التنزيلات على بطاقة SD" "للسماح للتطبيق بمشاهدة جميع التنزيلات على بطاقة SD، بغض النظر عن التطبيق الذي نزلها." diff --git a/ui/res/values-am/strings.xml b/ui/res/values-am/strings.xml index 42626740..82c6038d 100644 --- a/ui/res/values-am/strings.xml +++ b/ui/res/values-am/strings.xml @@ -41,7 +41,7 @@ "አስወግድ" "ሰርዝ" "ጠብቅ" - "ይቅር" + "ሰርዝ" "እንደገና ሞክር" "ሁሉንም አትምረጥ" "ሁሉንም ምረጥ" -- cgit v1.2.3 From d3e8c8b58754062342080965abf86f16c678bde9 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Wed, 9 Oct 2013 13:57:41 -0700 Subject: Register DocumentsProvider with . Follows API change in framework. Bug: 11109484 Change-Id: Icc3d4205b5f33f3821810c4a0692a030228363b7 --- AndroidManifest.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/AndroidManifest.xml b/AndroidManifest.xml index 8e848d50..56cdb9c1 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -85,9 +85,9 @@ android:grantUriPermissions="true" android:exported="true" android:permission="android.permission.MANAGE_DOCUMENTS"> - + + + Date: Thu, 10 Oct 2013 14:56:07 -0700 Subject: No directories in Downloads. Bug: 11166290 Change-Id: I29c9cf53c77d03d1bcf408edd693b9c24d5665b6 --- src/com/android/providers/downloads/DownloadStorageProvider.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/com/android/providers/downloads/DownloadStorageProvider.java b/src/com/android/providers/downloads/DownloadStorageProvider.java index d9a0aa63..ecef54e0 100644 --- a/src/com/android/providers/downloads/DownloadStorageProvider.java +++ b/src/com/android/providers/downloads/DownloadStorageProvider.java @@ -104,6 +104,10 @@ public class DownloadStorageProvider extends DocumentsProvider { @Override public String createDocument(String docId, String mimeType, String displayName) throws FileNotFoundException { + if (Document.MIME_TYPE_DIR.equals(mimeType)) { + throw new FileNotFoundException("Directory creation not supported"); + } + final File parent = Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_DOWNLOADS); parent.mkdirs(); -- cgit v1.2.3