رفتن به مطلب

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

باعرض سلام و احترام،

همانطور که احتمالا میدونید در اندروید های 11 و بالاتر یک سری محدودیت ها در کار با حافظه و کلاس File خود B4a ایجاد شده که به دلیل دسترسی هست. درواقع در اندرویدهای 11 و بالاتر با دسترسی معمولی (RuntimePermission) نمی تونید فایلی روی حافظه کپی کنید یا بنویسید. برای این کار نیاز به یک دسترسی ویژه هست که کتابخونه این دسترسی رو براتون آماده کرده ام.

کار با کتابخونه بسیار ساده هست با این حال یک سورس آموزشی هم براش نوشتم و خط به خط سورس با کامنت فارسی توضیح داده شده است.

نکته: با اجازه دسترسی که این کتابخونه میگیره میتونید به همه فایل های حافظه کاربر دسترسی داشته باشید و در همه جای حافظه فایل کپی کنید یا بنویسید به جز Android/data

کلا امکان کار با پوشه Android/data در اندرویدهای 11 و بالاتر بدون اطلاع کاربر غیرممکن هست مگه اینکه در اون پوشه ای به نام پکیج نیم برنامه خودتون باشه. البته با اطلاع کاربر و با گرفتن یک دسترسی مخصوص دیگه میتونید فایل های Android/data رو هم مدیریت کنید که به دو شکل امکان پذیر هست:

1- از طریق TreeUri که برای برنامه های فایل منیجر بیشتر به درد میخوره.

2- کپی کردن تکی فایل به صورت دستی و توسط کاربر

شماره 1 رو میتونید با کتابخونه زیر انجام بدین (علاوه بر امکان انجام مورد شماره یک با کتابخونه زیر، امکان حذف فایل ها از Android/data و... نیز هست) :

برای شماره 2 هم در آینده اگه وقت کنم یک کتابخونه می سازم و به طور رایگان قرار میدم.

هزینه استفاده از کتابخونه: 5 عدد صلوات بر محمد و آل محمد

دریافت کتابخونه👇

 

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

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

تشکر🌹

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

در ۱۴۰۰/۱۱/۱۵ در ۰۰:۰۹، محمدرضا شاهپیری گفته است:

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

تشکر🌹

باتشکر از شما، پست اول ویرایش شد:53:

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

سلام.

تشکر از کتابخونه کاربردیتون

اما اندروید گوشی من 6 هست و وقتی روی دکمه کپی کلیک میکنم این ارور رو میده:

screenshot_20220204-010114_skzo.png

و این که ممنون میشم توضیح بدید که این کتابخونه شما همون کاری رو میکنه که کتد GetSafeDirDefaultExternal در کتابخونه ران تایم انجام میده؟!

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

 

  

در ۱۴۰۰/۱۱/۱۵ در 01:05، batman123 گفته است:

سلام.

تشکر از کتابخونه کاربردیتون

اما اندروید گوشی من 6 هست و وقتی روی دکمه کپی کلیک میکنم این ارور رو میده:

screenshot_20220204-010114_skzo.png

و این که ممنون میشم توضیح بدید که این کتابخونه شما همون کاری رو میکنه که کتد GetSafeDirDefaultExternal در کتابخونه ران تایم انجام میده؟!

 

سلام دوست عزیز،

اون ارور فکر کنم بخاطر کد زیر باشه توی ساب Button1_Click :

Not(RP.Check(RP.PERMISSION_WRITE_EXTERNAL_STORAGE))
  • میتونید بجای اینطوری چک کردن یک متغیر به نام MyResult در Globals از نوع Boolean تعریف کنید. حالا توی ساب Activity_PermissionResult مقدار اون متغیر MyResult رو برابر مقدار Result قرار بدین و در ساب Button1_Click هم بگین اگه مقدار اون متغیر MyResult برابر False بود این دستورات رو اجرا کن:
ToastMessageShow("حافظه قابل دسترس نیست، ابتدا باید اجازه دسترسی به حافظه داده شود",False)
GetPermission 'فراخوانی ساب گیرنده دسترسی به حافظه
Return 'اجرای دستورات پایین تر این ساب را متوقف کن
  • حالا این راه استانداردش بود شما میتونید کلا Button1_Click رو حذف کنید و ساب زیر رو بین دو ساب دیگه اضافه کنید:
Private Sub Button1_Click

	Try
	File.MakeDir(File.DirRootExternal,"MyApplicationFolder") 'ساخت یک پوشه در حافظه داخلی کاربر
	File.WriteString(File.DirRootExternal&"/MyApplicationFolder","HelloWorld.txt","Hello!") 'ساخت یک فایل متنی در داخل آن پوشه
	ToastMessageShow("انجام شد",False)
	Catch
	ToastMessageShow("حافظه قابل دسترس نیست، ابتدا باید اجازه دسترسی به حافظه داده شود",False)
	GetPermission 'فراخوانی ساب گیرنده دسترسی به حافظه
	End Try	
    
End Sub

نکته: راه حل اول به دلیل استاندارد بودن توصیه میشود.

خیر، کتابخونه من کار GetSafeDirDefaultExternal رو انجام نمیده. باید از کتابخونه من فقط در بعضی از اندرویدهای 10 و همه اندروید های 11 و بالاتر استفاده کنید. این کتابخونه دسترسی ویژه به همه فایل های حافظه رو از کاربر میگیره که توی سورس کامل پیاده شده.

موفق باشید🌹

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

بایگانی شده

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

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

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