ali mo 261 ارسال شده در 5 بهمن، 2020 اشتراک گذاری ارسال شده در 5 بهمن، 2020 سلام وقت بخیر خدمت همه دوستان اقا من می تونم چند فایل رو بفرستم در اندروید قدیمی ولی برای جدید ها که فایل پراویدر می خواد نمی تونم این کار رو انجام بدم با فایل پراویدر می تونم یک فایل بفرستم ولی چند تای نه اگر دوستی می دونه لطفا بگه پیشاپیش تشکر لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,281 ارسال شده در 5 بهمن، 2020 اشتراک گذاری ارسال شده در 5 بهمن، 2020 در ۱ ساعت قبل، ali mo گفته است : سلام وقت بخیر خدمت همه دوستان اقا من می تونم چند فایل رو بفرستم در اندروید قدیمی ولی برای جدید ها که فایل پراویدر می خواد نمی تونم این کار رو انجام بدم با فایل پراویدر می تونم یک فایل بفرستم ولی چند تای نه اگر دوستی می دونه لطفا بگه پیشاپیش تشکر سلام و درود. باید از اکشن Intent.ACTION_SEND_MULTIPLE برای این کار استفاده کنید.به متد جاوای زیر توجه کنید.تو خط Uri.fromFile باید حواستون باشه از فایل پراویدر استفاده کنید public static void shareMultiple(List<File> files, Context context){ ArrayList<Uri> uris = new ArrayList<>(); for(File file: files){ uris.add(Uri.fromFile(file)); } final Intent intent = new Intent(Intent.ACTION_SEND_MULTIPLE); intent.setType("*/*"); intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris); context.startActivity(Intent.createChooser(intent, context.getString(R.string.ids_msg_share))); } لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
ali mo 261 ارسال شده در 7 بهمن، 2020 مالک اشتراک گذاری ارسال شده در 7 بهمن، 2020 ممنون استاد کد درست شده اشو هم این پایین می زارم که بقیه دوستان هم استفاده کنند کلا مولتی ارسال داخل اندروید کوچیک تر از api 24 (خو 24 نه)به صورت زیره که بدون دردسر میشه فرستاد و نیاز به فایل پرایودر نداره Sub Activity_Create(FirstTime As Boolean) ShareMultipleImages(Array As String(File.Combine(File.DirRootExternal, "bitmap.png"), _ File.Combine(File.DirRootExternal, "1.jpg"))) End Sub Sub ShareMultipleImages(files As List) Dim i As Intent i.Initialize("android.intent.action.SEND_MULTIPLE", "") i.SetType("image/jpeg") Dim Uris As List Uris.Initialize For Each f As String In files Dim u As Uri u.Parse("file://" & f) Uris.Add(u) Next Dim jo As JavaObject = i jo.RunMethod("putParcelableArrayListExtra", Array As Object("android.intent.extra.STREAM", Uris)) StartActivity(i) End Sub کد بالا برای ارل وکتابخونه هاشم JavaObject و ContentResolver ولی برای اندروید 24 به بعد که نیاز به file provider داره به شکل زیر باید عمل کنیم. ابتدا داخل منفیست باید کد های زیر رو بزاریم AddApplicationText( <provider android:name="android.support.v4.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> ) و کد زیرم داخل منفیست بزارید ولی اگر از کتابخونه پکیج منیجر یا هر کتابخونه دیگه که داخلش فایل پرو وایدر داره استفاده می کنید کد زیر رو نزارید چون خطا می ده CreateResource(xml, provider_paths, <files-path name="name" path="shared" /> ) یک سورس پایین تر میزارم از داخلش کلاس file provider رو بردارید با سرویس البته بعد برای مولتی شیرینگ کد های زیر رو باید بزنید If pho.SdkVersion >= 24 Then Dim list As List ' لیست شامل فقط اسم فایل ها list.Initialize ProgressDialogShow2("لطفا صبر کنید و صفحه را ترک نکنید.",True) Sleep(200) Dim name_save As String ' ابتدا باید فایل ها تون رو کپی کنید 'تو مسیر فایل پرووایدر ' که من اینجا فایل نصب برنامه ها رو گرفتم با کتابخونه پرشین پکیج For i =0 To List_Select.Size - 1 name_save = pr.getAppInfo( List_Select.Get(i) ).AppName& ".apk" Wait For (File.CopyAsync("",pr.getAppInfo(List_Select.Get(i)).SourceDir, Starter.Provider.SharedFolder,name_save)) Complete (Success As Boolean) Log("Success: " & Success) If Success Then list.Add(name_save) Next ProgressDialogHide ' InputList(list,list.Size,-1) ShareMultiplefile(list) end if و کد زیر به اکتویتی اضافه کنید Sub ShareMultiplefile(files As List) Dim i As Intent i.Initialize("android.intent.action.SEND_MULTIPLE", "") ' i.SetType("image/jpeg") i.SetType("*/*") Dim Uris As List Uris.Initialize For ii = 0 To files.Size-1 Uris.Add(Starter.Provider.GetFileUri(files.Get(ii))) Next Dim jo As JavaObject = i jo.RunMethod("putParcelableArrayListExtra", Array As Object("android.intent.extra.STREAM", Uris)) StartActivity(i) End Sub یک نکته هم در نظر داشته باشید که فایل های که کپی می کنید برای فایل پراویدر حتما بعد حذفشون کنید چون حافظه کش برنامه تون رو می بره بالا و از طرفی برنامه تون سنگین میشه تو گوشی کاربر به صورت زیر میشه حذف کرد : ' برای حذف تابع زیر صدا بزنید Delete_Cash_send(True) Sub Delete_Cash_send(Show_tose As Boolean) Try Try Log(Starter.Provider.SharedFolder) Log(File.ListFiles(Starter.Provider.SharedFolder)) Log(File.ListFiles(Starter.Provider.SharedFolder).Size) Log(size_folder_fa(Starter.Provider.SharedFolder)) Catch End Try If Show_tose Then ToastMessageShow("حجم : " & size_folder_fa(Starter.Provider.SharedFolder),True) Sleep(1000) ToastMessageShow("تعداد : " & File.ListFiles(Starter.Provider.SharedFolder).Size,True) If File.ListFiles(Starter.Provider.SharedFolder).Size == 0 Then ToastMessageShow("فایلی وجود ندارد.",True) Return End If ToastMessageShow("حذف شد.",True) End If Catch Log(LastException) End Try Try DeleteFolderRecursive(Starter.Provider.SharedFolder) Catch Log(LastException) End Try End Sub Sub size_folder_fa(a As String) As String Try Dim AfileUrils As AriaFileUtils Dim spacefoldr As Long spacefoldr = AfileUrils.SizeOfDirectory2(a) Dim chngest As String = AfileUrils.CalcSize_FA(spacefoldr) chngest = chngest.Replace("٫۰","") chngest = chngest.Replace("٫۱","/1") chngest = chngest.Replace("٫۲","/2") chngest = chngest.Replace("٫۳","/3") chngest = chngest.Replace("٫۴","/4") chngest = chngest.Replace("٫۵","/5") chngest = chngest.Replace("٫۶","/6") chngest = chngest.Replace("٫۷","/7") chngest = chngest.Replace("٫۸","/8") chngest = chngest.Replace("٫۹","/9") chngest = chngest.Replace("٫0","") chngest = chngest.Replace("٫1","/1") chngest = chngest.Replace("٫2","/2") chngest = chngest.Replace("٫3","/3") chngest = chngest.Replace("٫4","/4") chngest = chngest.Replace("٫5","/5") chngest = chngest.Replace("٫6","/6") chngest = chngest.Replace("٫7","/7") chngest = chngest.Replace("٫8","/8") chngest = chngest.Replace("٫9","/9") chngest = chngest.Replace(".0","") chngest = chngest.Replace(".1","/1") chngest = chngest.Replace(".2","/2") chngest = chngest.Replace(".3","/3") chngest = chngest.Replace(".4","/4") chngest = chngest.Replace(".5","/5") chngest = chngest.Replace(".6","/6") chngest = chngest.Replace(".7","/7") chngest = chngest.Replace(".8","/8") chngest = chngest.Replace(".9","/9") chngest = chngest.Replace(".۰","") chngest = chngest.Replace(".۱","/1") chngest = chngest.Replace(".۲","/2") chngest = chngest.Replace(".۳","/3") chngest = chngest.Replace(".۴","/4") chngest = chngest.Replace(".۵","/5") chngest = chngest.Replace(".۶","/6") chngest = chngest.Replace(".۷","/7") chngest = chngest.Replace(".۸","/8") chngest = chngest.Replace(".۹","/9") Return chngest Catch Log(LastException) End Try End Sub Sub FormatFileSize_Notoz(Bytes As Float) As String Try Private Unit() As String = Array As String(" بایت", " کیلو بایت", "مگابایت", " گیگ", "ترابایت", "", "", "", "") If Bytes = 0 Then Return "0 بایت" Else Private Po, Si As Double Private I As Int Bytes = Abs(Bytes) I = Floor(Logarithm(Bytes, 1024)) Po = Power(1024, I) Si = Bytes / Po Return NumberFormat(Si, 0, 0) & Unit(I) End If Catch Log(LastException) End Try End Sub پایان دانلود سورس و کلاس لازم کد های بالا لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
سوال
ali mo 261
سلام وقت بخیر خدمت همه دوستان
اقا من می تونم چند فایل رو بفرستم در اندروید قدیمی ولی برای جدید ها که فایل پراویدر می خواد نمی تونم این کار رو انجام بدم
با فایل پراویدر می تونم یک فایل بفرستم ولی چند تای نه
اگر دوستی می دونه لطفا بگه
پیشاپیش تشکر
لینک ارسال
به اشتراک گذاری در سایت های دیگر
2 پاسخ به این سوال تاکنون داده شده است
ارسال های توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.