欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android HttpURLConnection下载网络图片设置系统壁纸

程序员文章站 2023-09-04 14:21:20
需求: 壁纸是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();
  }
 
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。