رفتن به مطلب
محمدرضا شاهپیری

دریافتکتابخانه PersianFileProvider (بسیار کاربردی و مهم)

پست های پیشنهاد شده

کتابخانه PersianFileProvider (بسیار کاربردی و مهم)


*****نسخه 2 اضافه شد.****

لینک آموزش نسخه 2

با سلام خدمت همه دوستان.

همونجور که مطلع هستید نسخه های جدید اندروید محدودیتهای زیادی رو برای انتخاب و کلا کار با فایلها اعمال کرده. در نسخه های جدید دیگه انتخاب و مدیریت فایلها فقط از طریق fileprovider انجام میشه.

کتابخونه ای هست که همه ی دوستان درخواست داشتن و برای راحتی دوستان آماده شده. امیدوارم لذت ببرید.♥

نحوه استفاده . ابتدا به منیفست کد زیر رو اضافه کنید.

AddApplicationText(<provider
             android:name="androidx.core.content.FileProvider"
              android:authorities="$PACKAGE$.provider"
              android:exported="false"
              android:grantUriPermissions="true">
              <meta-data
                  android:name="android.support.FILE_PROVIDER_PATHS"
                 android:resource="@xml/provider_paths" />
         </provider>)
AddApplicationText(<activity android:name="com.fileprovider.util.PermissionActivity"/>)

حالا مثلا برای اشتراک گذاری فایل به صورت زیر استفاده کنید.

Public Sub ShareFile(FileName As String,DataType As String)
	Dim i As Intent
	i.Initialize(i.ACTION_SEND, "")
	i.SetType(DataType)
	Dim fil As PersianFileProvider
	Dim j As JavaObject = i
	Dim uri As Uri=fil.GetUriFromFile(File.DirRootExternal&"/Download/"&FileName)
	j.RunMethod("putExtra", Array("android.intent.extra.STREAM", uri))
	i.WrapAsIntentChooser("به اشتراک بگذارید !")
	StartActivity(i)
End Sub

 


 

  • پسندیدن 3
  • تشکر 3

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 21 دقیقه قبل، ForI گفته است :

 

سلام

ممنون که همیشه بموقع با رفع مشکلات ظاهر میشید

اگه لطف کنید همین رو به کتابخانه زیر اضافه کنید ممنونتون میشیم

 

اضافه شد عزیز. نسخه جدید رو دریافت کنید.

  • تشکر 1

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
mehdi.m    157

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

این اینتنت معمولی هستش که uri رو از نوع string میگیره

      

Dim i As Intent
Dim uri As String
uri= "file://" &path 
i.Initialize("android.intent.action.ATTACH_DATA",uri)            
i.SetType ("image/*")
StartActivity(i)

این کد اینتنت توی اندروید 9 کار نمیکنه و به uri گیر میده

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 10 ساعت قبل، mehdi.m گفته است :

 

به صورت زیر هست. کتابخونه جاواآبجکت رو هم تیک بزنید

Dim intent As Intent
Dim prf As PersianFileProvider
intent.Initialize("android.intent.action.ATTACH_DATA","")
Dim jo As JavaObject=intent
jo.RunMethod("setData", Array(prf.GetUriFromFile(File.DirRootExternal&"/img.jpg")))
intent.SetType("image/*")
StartActivity(intent)

 

  • پسندیدن 1

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
mehdi.m    157
در در 9 شهریور 1398 در 22:42، محمدرضا شاهپیری گفته است :

به صورت زیر هست. کتابخونه جاواآبجکت رو هم تیک بزنید


Dim intent As Intent
Dim prf As PersianFileProvider
intent.Initialize("android.intent.action.ATTACH_DATA","")
Dim jo As JavaObject=intent
jo.RunMethod("setData", Array(prf.GetUriFromFile(File.DirRootExternal&"/img.jpg")))
intent.SetType("image/*")
StartActivity(intent)

 

ممنون از شما اما خطا میده

image.png

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


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

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

ممنون از کتابخانه خیلی بی نظری که درست کردین♥

مشکلم که اشتراک گذاری فایل بود حل شد

فقط نفهمیدم اون خط uri چی بود گذاشتین 

من پاکش کردم اینطوری نوشتم حل شد

Public Sub ShareFile(FileName As String,DataType As String)
		
	Dim i As Intent
	i.Initialize(i.ACTION_SEND, "")
	i.SetType(DataType)
	Dim fil As PersianFileProvider
	Dim j As JavaObject = i
	j.RunMethod("putExtra", Array("android.intent.extra.STREAM", fil.GetUriFromFile(File.DirRootExternal&"/"&FileName)))
	i.WrapAsIntentChooser("به اشتراک گذاری فایل")
	StartActivity(i)
	
End Sub

فقط من دوتا مشکل دارم

یکی برای ساخت پوشه که من از کد fil.mkDir استفاده کردم که هیچ کاری نکرد،من فکر میکنم این کد مسیرو چک میکنه میگه وجود داره یا نه

دوم اینکه من میخوام یا این کتابخانه یه کپی از DirInternal (داخل برنامه ام )بگیرم بریزم داخل خود DirRootExternal (همون حافظه گوشی ) ولی هرکاری کردم نشد فقط میشه فایل هارو همون حافظه گوشی جا به جا یا کپی کنم یا شایدم من بلد نیستم

ممنون میشم در این دو مورد کمک کنید خیلی نیاز دارم

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در 20 ساعت قبل، sorena.king.24 گفته است :

یکی برای ساخت پوشه که من از کد fil.mkDir استفاده کردم که هیچ کاری نکرد،من فکر میکنم این کد مسیرو چک میکنه میگه وجود داره یا نه

دوم اینکه من میخوام یا این کتابخانه یه کپی از DirInternal (داخل برنامه ام )بگیرم بریزم داخل خود DirRootExternal (همون حافظه گوشی ) ولی هرکاری کردم نشد فقط میشه فایل هارو همون حافظه گوشی جا به جا یا کپی کنم یا شایدم من بلد نیستم

ممنون میشم در این دو مورد کمک کنید خیلی نیاز دارم

در مورد دستور mkDir : این دستور برای ساختن پوشه هست. دقت داشته باشید که برای حافظه داخلی حتما باید دسترسی رانتایم نوشتن بر روی حافظه رو بگیرید(android.permission.WRITE_EXTERNAL_STORAGE) و برای حافظه مموری کارد هم باید با دستور pr.GetSdCardPermition دسترسی نوشتن رو بگیرید. در غیر این صورت پوشه ساخته نمیشه.

اما سوال دوم: کپی کردن پوشه توی یه پوشه دیگه  و خیلی از امکانات دیگه رو انشالا تو آپدیت بعدی لحاظ میکنیم.

  • پسندیدن 2

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 2 آذر 1398 در 21:01، محمدرضا شاهپیری گفته است :

در مورد دستور mkDir : این دستور برای ساختن پوشه هست. دقت داشته باشید که برای حافظه داخلی حتما باید دسترسی رانتایم نوشتن بر روی حافظه رو بگیرید(android.permission.WRITE_EXTERNAL_STORAGE) و برای حافظه مموری کارد هم باید با دستور pr.GetSdCardPermition دسترسی نوشتن رو بگیرید. در غیر این صورت پوشه ساخته نمیشه.

اما سوال دوم: کپی کردن پوشه توی یه پوشه دیگه  و خیلی از امکانات دیگه رو انشالا تو آپدیت بعدی لحاظ میکنیم.

دستور mkDir راهشو یاد گرفتم چطوری میزنن:)

فقط شما چک کردن پوشه رو که وجود دارد یا نه فقط کد مخصوص به حافظه مموری دادین برا چک کردن حافظه داخلی چیزی لحاظ نبود

برای چک کردن حافظه داخلی با خود file برنامه کار کنم به نظرتون مشکلی پیش نمیاد روی api26 به بالا?

 

 

 

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 25 آذر 1398 در 23:14، محمدرضا شاهپیری گفته است :

چه کدی استفاده کردید عزیز؟

دقیقا همین کد استفاده کردم

به جای کپی فایل کلا برمیداره

dim File_pv as PersianFileProvider
File_pv.copyFile(File.DirInternal&"date.db",File.DirRootExternal&"Crystal/Backup/"Backup".cdb")

 

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 29 آذر 1398 در 18:29، sorena.king.24 گفته است :

دقیقا همین کد استفاده کردم

به جای کپی فایل کلا برمیداره


dim File_pv as PersianFileProvider
File_pv.copyFile(File.DirInternal&"date.db",File.DirRootExternal&"Crystal/Backup/"Backup".cdb")

 

نمیدونید دلیل چیه:scratch_one-s_head:

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


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

از این کد هم برای ذخیره فایل رو مموری کارت هم استفاده کردم جواب نداد :(

پوشه را میسازه ولی فایل رو داخل مموری کارت نمیریزه

							SD.copyFile(File.DirInternal&"date.db",SD.SdCardPatch&"/Crystal/Backup/date.db")

از روش خودشم رفتم بازم بهم خطا میده

'							File.Copy(File.DirInternal,"date.db",SD.SdCardPatch,"Crystal/Backup/date.cdb")

این خطارو میده

java.io.FileNotFoundException: /storage/E8C5-80D2/date.cdb: open failed: EACCES (Permission denied)

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

مشکل کپی حل بشه نصف مشکلات حل میشه

ممنون میشم اقا شاهپیری این یه دونه مشکل رو حل کنید

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


لینک به ارسال
به اشتراک گذاری در سایت های دیگر
در در 21 بهمن 1398 در 22:57، sorena.king.24 گفته است :

از این کد هم برای ذخیره فایل رو مموری کارت هم استفاده کردم جواب نداد :(

پوشه را میسازه ولی فایل رو داخل مموری کارت نمیریزه


							SD.copyFile(File.DirInternal&"date.db",SD.SdCardPatch&"/Crystal/Backup/date.db")

از روش خودشم رفتم بازم بهم خطا میده


'							File.Copy(File.DirInternal,"date.db",SD.SdCardPatch,"Crystal/Backup/date.cdb")

این خطارو میده


java.io.FileNotFoundException: /storage/E8C5-80D2/date.cdb: open failed: EACCES (Permission denied)

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

مشکل کپی حل بشه نصف مشکلات حل میشه

ممنون میشم اقا شاهپیری این یه دونه مشکل رو حل کنید

سلام. دوست عزیز تو خطا نوشته که دسترسی به کارت حافظه رو ندادید. دسترسی نوشتن رو حافظه خارجی رو گرفتید شما؟ باید دستور SD.GetSdCardPermition  رو صدا بزنید

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


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

سلام. دوست عزیز تو خطا نوشته که دسترسی به کارت حافظه رو ندادید. دسترسی نوشتن رو حافظه خارجی رو گرفتید شما؟ باید دستور SD.GetSdCardPermition  رو صدا بزنید

بله

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

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

خیلی پیچیدس برا یه کپی ساده کلی خط کد باید نوشت

بگیر نگیر داره

https://www.b4x.com/android/forum/threads/externalstorage-access-sd-cards-and-usb-sticks.90238/#post-700967

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


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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به عنوان یک لینک به جای

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.


×
×
  • جدید...