رفتن به مطلب
  • 0

خواندن و نوشتن در حافظه externel در اندرویدهای 11 و بالاتر


fun_code

سوال

سلام دوستان

گویا سایت به هم ریخته که آخرین ارسالی ها مربوط به شهریور هست !

مشکلی که باهاش مواجه شدم اینه که اپلیکیشن آفلاین بنده یک دیتابیس داره و میخوام امکان بک آپ گیری و بازگرداندن براش بسازم که فایل در یک پوشه که در مسیر اصلی extrenalstorage ایجاد میشه ذخیره بشه.

اما در اندروید بالاتر گویا محدودیت دسترسی به مسیر روت و پوشه دانلود و اندروید دیتا و اندروید obb گذاشته...  حتی نمیذاره در مسیر داکیومنت ذخیره کنیم !

راه حل چیه ؟!

لینک ارسال
به اشتراک گذاری در سایت های دیگر

4 پاسخ به این سوال تاکنون داده شده است

ارسال‌های توصیه شده

سلام ودرود.

متد زیر رو با javaObject تست کنید. دقت کنید dbName اسم دیتابیس لوکال هست. اگه تو مسیر روت نبود باید مسیر پوشه هم قبلش بیاد...

#If JAVA
import anywheresoftware.b4a.BA;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public void saveDbFile(String dbName){
       File src= new File(BA.applicationContext.getExternalFilesDir(null), dbName);
       File dst = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), dbName);
       try{
           FileInputStream inputStream = new FileInputStream(src);
           FileOutputStream outputStream = new FileOutputStream(dst);
           byte[] buffer = new byte[1024];
           int data;
           while((data = inputStream.read(buffer)) > 0) {
               outputStream.write(buffer, 0, data);
           }
           inputStream.close();
           outputStream.close();
       }catch (Exception e){
           e.printStackTrace();
       }
    }

#End If

 

لینک ارسال
به اشتراک گذاری در سایت های دیگر

۱ ساعت قبل، محمدرضا شاهپیری گفته است:

سلام ودرود.

متد زیر رو با javaObject تست کنید. دقت کنید dbName اسم دیتابیس لوکال هست. اگه تو مسیر روت نبود باید مسیر پوشه هم قبلش بیاد...

#If JAVA
import anywheresoftware.b4a.BA;
import android.os.Environment;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
public void saveDbFile(String dbName){
       File src= new File(BA.applicationContext.getExternalFilesDir(null), dbName);
       File dst = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS), dbName);
       try{
           FileInputStream inputStream = new FileInputStream(src);
           FileOutputStream outputStream = new FileOutputStream(dst);
           byte[] buffer = new byte[1024];
           int data;
           while((data = inputStream.read(buffer)) > 0) {
               outputStream.write(buffer, 0, data);
           }
           inputStream.close();
           outputStream.close();
       }catch (Exception e){
           e.printStackTrace();
       }
    }

#End If

 

درود

خیلی ممنون استاد عزیز

الان تستش میکنم.

دیشب متنی رو ارسال کردم که با همون روش عادی و دستور ساخت پوشه و سپس کپی فایل در اون پوشه امکان ثبت در مسیر داکیومنت وجود داشته و در شبیه ساز اشتباه مسیر رو دنبال کردم.

اما گویا واقعا دیگه امکان دسترسی به مسیرهای دانلود و روت اندروید دیتا و اندروید obb وجود نداره.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

3 ساعت قبل، fun_code گفته است:

درود

خیلی ممنون استاد عزیز

الان تستش میکنم.

دیشب متنی رو ارسال کردم که با همون روش عادی و دستور ساخت پوشه و سپس کپی فایل در اون پوشه امکان ثبت در مسیر داکیومنت وجود داشته و در شبیه ساز اشتباه مسیر رو دنبال کردم.

اما گویا واقعا دیگه امکان دسترسی به مسیرهای دانلود و روت اندروید دیتا و اندروید obb وجود نداره.

کلا اندروید داره همه چیزو تا جایی که بتونه به عهده خود کاربر بزاره و دست برنامه نویسا رو روز به روز کوتاه تر میکنه. توی اندروید 12 دیگه دسترسی به حافظه غیر عمومی بدون گرفتن مجوز اصلا امکانپذیر نیست

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در ۱۴۰۲/۳/۳۱ در 15:39، محمدرضا شاهپیری گفته است:

کلا اندروید داره همه چیزو تا جایی که بتونه به عهده خود کاربر بزاره و دست برنامه نویسا رو روز به روز کوتاه تر میکنه. توی اندروید 12 دیگه دسترسی به حافظه غیر عمومی بدون گرفتن مجوز اصلا امکانپذیر نیست

سلام و عرض ادب

دقیقا الان تست کردم همون کدی که روی اندروید 11 و پایین تر کار میکنه روی اندروید 12 خطا میده.

خب چطور باید فایل بک آپ رو به کاربر ارائه بدم ؟ کجا ذخیره کنم که دسترسی داشته باشه ! یه کتابخانه دیدم گاهی کار میکرد گاهی خطا میداد(البته در شبیه ساز) اما ذخیره میکرد. UI بدی داره و کاربر عادی به سختی میتونه باهاش کار کنه.

لینک ارسال
به اشتراک گذاری در سایت های دیگر

بایگانی شده

این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.

  • کاربران آنلاین در این صفحه   0 کاربر

    • هیچ کاربر عضوی،در حال مشاهده این صفحه نیست.
×
×
  • اضافه کردن...