Android HttpURLConnection下载网络图片设置系统壁纸
程序员文章站
2022-06-04 12:19:36
需求:
壁纸是url链接,get就能请求到,所以就用get请求到图片,把图片转化为bitmap,然后设置壁纸。
代码:
这里我封装了工具类
package...
需求:
壁纸是url链接,get就能请求到,所以就用get请求到图片,把图片转化为bitmap,然后设置壁纸。
代码:
这里我封装了工具类
package xxxxx.utils; import android.app.activity; import android.app.wallpapermanager; import android.graphics.bitmap; import android.graphics.bitmapfactory; import android.os.environment; import java.io.file; import java.io.fileoutputstream; import java.io.ioexception; import java.io.inputstream; import java.net.httpurlconnection; import java.net.malformedurlexception; import java.net.url; /** * 设置壁纸 * 1、下载网络图片,使用httpurlconnection * 2、设置壁纸 * created by zst on 2018/10/15. */ public class httpurlconnectionutil { /** * 设置系统壁纸 * 1、把网络图片设置系统壁纸 * 2、因为谷歌不维护其他框架了,所以使用httpurlconnection来下载和配置 * * @param activity * @param imgurl */ public static void setwallpaper(final activity activity, final string imgurl) { //log.e("壁纸", "链接:" + imgurl); new thread(new runnable() { @override public void run() { try { url httpurl = new url(imgurl);//获取传入进来的url地址 并捕获解析过程产生的异常 //使用是http访问 所以用httpurlconnection 同理如果使用的是https 则用httpsurlconnection try { httpurlconnection conn = (httpurlconnection) httpurl.openconnection();//通过httpurl开启一个httpurlconnection对象 conn.setreadtimeout(5000);//设置显示超市时间为5秒 conn.setrequestmethod("get");//设置访问方式 conn.setdoinput(true);//设置可以获取输入流 inputstream in = conn.getinputstream();//获取输入流 //创建一个写入id卡的文件对象 fileoutputstream out = null; file download = null; string filename = string.valueof(system.currenttimemillis());//获取系统时间 //判断文件是否存在 environment.media_mountedid卡是否挂载 如果是则创建文件对象 if (environment.getexternalstoragestate().equals(environment.media_mounted)) { file parent = environment.getexternalstoragedirectory();//获取id卡目录 download = new file(parent, filename);//在父类的目录下创建一个以当前下载的系统时间为文件名的文件 out = new fileoutputstream(download); } byte[] b = new byte[2 * 1024]; int len; if (out != null) {//id卡如果存在 则写入 while ((len = in.read(b)) != -1) { out.write(b, 0, len); } } //读取该文件中的内容 final bitmap bitmap = bitmapfactory.decodefile(download.getabsolutepath()); activity.runonuithread(new runnable() { @override public void run() { //设置图片为壁纸 //bitmap bitmap = bitmapfactory.decoderesource(this.getresources(),r.drawable.bg_user_top);//设置项目res中的图片 wallpapermanager manager = wallpapermanager.getinstance(activity); try { manager.setbitmap(bitmap); uiutil.showtoastlong(activity, "壁纸设置成功,请在桌面上查看"); } catch (ioexception e) { uiutil.showtoast(activity, "壁纸设置成失败"); e.printstacktrace(); } } }); } catch (ioexception e) { e.printstacktrace(); } } catch (malformedurlexception e) { e.printstacktrace(); } } }).start(); } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。