نوشتن در حافظه داخلی گوشی
با سلام خدمت همه دوستان.
من قبلا یه برنامه برای گوشیم نوشته بودم که یه سری فایل از اینترنت دانلود میکرد و اون ها رو توی حافظه خارجی (SD card) ذخیره میکرد ، برای ذخیره کردن هم میومدم از کلاسهای خود آندورید استفاده میکردم و آدرس مموری رو پیدا میکردم بعد مینوشتم.
ولی الان که میخوام برنامه رو روی یه گوشی که حافظه خارجی (SD card) نداره اجرا کنم با مشکل برمیخورم و نمیتونم فایل رو ذخیره کنم.در واقع گوشی حافظه داخلی فقط داره .
حالا سوالم اینه که چطوری باید روی گوشی هایی که مموری خارجی ندارند و مموری داخلی ندارند فایل رو ذخیره کرد؟
باتشکر از همه
نقل قول: نوشتن در حافظه داخلی گوشی
سلام
خوب شما در اصل دارید آدرس حافضه خارجی را به تابع میدید و خوب، همین باعث بروز مشکل میشه.
اول باید چک کنید که در صورتی که حافظه خارجی وجود نداشت، با حافظه داخلی کار کنید.
http://stackoverflow.com/questions/9...nternal-memory
http://stackoverflow.com/a/8124723/478162
همچنین اجازه دسترسی را هم در Manifest تعیین کرده باشید:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_ST ORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STO RAGE"/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_ST ORAGE" />
<uses-permission android:name="android.permission.READ_INTERNAL_STO RAGE" />
موفق باشید.
نقل قول: نوشتن در حافظه داخلی گوشی
من کارهایی که گفته بودید رو انجام دادم ولی نشد همش خطای java.io.IOException: Permission denied رو میده در حالی که این منیفستمه
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STO RAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_ST ORAGE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE "/>
<uses-permission android:name="android.permission.WRITE_INTERNAL_ST ORAGE"/>
<uses-permission android:name="android.permission.READ_INTERNAL_STO RAGE"/>
و اینم کد اون قسمت
File downdir = context.getDir("Wifi-ShareClient", 0);
if(!downdir.exists())
downdir.mkdirs();
this.saveDirectory = downdir.getAbsolutePath()+"/";
file = new File(saveDirectory + smbFile.getName()); //save directory
try {
if(!file.exists())
file.createNewFile();
که توی همین قسمت این خطا رو میده
نقل قول: نوشتن در حافظه داخلی گوشی
یه سوال دیگه هم داشتم من الان موفق شدم فایل رو توی این ناحیه ذخیره کنم ولی چطوری باید بهش دسترسی داسته باشم منظورم استفاده از file manager هست چون الان این فایل در پوشه data/data/app.package/folder ایجاد شده ولی وقتی با file manager گوشی میرم توی این پوشه چیزی نیست ولی از اینکه فایل هست مطمئنم(روی emulator تست کردم)
نقل قول: نوشتن در حافظه داخلی گوشی
یه سوال دیگه هم داشتم واونم اینکه زمانی که ما SDcard داریم آدرسش هست /mnt/sdcard/ حالا توی گوشی هایی که اصلا حافظه خارجی ندارند و تنها حافظه داخلی دارند که یه مقدار خاصش در دسترس کاربرها هست چطور ؟ آدرس اون قسمت که در دسترس کربر هست چیه؟
برای مثال توی گوشی Xperia U که حافظه داخلی 8192 مگابایت و حافظهی در دسترس کاربر 4096 مگابایت آدرس این قسمت که در دسترس هست چیه ؟
نقل قول: نوشتن در حافظه داخلی گوشی
نقل قول:
نوشته شده توسط
rubiks.kde
یه سوال دیگه هم داشتم من الان موفق شدم فایل رو توی این ناحیه ذخیره کنم ولی چطوری باید بهش دسترسی داسته باشم منظورم استفاده از file manager هست چون الان این فایل در پوشه data/data/app.package/folder ایجاد شده ولی وقتی با file manager گوشی میرم توی این پوشه چیزی نیست ولی از اینکه فایل هست مطمئنم(روی emulator تست کردم)
اگر از آدرس مطمئنید؛ پس شاید فایل منیجر لیست فایل ها را ریفرش نکرده!
دقیق نمیدونم مشکل از کجاست. یه سری هم به این لینک بزنید شاید مشکل حل شد! http://stackoverflow.com/questions/5...rivate-storage
نقل قول:
نوشته شده توسط
rubiks.kde
یه سوال دیگه هم داشتم واونم اینکه زمانی که ما SDcard داریم آدرسش هست /mnt/sdcard/ حالا توی گوشی هایی که اصلا حافظه خارجی ندارند و تنها حافظه داخلی دارند که یه مقدار خاصش در دسترس کاربرها هست چطور ؟ آدرس اون قسمت که در دسترس کربر هست چیه؟
برای مثال توی گوشی Xperia U که حافظه داخلی 8192 مگابایت و حافظهی در دسترس کاربر 4096 مگابایت آدرس این قسمت که در دسترس هست چیه ؟
گوشی خود من هم به همین شکل است. یعنی مموری جداگونه نمیخوره و 16 تا داخلی داره. اما این مقدار مموری همان مموری خارجی محسوب میشه و باید مثل یک حافظه خارجی با آن رفتار شود.
موفق باشید.
نقل قول: نوشتن در حافظه داخلی گوشی
نقل قول:
یه سوال دیگه هم داشتم من الان موفق شدم فایل رو توی این ناحیه ذخیره کنم ولی چطوری باید بهش دسترسی داسته باشم منظورم استفاده از file manager هست چون الان این فایل در پوشه data/data/app.package/folder ایجاد شده ولی وقتی با file manager گوشی میرم توی این پوشه چیزی نیست ولی از اینکه فایل هست مطمئنم(روی emulator تست کردم)
اگر گوشی شما روت نشده باشه امکان دیدن محتوای فایل data رو ندارید و هر برنامه فقط به پوشه خودش دسترسی داره.
نقل قول:
برای مثال توی گوشی Xperia U که حافظه داخلی 8192 مگابایت و حافظهی در دسترس کاربر 4096 مگابایت آدرس این قسمت که در دسترس هست چیه ؟
اگر اشتباه نکنم بقیه اون حجم به صورت یه پارتیشن ext2 هستش که سیستم برای ذخیره رام و این حرف ها نگه داشته.
این پست رو که نوشتم برای خودم هم یه سوال ایجاد شد که چطور بین حافظه های خارجی مختلف فرق بزاریم؟! مثلا یه درایو دیگه با زدن فلش به گوشی ایجاد شده. حالا چطور باید بگیم منظور از external memory فلش دیسک هست یا sdcard ؟