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

دسترسی نوشتن روی کارت حافظه (sd card جانبی ) در اندروید +6


sbr

سوال

سلام دوستان خسته نباشید  

برای نوشتن روی sd card توی اندروید +6 چکار باید کرد ؟؟ 

با وجود ران تایم پرمیژن دسترسی های زیر  

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

فقط اجازه نوشتن و روی حافظه داخلی رو میده و  اجازه نوشتن روی کارت حافظه داده نمیشه 

با این وجود چطور خیلی از برنامه ها توی اندروید های بالا هم دسترسی به نوشتن روی کارت حافظه رو دارن ؟؟؟ 

بازم تاکید میکنم نوشتن روی کارت حافظه ی جانبی ( Sd Card) منظورم هست 

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

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

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

سلامی مجدد 

خب راه حلش رو پیدا کردم 

از اندرود 6 به بالا ران تایم پرمیژن های زیر 



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

تنها برای حافظه داخلی گوشی هستند ولی برای دسترسی نوشتن و یا حذف فایل ها از روی کارت حافظه علاوه بر دسترسی های بالا باید از Storage Access Framwork استفاده کرد 

ZNDgX.png

 

با این کد متونید framwork رو اجرا کنید  

startActivityForResult(new Intent(Intent.ACTION_OPEN_DOCUMENT_TREE), 42);

و وقتی مسیر اصلی کارت حافظه رو ذخیره کردید ، به صورت خودکار متد نتیجه اجرا میشه ↓↓↓↓↓↓↓↓

@Override
    public void onActivityResult(int requestCode, int resultCode, Intent resultData) {


        if (resultCode != RESULT_OK)
            return;
        else {
            Uri treeUri = resultData.getData();
            DocumentFile pickedDir = DocumentFile.fromTreeUri(this, treeUri);
            grantUriPermission(getPackageName(), treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
            getContentResolver().takePersistableUriPermission(treeUri, Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION);

// ذخیر کردن مقدار یوری در شیرد پرفرنس
            preferences = getSharedPreferences("MyShared" , MODE_PRIVATE) ;
            SharedPreferences.Editor editor = preferences.edit() ;
            editor.putString("Dir" , treeUri.toString());
            editor.commit() ;

        }
    }

همونطور که توی کد مشخص هست ابتدا چک میکنه که مسیری رو انتخاب کردید یا نه 

بعد از طریق Uri مقدار اینتنت رو دریافت میکنه و توی Sharedprefrences ذخیره میکنیم تا هر موقع لازم داشتیم دوباره بگیریمش

اما نکته خیل مهم اینه که به توصه گوگل باید از DocumentFile به جای File استفاده کنید البته داکیومنت فایل هم کار باهاش سخت نیست و اکثر متد های File رو داره 

هر جا هم خواستیم استفاده کنیم مقدار ذخیره شده توی SharedPrefrences رو که به صورت رشته ذخیره کرده بودیم مگیریم و دوباره به Uri تبدیل میکنیم و در نهایت به  DocumentFile میدیم 

      Uri uri = Uri.parse(preferences.getString("Dir" ,""));

        DocumentFile file = DocumentFile.fromTreeUri(MainActivity.this , uri ) ;
		file.ListFiles[]

خب مسیر انتخاب شده و ذخیره شده توسط Uri رو به DocumentFile دادیم و الان مسیر اصلی کتابخونه رو داریم و با داکیومنت فایل  مث همون File عمل مکنیم

 

و الان دسترسی کامل به کارت حافظه  رو داریم 

امیدوارم به کارتون بیاد 

البته من خودم خواستم از متدDelete استفاده کنیم اما حواسم نبود و یه خط رو جا انداختم و نتیجه این شد که اشتباها  مسیر اصیلی کارت حافظم رو دادم به متد Delete و الان کارت حافظم خیلی شیک و مجلسی فرمت شد ☺

دقت کنید به مسیر هاتون 

 

 

با اجازه دوستان و اساتید ، به عنوان بهترین پاسخ انتخاب میکنم 

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

سلام

به صورت رانتایم دسترسی رو از کاربر میگیرید ؟

دسترسی نوشتن روی sd card  رو به صورت رانتایم بگیرید.

از لینک های زیر هم میتونید استفاده کنید »

Sample 1

Sample 2

Sample 3

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

در 4 ساعت قبل، مجید آرتا گفته است :

سلام

به صورت رانتایم دسترسی رو از کاربر میگیرید ؟

دسترسی نوشتن روی sd card  رو به صورت رانتایم بگیرید.

از لینک های زیر هم میتونید استفاده کنید »

Sample 1

Sample 2

Sample 3

بله دسترسی ران تایمرو میگیرم از کاربر 

اما همچنان اجازه نوشتن و  یا حذف فایل از روی sd card  رو نمیده 

با وجود  گرفتن دسترسی های گفته شده همچنان امکان نوشتن و یا حذف فایل از  روی کارت حافظه جانبی رو نمیده 

فقط دسترسی ها رو برای حافظه داخلی گوشی میده 

دنبال راهی هستم واسه نوشتن و یا ایجاد و یا حذف فایل از روی کارت حافظه هستم 

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

بایگانی شده

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

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

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