Android HttpURLConnection下载网络图片设置系统壁纸
需求:
壁纸是url链接,get就能请求到,所以就用get请求到图片,把图片转化为bitmap,然后设置壁纸。
代码:
这里我封装了工具类
packagexxxxx.utils;
importandroid.app.Activity;
importandroid.app.WallpaperManager;
importandroid.graphics.Bitmap;
importandroid.graphics.BitmapFactory;
importandroid.os.Environment;
importjava.io.File;
importjava.io.FileOutputStream;
importjava.io.IOException;
importjava.io.InputStream;
importjava.net.HttpURLConnection;
importjava.net.MalformedURLException;
importjava.net.URL;
/**
*设置壁纸
*1、下载网络图片,使用HttpURLConnection
*2、设置壁纸
*Createdbyzston2018/10/15.
*/
publicclassHttpURLConnectionUtil{
/**
*设置系统壁纸
*1、把网络图片设置系统壁纸
*2、因为谷歌不维护其他框架了,所以使用HttpURLConnection来下载和配置
*
*@paramactivity
*@paramimgUrl
*/
publicstaticvoidsetWallpaper(finalActivityactivity,finalStringimgUrl){
//Log.e("壁纸","链接:"+imgUrl);
newThread(newRunnable(){
@Override
publicvoidrun(){
try{
URLhttpUrl=newURL(imgUrl);//获取传入进来的url地址并捕获解析过程产生的异常
//使用是Http访问所以用HttpURLConnection同理如果使用的是https则用HttpsURLConnection
try{
HttpURLConnectionconn=(HttpURLConnection)httpUrl.openConnection();//通过httpUrl开启一个HttpURLConnection对象
conn.setReadTimeout(5000);//设置显示超市时间为5秒
conn.setRequestMethod("GET");//设置访问方式
conn.setDoInput(true);//设置可以获取输入流
InputStreamin=conn.getInputStream();//获取输入流
//创建一个写入ID卡的文件对象
FileOutputStreamout=null;
Filedownload=null;
Stringfilename=String.valueOf(System.currentTimeMillis());//获取系统时间
//判断文件是否存在Environment.MEDIA_MOUNTEDID卡是否挂载如果是则创建文件对象
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
Fileparent=Environment.getExternalStorageDirectory();//获取ID卡目录
download=newFile(parent,filename);//在父类的目录下创建一个以当前下载的系统时间为文件名的文件
out=newFileOutputStream(download);
}
byte[]b=newbyte[2*1024];
intlen;
if(out!=null){//id卡如果存在则写入
while((len=in.read(b))!=-1){
out.write(b,0,len);
}
}
//读取该文件中的内容
finalBitmapbitmap=BitmapFactory.decodeFile(download.getAbsolutePath());
activity.runOnUiThread(newRunnable(){
@Override
publicvoidrun(){
//设置图片为壁纸
//Bitmapbitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.bg_user_top);//设置项目res中的图片
WallpaperManagermanager=WallpaperManager.getInstance(activity);
try{
manager.setBitmap(bitmap);
UiUtil.showToastLong(activity,"壁纸设置成功,请在桌面上查看");
}catch(IOExceptione){
UiUtil.showToast(activity,"壁纸设置成失败");
e.printStackTrace();
}
}
});
}catch(IOExceptione){
e.printStackTrace();
}
}catch(MalformedURLExceptione){
e.printStackTrace();
}
}
}).start();
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。