M.ehrAN
چهارشنبه 05 شهریور 1393, 20:59 عصر
سلام علیکم جمیعاً.
میخوام یه فایلی رو تو یه آدرس به خصوص ذخیره کنم ولی نمیدونم چه طور.
وقتی که از
request.setDestinationInExternalPublicDir(Environm ent.DIRECTORY_DOWNLOADS, "/")
استفاده میکنم فایلم تو پوشه downloads ذخیره میشه ولی میخوام یه جای دیگه دخیره بشه.
اما برای ذخیره در sdcard (چه primary و چه secondary) استفاده از دستور
request.setDestinationUri(uri)
باعث میشه برنامه stopped بشه. کدهایی که برای uri استفاده کردم به صورت زیره:
حالت 1:
Uri file_dest = Uri.fromFile(new File("sdcard/f1.zip"));
request.setDestinationUri(file_dest);
ارور:
08-27 17:58:58.351: D/AndroidRuntime(7008): Shutting down VM
08-27 17:58:58.361: W/dalvikvm(7008): threadid=1: thread exiting with uncaught exception (group=0x41748c80)
08-27 17:58:58.361: E/AndroidRuntime(7008): FATAL EXCEPTION: main
08-27 17:58:58.361: E/AndroidRuntime(7008): Process: m.a.downloadprovider, PID: 7008
08-27 17:58:58.361: E/AndroidRuntime(7008): java.lang.SecurityException: Destination must be on external storage: file:///sdcard/f1.zip
08-27 17:58:58.361: E/AndroidRuntime(7008): at m.a.providers.downloads.DownloadProvider.checkFile UriDestination(DownloadProvider.java:579)
حالت 2:
String file_dest = Environment.getExternalStorageDirectory().getPath( )+"/f1.zip";
request.setDestinationUri(Uri.parse(file_dest));
ارور:
08-27 18:26:04.097: D/AndroidRuntime(7820): Shutting down VM
08-27 18:26:04.097: W/dalvikvm(7820): threadid=1: thread exiting with uncaught exception (group=0x41748c80)
08-27 18:26:04.107: E/AndroidRuntime(7820): FATAL EXCEPTION: main
08-27 18:26:04.107: E/AndroidRuntime(7820): Process: m.a.downloadprovider, PID: 7820
08-27 18:26:04.107: E/AndroidRuntime(7820): java.lang.IllegalArgumentException: Not a file URI: /storage/sdcard0/f1.zip
08-27 18:26:04.107: E/AndroidRuntime(7820): at m.a.providers.downloads.DownloadProvider.checkFile UriDestination(DownloadProvider.java:570)
ضمناً اجازه زیر رو هم در manifest اضافه کرده ام:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
لطف کنید به زبان ساده (من آماتورم) بفرمایید که مشکل از کجا نشئت میگیره.
میخوام یه فایلی رو تو یه آدرس به خصوص ذخیره کنم ولی نمیدونم چه طور.
وقتی که از
request.setDestinationInExternalPublicDir(Environm ent.DIRECTORY_DOWNLOADS, "/")
استفاده میکنم فایلم تو پوشه downloads ذخیره میشه ولی میخوام یه جای دیگه دخیره بشه.
اما برای ذخیره در sdcard (چه primary و چه secondary) استفاده از دستور
request.setDestinationUri(uri)
باعث میشه برنامه stopped بشه. کدهایی که برای uri استفاده کردم به صورت زیره:
حالت 1:
Uri file_dest = Uri.fromFile(new File("sdcard/f1.zip"));
request.setDestinationUri(file_dest);
ارور:
08-27 17:58:58.351: D/AndroidRuntime(7008): Shutting down VM
08-27 17:58:58.361: W/dalvikvm(7008): threadid=1: thread exiting with uncaught exception (group=0x41748c80)
08-27 17:58:58.361: E/AndroidRuntime(7008): FATAL EXCEPTION: main
08-27 17:58:58.361: E/AndroidRuntime(7008): Process: m.a.downloadprovider, PID: 7008
08-27 17:58:58.361: E/AndroidRuntime(7008): java.lang.SecurityException: Destination must be on external storage: file:///sdcard/f1.zip
08-27 17:58:58.361: E/AndroidRuntime(7008): at m.a.providers.downloads.DownloadProvider.checkFile UriDestination(DownloadProvider.java:579)
حالت 2:
String file_dest = Environment.getExternalStorageDirectory().getPath( )+"/f1.zip";
request.setDestinationUri(Uri.parse(file_dest));
ارور:
08-27 18:26:04.097: D/AndroidRuntime(7820): Shutting down VM
08-27 18:26:04.097: W/dalvikvm(7820): threadid=1: thread exiting with uncaught exception (group=0x41748c80)
08-27 18:26:04.107: E/AndroidRuntime(7820): FATAL EXCEPTION: main
08-27 18:26:04.107: E/AndroidRuntime(7820): Process: m.a.downloadprovider, PID: 7820
08-27 18:26:04.107: E/AndroidRuntime(7820): java.lang.IllegalArgumentException: Not a file URI: /storage/sdcard0/f1.zip
08-27 18:26:04.107: E/AndroidRuntime(7820): at m.a.providers.downloads.DownloadProvider.checkFile UriDestination(DownloadProvider.java:570)
ضمناً اجازه زیر رو هم در manifest اضافه کرده ام:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
لطف کنید به زبان ساده (من آماتورم) بفرمایید که مشکل از کجا نشئت میگیره.