انجمن سایت کلیدستان



ذخیره فایل از پوشه raw بر روی sdcardزمان کنونی: ۱۳۹۵/۰۹/۲۱، ۰۶:۱۵ ب.ظ
کاربران در حال بازدید این موضوع: 1 مهمان
نویسنده: moralschool
آخرین ارسال: moralschool
پاسخ 5
بازدید 1602

رتبه موضوع:
  • 1 رای - 4 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ذخیره فایل از پوشه raw بر روی sdcard

ذخیره فایل از پوشه raw بر روی sdcard

#1
اگه بخوام یه فیلم رو که در پوشه raw قرار داره به اشتراک بزارم اول باید اونو روی گوشی کاربر ذخیره کنم تا بتونم اونو ارسال کنم .
سوالم اینه که چطور میتونم اونو ذخیره کنم ؟

آیا این درسته :

کد:
File root = android.os.Environment.getExternalStorageDirectory();
File dir = new File (root.getAbsolutePath() + "android.resource://ir.moralschool.madar/"+R.raw.film1);


کد:
String fileName = "film1.mp4";
File file = new File(dir, fileName);

Uri outputFileUri = Uri.fromFile(file);


-----------------
Intent ای که بکار میبرم برای اشتراک هم اینه :

کد:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("video/mp4");
intent.putExtra(Intent.EXTRA_STREAM, outputFileUri);
startActivity(Intent.createChooser(intent, "انتخاب روش ارسال"));
پاسخ

ذخیره فایل از پوشه raw بر روی sdcard

#2
سلام.
کدهاتون برای کپی کردن فایل از پوشه raw به درون حافظه خارجی (External Storage)، صحیح نیست. در این رابطه، کلید زیر را برایتان نوشتم :

http://www.kelidestan.com/keys/keys.php?key=848

در مورد کدهای به اشتراک گذاری با Intent  ، به نظرم بدون مشکل است و صحیح می باشد. منظورم کدهای زیر است که نوشته اید :

کد:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setType("video/mp4");
intent.putExtra(Intent.EXTRA_STREAM, outputFileUri);
startActivity(Intent.createChooser(intent, "انتخاب روش ارسال"));

و فقط برای کدهای فوق، outputFileUri مناسب را بر حسب مسیر فایل در حافظه خارجی، بسازید (Uri از مسیر فایل در حافظه خارجی).

در ضمن، بد نیست شما با مفهوم Content Providers نیز کمی آشنا شوید زیرا Content Providers نیز برای به اشتراک گذاری به کار می رود، ولی از Intent پیچیده تر است (منظورم اینه که می تونید به مرور در مورد آن نیز بخوانید تا در برنامه های اندرویدی که در آینده می سازید، در صورت دلخواه، از آن برای به اشتراک گذاری استفاده کنید).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط moralschool

ذخیره فایل از پوشه raw بر روی sdcard

#3
کدی که گفتید رو به شکل زیر استفاده کردم ولی متاسفانه موقعی که میخوام فایل رو به اشتراک بزارم میگه فایل نامعلوم ارسال نشد !
لطفا ببینید کجای کدم اشکال داره :

کد پی‌اچ‌پی:
File root android.os.Environment.getExternalStorageDirectory();
                
String folderName "/my_film";
                
File dir = new File (root.getAbsolutePath() + folderName);
                if(!
dir.exists()) {                                
                    
dir.mkdirs(); // build directory
                
}
                               
                
InputStream in getResources().openRawResource(R.raw.film1);
                
String filename "film1.mp4";
                
File f = new File(filename);
                if(!
f.exists()){
                    try {
                        
OutputStream out = new FileOutputStream(new File(root folderName filename));
                        
byte[] buffer = new byte[1024];
                        
int len;
                        while((
len in.read(buffer0buffer.length)) != -1){
                            
out.write(buffer0len);
                        }
                        
in.close();
                        
out.close();
                    } catch (
FileNotFoundException e) {
                        
//
                    
} catch (IOException e) {
                        
//
                    
}
                }
                        

                        
Uri outputFileUri Uri.fromFile(f);
                        
Intent intent = new Intent(Intent.ACTION_SEND);
                        
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_WHEN_TASK_RESET);
                        
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                        
intent.setType("video/mp4");
                        
intent.putExtra(Intent.EXTRA_STREAMoutputFileUri);
                        
startActivity(Intent.createChooser(intent"انتخاب روش ارسال")); 
 
پاسخ

ذخیره فایل از پوشه raw بر روی sdcard

#4
مسیر فایل رو اشتباه تعیین کردید. به خط زیر توجه کنید :

کد:
Uri outputFileUri = Uri.fromFile(f);

f تنها شامل نام فایل می باشد. شما باید مسیر کامل را تعیین کنید. خوب من کدها رو تغییر دادم تا دیگه این مشکل پیش نیاد و f شامل مسیر کامل فایل باشد (در واقع در کد قبلی ، روش exists بیهوده بود و نمی توانست وجود فایل را چک کنید، فایل ساخته می شد اما وجود آن را اشتباه چک می کرد). دوباره به آن مبحث رفته و این بار، کدهای بخش اولتان را بر اساس آن بنویسید (کدهای آن مبحث تصحیح شدند).

bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ
 سپاس شده توسط moralschool

ذخیره فایل از پوشه raw بر روی sdcard

#5
ممنون
پاسخ
 سپاس شده توسط admin


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان

آخرین کلیدهای غیررایگان

شما هم می توانید کلیدهای غیررایگان منتشر کنید (بیشتر بدانید)