ali mo 264 ارسال شده در 15 آبان، ۱۳۹۹ اشتراک گذاری ارسال شده در 15 آبان، ۱۳۹۹ سلام وقت بخیر خدمت همه دوستان اقا من می تونم چند فایل رو بفرستم در اندروید قدیمی ولی برای جدید ها که فایل پراویدر می خواد نمی تونم این کار رو انجام بدم با فایل پراویدر می تونم یک فایل بفرستم ولی چند تای نه اگر دوستی می دونه لطفا بگه پیشاپیش تشکر لینک ارسال به اشتراک گذاری در سایت های دیگر تنظیمات بیشتر اشتراک گذاری ...
محمدرضا شاهپیری 5,569 ارسال شده در 15 آبان، ۱۳۹۹ اشتراک گذاری ارسال شده در 15 آبان، ۱۳۹۹ در ۱ ساعت قبل، 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 264 ارسال شده در 17 آبان، ۱۳۹۹ سازنده اشتراک گذاری ارسال شده در 17 آبان، ۱۳۹۹ ممنون استاد کد درست شده اشو هم این پایین می زارم که بقیه دوستان هم استفاده کنند کلا مولتی ارسال داخل اندروید کوچیک تر از 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 264
سلام وقت بخیر خدمت همه دوستان
اقا من می تونم چند فایل رو بفرستم در اندروید قدیمی ولی برای جدید ها که فایل پراویدر می خواد نمی تونم این کار رو انجام بدم
با فایل پراویدر می تونم یک فایل بفرستم ولی چند تای نه
اگر دوستی می دونه لطفا بگه
پیشاپیش تشکر
لینک ارسال
به اشتراک گذاری در سایت های دیگر
2 پاسخ به این سوال تاکنون داده شده است
ارسالهای توصیه شده
بایگانی شده
این موضوع بایگانی و قفل شده و دیگر امکان ارسال پاسخ نیست.