رفتن به مطلب
  • 0

دانلود


MR.B4A

سوال

سلام به همه

یه راهنمایی درمورد دانلود فایل میخواستم.

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

ممنون میشم معرفی کنید.

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

10 پاسخ به این سوال تاکنون داده شده است

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

6 ساعت قبل، batman123 گفته است:

سلام مجدد.

آقا، میشه برای این فرایند دانلود هم یک پروگرس بار گذاشت که نمایش بده که داره دانلودی هم اتفاق میوفته و چه مقدار ازش رفته؟

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

 نمونه کد با نمایش پاراگرس :

Sub Globals
	Dim AriaAsync As AriaAsyncTask
End Sub

Sub Activity_Create(FirstTime As Boolean)
	AriaAsync.Initialize("ariaasync")
	AriaAsync.Run(Null)
End Sub

Sub ariaasync_DoInBackground(Params() As Object) As Object
	Dim address As String = File.Combine(File.DirInternal,"test.png")
	AriaAsync.Downloader.Initialize(AriaAsync)
	AriaAsync.Downloader.Download("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png",address)
End Sub

Sub ariaasync_OnProgressUpdate(Progress As Int)
	Log(Progress)
End Sub

Sub ariaasync_OnPostExecute(Result As Object)
	Log("DownloadAnjam shod")
End Sub

 

برنامه رو روی حالت release تست کنید ، و در  صورت ارور دسترسی

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

AddPermission("android.permission.ACCESS_NETWORK_STATE")

 

برای آشنایی با کتابخانه آموزش های توی پست کتابخانه رو حتما ببینید

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

9 ساعت قبل، امین شاهدی گفته است:

Sdk و ورژن B4A رو آپدیت کنیدبه نظر api خیلی قدیمیه ، 

۳۰ یا بالاتر رو دانلود کنید

 

برادر باز همینه

ezgif-5-58268b290a_8h8f.png

من از api لول 33 استفاده میکنم.

البته توی اندروید مانیفست targetSdkVersion="31 اینطوری هست.

فکر میکنم نسخه کتابخونه okhttputils2 مون باهم فرق داشته باشه.

نظر شما چیه؟

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

تو ارور زده  api +21 نیاز داره ولی مال شما 15

از پاین خط چهارم رو ببینید،چیزیه که ارور میگه

 

 توی کانفیگ بی فور ای چک کنید که ای پی ای درسته یا نه 

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

7 ساعت قبل، امین شاهدی گفته است:

تو ارور زده  api +21 نیاز داره ولی مال شما 15

از پاین خط چهارم رو ببینید،چیزیه که ارور میگه

 

 توی کانفیگ بی فور ای چک کنید که ای پی ای درسته یا نه 

آقا دست شما دردنکنه
حل شد.

باید minSdkVersion="17" رو بالاتر میاوردم.

برای من روی 14 بود، الان که آوردم 17 اوکی شد.

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

سلام ساده ترین راه استفاده از کتابخانه OkHttpUtils2 (از کتابخانه های پیش فرض) ،

کتابخانه OkHttpUtils2 روتیک بزنید و طبق کد زیر کلاینت رو اضافه کنید : 

Sub Globals
	Dim okhttp As OkHttpClient
End Sub

کتابخانه رو با ایونت نیم دلخواه Initialize کنید : 

Sub Activity_Create(FirstTime As Boolean)
	okhttp.Initialize("okhttp")
End Sub	

این کلاینت میتونه درخواست های شمارو اجرا کنه ، حالا نیاز دارین که یه درخواست ایجاد کنید : 

Dim downloadReq As OkHttpRequest

برای دانلود از متد InitializeGet استفاده کنید و لینک رو بهش بدین ، برای مثال دانلود عکس : 

downloadReq.InitializeGet("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png")

حالا نیازه تا درخواست رو توسط کلاینت اجرا کنیم : 

okhttp.Execute(downloadReq,1)

اون عدد 1 فقط یه نشانگره که زمانی که درخواست زیادی اجرا شد بفهمین ساب برای کدوم درخواست ایجاد شده ، ما برای مثال زدیم 1  

ساب ResponseSuccess مربوط به کلاینته که درخواست انجام شه اجرا میشه و با استفاده از ایونت نیمی که داده بودیم به برنامه اضافش میکنیم : 

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	
End Sub

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

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("saveFile",File.OpenOutput(File.DirInternal,"Ax.png",False),True,1)
End Sub

توی کد بالا نیاز به یه ایونت نیم داره تا زمانی که سیو انجام شد اجرا شه و یه outputstream  که فایل روتوش ذخیره کنه , و بعد true برای بعد اینکه ذخیره انجام شد Output رو ببنده و اون 1 هم مثل مثال بالا فقط یه تسک آیدیه که میتونین هرچیزی بزارین ، 

زمانی که سیو انجام شه ساب زیر اجرا میشه که من گذاشتم بگراند برنامه  : 

Sub saveFile_StreamFinish (Success As Boolean, TaskId As Int)
	ToastMessageShow("Ax save shod",False)
	Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"Ax.png"))
End Sub

 

 

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

Sub Globals
	Dim okhttp As OkHttpClient
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	okhttp.Initialize("okhttp")

	Dim downloadReq As OkHttpRequest
	downloadReq.InitializeGet("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png")
	
	okhttp.Execute(downloadReq,1)
	
End Sub

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("saveFile",File.OpenOutput(File.DirInternal,"Ax.jpg",False),True,1)
End Sub

Sub saveFile_StreamFinish (Success As Boolean, TaskId As Int)
	ToastMessageShow("Ax save shod",False)
	Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"Ax.jpg"))
End Sub

 

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

3 ساعت قبل، امین شاهدی گفته است:

سلام ساده ترین راه استفاده از کتابخانه OkHttpUtils2 (از کتابخانه های پیش فرض) ،

کتابخانه OkHttpUtils2 روتیک بزنید و طبق کد زیر کلاینت رو اضافه کنید : 

Sub Globals
	Dim okhttp As OkHttpClient
End Sub

کتابخانه رو با ایونت نیم دلخواه Initialize کنید : 

Sub Activity_Create(FirstTime As Boolean)
	okhttp.Initialize("okhttp")
End Sub	

این کلاینت میتونه درخواست های شمارو اجرا کنه ، حالا نیاز دارین که یه درخواست ایجاد کنید : 

Dim downloadReq As OkHttpRequest

برای دانلود از متد InitializeGet استفاده کنید و لینک رو بهش بدین ، برای مثال دانلود عکس : 

downloadReq.InitializeGet("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png")

حالا نیازه تا درخواست رو توسط کلاینت اجرا کنیم : 

okhttp.Execute(downloadReq,1)

اون عدد 1 فقط یه نشانگره که زمانی که درخواست زیادی اجرا شد بفهمین ساب برای کدوم درخواست ایجاد شده ، ما برای مثال زدیم 1  

ساب ResponseSuccess مربوط به کلاینته که درخواست انجام شه اجرا میشه و با استفاده از ایونت نیمی که داده بودیم به برنامه اضافش میکنیم : 

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	
End Sub

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

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("saveFile",File.OpenOutput(File.DirInternal,"Ax.png",False),True,1)
End Sub

توی کد بالا نیاز به یه ایونت نیم داره تا زمانی که سیو انجام شد اجرا شه و یه outputstream  که فایل روتوش ذخیره کنه , و بعد true برای بعد اینکه ذخیره انجام شد Output رو ببنده و اون 1 هم مثل مثال بالا فقط یه تسک آیدیه که میتونین هرچیزی بزارین ، 

زمانی که سیو انجام شه ساب زیر اجرا میشه که من گذاشتم بگراند برنامه  : 

Sub saveFile_StreamFinish (Success As Boolean, TaskId As Int)
	ToastMessageShow("Ax save shod",False)
	Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"Ax.png"))
End Sub

 

 

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

Sub Globals
	Dim okhttp As OkHttpClient
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	okhttp.Initialize("okhttp")

	Dim downloadReq As OkHttpRequest
	downloadReq.InitializeGet("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png")
	
	okhttp.Execute(downloadReq,1)
	
End Sub

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("saveFile",File.OpenOutput(File.DirInternal,"Ax.jpg",False),True,1)
End Sub

Sub saveFile_StreamFinish (Success As Boolean, TaskId As Int)
	ToastMessageShow("Ax save shod",False)
	Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"Ax.jpg"))
End Sub

 

سلام.

واقعا ممنون از اینکه وقت گذاشتید و این جواب رو نوشتید. بسیار سپاس

اما زمانی که برنامه اجرا میشه، این خطا رو میده:

ezgif-5-58268b290a_331c.png

ممنون میشم راهنمایی بفرمایید

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

در ۱۴۰۱/۱۱/۷ در 20:26، امین شاهدی گفته است:

سلام ساده ترین راه استفاده از کتابخانه OkHttpUtils2 (از کتابخانه های پیش فرض) ،

کتابخانه OkHttpUtils2 روتیک بزنید و طبق کد زیر کلاینت رو اضافه کنید : 

Sub Globals
	Dim okhttp As OkHttpClient
End Sub

کتابخانه رو با ایونت نیم دلخواه Initialize کنید : 

Sub Activity_Create(FirstTime As Boolean)
	okhttp.Initialize("okhttp")
End Sub	

این کلاینت میتونه درخواست های شمارو اجرا کنه ، حالا نیاز دارین که یه درخواست ایجاد کنید : 

Dim downloadReq As OkHttpRequest

برای دانلود از متد InitializeGet استفاده کنید و لینک رو بهش بدین ، برای مثال دانلود عکس : 

downloadReq.InitializeGet("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png")

حالا نیازه تا درخواست رو توسط کلاینت اجرا کنیم : 

okhttp.Execute(downloadReq,1)

اون عدد 1 فقط یه نشانگره که زمانی که درخواست زیادی اجرا شد بفهمین ساب برای کدوم درخواست ایجاد شده ، ما برای مثال زدیم 1  

ساب ResponseSuccess مربوط به کلاینته که درخواست انجام شه اجرا میشه و با استفاده از ایونت نیمی که داده بودیم به برنامه اضافش میکنیم : 

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	
End Sub

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

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("saveFile",File.OpenOutput(File.DirInternal,"Ax.png",False),True,1)
End Sub

توی کد بالا نیاز به یه ایونت نیم داره تا زمانی که سیو انجام شد اجرا شه و یه outputstream  که فایل روتوش ذخیره کنه , و بعد true برای بعد اینکه ذخیره انجام شد Output رو ببنده و اون 1 هم مثل مثال بالا فقط یه تسک آیدیه که میتونین هرچیزی بزارین ، 

زمانی که سیو انجام شه ساب زیر اجرا میشه که من گذاشتم بگراند برنامه  : 

Sub saveFile_StreamFinish (Success As Boolean, TaskId As Int)
	ToastMessageShow("Ax save shod",False)
	Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"Ax.png"))
End Sub

 

 

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

Sub Globals
	Dim okhttp As OkHttpClient
End Sub

Sub Activity_Create(FirstTime As Boolean)
	
	okhttp.Initialize("okhttp")

	Dim downloadReq As OkHttpRequest
	downloadReq.InitializeGet("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png")
	
	okhttp.Execute(downloadReq,1)
	
End Sub

Sub okhttp_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
	Response.GetAsynchronously("saveFile",File.OpenOutput(File.DirInternal,"Ax.jpg",False),True,1)
End Sub

Sub saveFile_StreamFinish (Success As Boolean, TaskId As Int)
	ToastMessageShow("Ax save shod",False)
	Activity.SetBackgroundImage(LoadBitmap(File.DirInternal,"Ax.jpg"))
End Sub

 

سلام مجدد.

آقا، میشه برای این فرایند دانلود هم یک پروگرس بار گذاشت که نمایش بده که داره دانلودی هم اتفاق میوفته و چه مقدار ازش رفته؟

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

در ۱۴۰۱/۱۱/۱۴ در 19:28، امین شاهدی گفته است:

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

 نمونه کد با نمایش پاراگرس :

Sub Globals
	Dim AriaAsync As AriaAsyncTask
End Sub

Sub Activity_Create(FirstTime As Boolean)
	AriaAsync.Initialize("ariaasync")
	AriaAsync.Run(Null)
End Sub

Sub ariaasync_DoInBackground(Params() As Object) As Object
	Dim address As String = File.Combine(File.DirInternal,"test.png")
	AriaAsync.Downloader.Initialize(AriaAsync)
	AriaAsync.Downloader.Download("https://www.google.com/images/branding/googlelogo/1x/googlelogo_light_color_272x92dp.png",address)
End Sub

Sub ariaasync_OnProgressUpdate(Progress As Int)
	Log(Progress)
End Sub

Sub ariaasync_OnPostExecute(Result As Object)
	Log("DownloadAnjam shod")
End Sub

 

برنامه رو روی حالت release تست کنید ، و در  صورت ارور دسترسی

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

AddPermission("android.permission.ACCESS_NETWORK_STATE")

 

برای آشنایی با کتابخانه آموزش های توی پست کتابخانه رو حتما ببینید

دوست عزیز، این کد اصلا دانلود نمیکنه.

به محض اجرا شدن، میاد داخل ساب 

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

Sdk و ورژن B4A رو آپدیت کنیدبه نظر api خیلی قدیمیه ، 

۳۰ یا بالاتر رو دانلود کنید

 

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

بایگانی شده

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

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

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