第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

Glide 下載圖片并同步保存為文件

Glide 下載圖片并同步保存為文件

呼如林 2023-03-23 16:44:12
我正在嘗試使用 Glide 從 URL 下載圖像并獲取文件的路徑并將其轉(zhuǎn)發(fā)以WallpaperManager.getCropAndSetWallpaperIntent設(shè)置為墻紙。我發(fā)現(xiàn)這可以使用asFileGlide 的方法來完成科特林:val data = Glide    .with(context)    .asFile()    .load(url)    .submit()但是當(dāng)我打電話時(shí)data.get()我得到了錯(cuò)誤java.lang.IllegalArgumentException: You must call this method on a background thread所以遵循這個(gè)答案并實(shí)施MyAsyncTaskinterface AsyncResponse {    fun processFinish(output: File?)}class MyAsyncTask(delegate: AsyncResponse) : AsyncTask<FutureTarget<File>, Void, File?>() {    override fun doInBackground(vararg p0: FutureTarget<File>?): File? {        return p0[0]?.get()    }    private var delegate: AsyncResponse? = null    init {        this.delegate = delegate    }    override fun onPostExecute(result: File?) {        delegate!!.processFinish(result)    }}而我現(xiàn)在正在這樣做fun getFile(context: Context, url: String) : File {    val data = Glide        .with(context)        .asFile()        .load(url)        .submit()    val asyncTask = MyAsyncTask(object : AsyncResponse {        override fun processFinish(output: File?) {            println(output?.path)        }    }).execute(data)  return asyncTask.get()}但我似乎無法得到File
查看完整描述

2 回答

?
狐的傳說

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

關(guān)于您關(guān)于從 url 獲取圖像的第一個(gè)問題,而不是使用asFile,建議您使用該方法downloadOnly()。AsyncTask然后,您可以利用 aRequestListener在加載資源時(shí)獲取異步回調(diào),而不是使用 an 。

至于你的第二個(gè)問題,你正在廣播一個(gè)未被操作系統(tǒng)或你設(shè)備上的任何應(yīng)用程序注冊(cè)的隱式意圖。您可以嘗試?yán)孟到y(tǒng)服務(wù),而不是廣播意圖WallpaperManager


查看完整回答
反對(duì) 回復(fù) 2023-03-23
?
斯蒂芬大帝

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

回答我自己的問題

  1. 最好downloadOnly()按照 Elli White here的建議使用。但是我在研究這個(gè)問題上浪費(fèi)了足夠多的時(shí)間,并且得到了一個(gè)可行的解決方案,所以我決定不從頭開始。

  2. 我得到的錯(cuò)誤是因?yàn)?Glide 返回的圖像文件名。

我通過將文件復(fù)制到某處并將其用作源來修復(fù)它。

        val file = asyncTask.get()

//        copy file

        val tempFile = File.createTempFile("image", ".png")

        copyFile(file!!.inputStream(), FileOutputStream(tempFile))


對(duì)于我的用例,即將圖像設(shè)置為墻紙,我不必?fù)?dān)心文件擴(kuò)展名,只要我.png在這種情況下指定它是圖像即可。


查看完整回答
反對(duì) 回復(fù) 2023-03-23
  • 2 回答
  • 0 關(guān)注
  • 568 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)