1

I'm trying to use Android DownloadManager class this way: super.onCreate(savedInstanceState); setContentView(R.layout.main);

Request r = new Request(Uri.parse("http://url"));
r.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, "file.ext"); // also tried all other possible ways to set up destination
DownloadManager dm = (DownloadManager) getSystemService(DOWNLOAD_SERVICE);
dm.enqueue(r);

On the last line, dm.enqueue(r) the application crashes. Logcat error:

05-12 13:53:55.408: E/JavaBinder(6814): *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
05-12 13:53:55.408: E/JavaBinder(6814): java.lang.NoSuchMethodError: getExternalStorages
05-12 13:53:55.408: E/JavaBinder(6814):     at com.android.providers.downloads.Helpers.isFilenameValid(Helpers.java:652)
05-12 13:53:55.408: E/JavaBinder(6814):     at com.android.providers.downloads.DownloadProvider.checkFileUriDestination(DownloadProvider.java:613)
05-12 13:53:55.408: E/JavaBinder(6814):     at com.android.providers.downloads.DownloadProvider.insert(DownloadProvider.java:500)
05-12 13:53:55.408: E/JavaBinder(6814):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
05-12 13:53:55.408: E/JavaBinder(6814):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
05-12 13:53:55.408: E/JavaBinder(6814):     at android.os.Binder.execTransact(Binder.java:324)
05-12 13:53:55.408: E/JavaBinder(6814):     at dalvik.system.NativeStart.run(Native Method)
05-12 13:53:55.408: W/dalvikvm(6814): threadid=7: thread exiting with uncaught exception (group=0x2aac8620)
05-12 13:53:55.408: E/AndroidRuntime(6814): FATAL EXCEPTION: Binder Thread #1
05-12 13:53:55.408: E/AndroidRuntime(6814): java.lang.NoSuchMethodError: getExternalStorages
05-12 13:53:55.408: E/AndroidRuntime(6814):     at com.android.providers.downloads.Helpers.isFilenameValid(Helpers.java:652)
05-12 13:53:55.408: E/AndroidRuntime(6814):     at com.android.providers.downloads.DownloadProvider.checkFileUriDestination(DownloadProvider.java:613)
05-12 13:53:55.408: E/AndroidRuntime(6814):     at com.android.providers.downloads.DownloadProvider.insert(DownloadProvider.java:500)
05-12 13:53:55.408: E/AndroidRuntime(6814):     at android.content.ContentProvider$Transport.insert(ContentProvider.java:198)
05-12 13:53:55.408: E/AndroidRuntime(6814):     at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:146)
05-12 13:53:55.408: E/AndroidRuntime(6814):     at android.os.Binder.execTransact(Binder.java:324)
05-12 13:53:55.408: E/AndroidRuntime(6814):     at dalvik.system.NativeStart.run(Native Method)

But if I don't specify destination in any way, file is successfully downloaded.

I can't understand what's the problem at all. Could you help me please?

aplavin
  • 2,199
  • 5
  • 32
  • 53
  • What are you running this on? In the current source code, `isFilenameValid()` does not refer to a `getExternalStorages()` method. – CommonsWare May 12 '12 at 10:36
  • I'm running this on Xperia Neo mobile. – aplavin May 12 '12 at 11:13
  • Is the Xperia Neo running the original ROM, or some modded ROM? – CommonsWare May 12 '12 at 11:17
  • Modded, but no problems were noticed with other applications (and some of them use DownloadManager too) for a quite long period. – aplavin May 12 '12 at 11:20
  • Try your code on an unmodded environment, such as an emulator. Also try known working code, such as [this sample project](https://github.com/commonsguy/cw-omnibus/tree/master/Internet/Download), on your Neo (note: sample project requires ActionBarSherlock). – CommonsWare May 12 '12 at 11:41

1 Answers1

1

Try your code on the emulator (or some other unmodded environment). You might also consider try using known working code.

Alex Lockwood
  • 83,063
  • 39
  • 206
  • 250