Android Download Manager setDestinationInExternalFilesDir

I use Download Manager and when I use

setDestinationInExternalFilesDir(this, Environment.DIRECTORY_DOWNLOADS, "example.ext"); 

Files are uploaded to Android / data / com.example.app / files / Download files.

When i try

 setDestinationInExternalPublicDir("/folder", "example.ext"); 

I get: IllegalStateException: Cannot create directory mnt/sdcard/folder . I also set the permission to WRITE_EXTERNAL_STORAGE.

What am I doing wrong?

+12
source share
5 answers

Why don't you use the absolute path for ExternalFileDir

 File sdCard = Environment.getExternalStorageDirectory(); String folder = sdCard.getAbsolutePath() + "/YourFolder" ; File dir = new File(folder ); if (!dir.exists()) { if (dir.mkdirs()) { Log.i(Tag,"Directory Created"); } } 

I think it might even work for you.

+1
source

use request.setDestinationInExternalPublicDir("/folder", "FileName.extention");

it worked for me ..

+1
source

Add permission to manifest file

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
+1
source

Check resolution as

// region [PERMISSION]

 public static final int MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE = 123; @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public static boolean CheckPermission(final Context context){ int currentAPIVersion = Build.VERSION.SDK_INT; if( currentAPIVersion >= Build.VERSION_CODES.M){ if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.READ_EXTERNAL_STORAGE)) { AlertDialog.Builder alertBuilder = new AlertDialog.Builder(context); alertBuilder.setCancelable(true); alertBuilder.setTitle("Permission necessary"); alertBuilder.setMessage("External storage permission is necessary"); alertBuilder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); } }); AlertDialog alert = alertBuilder.create(); alert.show(); } else { ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE}, MY_PERMISSIONS_REQUEST_READ_EXTERNAL_STORAGE); } return false; } else { return true; } } else { return true; } } //endregion 
0
source

I fixed my problem with this command:

 request.setDestinationUri(Uri.fromFile(new File(destinationDirectory,fileName + fileExtension))); 

Where destinationDirectory

 String destinationDirectory = Environment.getExternalStorageDirectory() + "/MyFolder/" 
0
source

All Articles