رفتن به مطلب

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

کتابخانه 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

 


 

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

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

 

سلام

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

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

 

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

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

  • 3 ماه بعد...

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

این اینتنت معمولی هستش که 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)

 

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

  • محمدرضا شاهپیری عنوان را به دریافت کتابخانه PersianFileProvider (بسیار کاربردی و مهم) تغییر داد
در در 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

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

  • 2 ماه بعد...

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

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

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

فقط نفهمیدم اون خط 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 دسترسی نوشتن رو بگیرید. در غیر این صورت پوشه ساخته نمیشه.

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

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

  • محمدرضا شاهپیری عنوان را به دریافت کتابخانه PersianFileProvider (بسیار کاربردی و مهم) تغییر داد
در در 2 آذر 1398 در 21:01، محمدرضا شاهپیری گفته است :

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

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

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

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

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

 

 

 

 

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

  • 3 هفته بعد...
در 47 دقیقه قبل، sorena.king.24 گفته است :

کسی نیست کمک کنه:scratch_one-s_head::(

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

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

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

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

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

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

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

 

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

  • 2 هفته بعد...
در در 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:

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

  • 1 ماه بعد...

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

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

							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

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

  • 1 سال بعد...

برای ارسال فایل اکسل من این خط رو نوشتم

 

ShareFile("export.csv",datatype)

اما اون دیتا تایپ رو نمیونم چی بنویسم ؟؟؟؟؟؟؟؟؟؟؟

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

و اینکه موقع خروجی همه این ارورها رو هم تحویل میگیرم 

Organizing libraries.    (0.00s)
Generating R file.    Error
e:\sdk\tools\..\extras\b4a_remote\com\android\support\coordinatorlayout\28.0.0\unpacked-coordinatorlayout-28.0.0\res\values\values.xml:28: error: Attribute "layout_anchorGravity" already defined with incompatible format.
e:\sdk\tools\..\extras\b4a_remote\androidx\coordinatorlayout\coordinatorlayout\1.1.0\unpacked-coordinatorlayout-1.1.0\res\values\values.xml:33: Original attribute defined here.
e:\sdk\tools\..\extras\b4a_remote\com\android\support\coordinatorlayout\28.0.0\unpacked-coordinatorlayout-28.0.0\res\values\values.xml:67: error: Attribute "layout_insetEdge" already defined with incompatible format.
e:\sdk\tools\..\extras\b4a_remote\androidx\coordinatorlayout\coordinatorlayout\1.1.0\unpacked-coordinatorlayout-1.1.0\res\values\values.xml:70: Original attribute defined here.
e:\sdk\tools\..\extras\b4a_remote\com\android\support\coordinatorlayout\28.0.0\unpacked-coordinatorlayout-28.0.0\res\values\values.xml:84: error: Attribute "layout_dodgeInsetEdges" already defined with incompatible format.

 

 

فقط یه چیزی رو بهم بگید این فایل اکسل من که اسمش export.csv هست MIMEtype چی هست ؟؟؟؟ اینو نمیدونم

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

  • 2 سال بعد...

سلام.
استاد بحث کپی فایل در داخل حافظه داخلی گوشی هم از این طریق انجام میشه?

من نمیتونم با دستور file.DirRootExternal فایل داخل حافظه داخلی کپی کنم. ( توی اندرویدای جدید )

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

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .
توجه: مطلب ارسالی شما پس از تایید مدیریت برای همه قابل رویت خواهد بود.

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

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

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

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

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

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

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

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