亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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

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

呼如林 2023-03-23 16:44:12
我正在嘗試使用 Glide 從 URL 下載圖像并獲取文件的路徑并將其轉發以WallpaperManager.getCropAndSetWallpaperIntent設置為墻紙。我發現這可以使用asFileGlide 的方法來完成科特林:val data = Glide    .with(context)    .asFile()    .load(url)    .submit()但是當我打電話時data.get()我得到了錯誤java.lang.IllegalArgumentException: You must call this method on a background thread所以遵循這個答案并實施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)    }}而我現在正在這樣做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貢獻1804條經驗 獲得超3個贊

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

至于你的第二個問題,你正在廣播一個未被操作系統或你設備上的任何應用程序注冊的隱式意圖。您可以嘗試利用系統服務,而不是廣播意圖WallpaperManager。


查看完整回答
反對 回復 2023-03-23
?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

回答我自己的問題

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

  2. 我得到的錯誤是因為 Glide 返回的圖像文件名。

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

        val file = asyncTask.get()

//        copy file

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

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


對于我的用例,即將圖像設置為墻紙,我不必擔心文件擴展名,只要我.png在這種情況下指定它是圖像即可。


查看完整回答
反對 回復 2023-03-23
  • 2 回答
  • 0 關注
  • 555 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號