2017-08-06 28 views
1

我從畢加索圖書館收到了一張來自互聯網的圖片。 然後我將它設置在壁紙上。 但是在我的手機上運行後,我接近了部隊。 如果您在編碼方面出現錯誤,請提供幫助,或者如果您有工作建議,請提供。如何從畢加索圖書館下載圖片並將其設置爲壁紙

Bitmap result= null; 
    try { 
     result = Picasso.with(getApplicationContext()) 
       .load("http://wallpaperswide.com/download/the_amazing_spider_man_2012_film-wallpaper-1600x900.jpg") 
       .get(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 
    try { 
     wallpaperManager.setBitmap(result); 
    } catch (IOException ex) { 
     ex.printStackTrace(); 
    } 
+1

你能發佈你的錯誤日誌嗎? – Darush

+0

嘗試使用MainActivity.this而不是getApplicationContext() – Darush

+0

@Darush我試過了,但它仍然關閉 – programdan

回答

1

假設你在裏面MainActivity:

package com.example.myapplication; 

import android.app.WallpaperManager; 
import android.graphics.Bitmap; 
import android.graphics.drawable.Drawable; 
import android.os.Bundle; 
import android.support.v7.app.AppCompatActivity; 
import android.util.Log; 
import android.widget.Toast; 

import com.squareup.picasso.Picasso; 
import com.squareup.picasso.Target; 

import java.io.IOException; 

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     Picasso.with(this).load("http://wallpaperswide.com/download/the_amazing_spider_man_2012_film-wallpaper-1600x900.jpg").into(new Target(){ 

      @Override 
      public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) { 
       WallpaperManager wallpaperManager = WallpaperManager.getInstance(MainActivity.this); 
       try { 
        wallpaperManager.setBitmap(bitmap); 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 
       Log.d("TAG", "onBitmapLoaded: "); 
       Toast.makeText(MainActivity.this, "Wallpaper Changed", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onBitmapFailed(final Drawable errorDrawable) { 
       Log.d("TAG", "FAILED"); 
       Toast.makeText(MainActivity.this, "Loading image failed", Toast.LENGTH_SHORT).show(); 
      } 

      @Override 
      public void onPrepareLoad(final Drawable placeHolderDrawable) { 
       Log.d("TAG", "Prepare Load"); 
       Toast.makeText(MainActivity.this, "Downloading image", Toast.LENGTH_SHORT).show(); 
      } 
     }); 

    } 

} 

確保:

  • 使用此導入的import com.squareup.picasso.Target;代替import java.lang.annotation.Target;
  • 你給INTERNET權限和SET_WALLPAPER許可,您AndroidManifest.xml中。 <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.SET_WALLPAPER" />

最後: 等待圖像下載,然後檢查設備的主屏幕,瞧!

+0

沒有。它沒有工作:( – programdan

+0

@ nima1382na我正在檢查它,我會盡快更新我的答案 – Darush

+0

謝謝我的朋友 – programdan