2012-04-15 1 views
6

저는 벽지로 이미지를 설정해야하는 응용 프로그램을 개발해 왔습니다.이미지를 바탕 화면으로 프로그래밍 방식으로 설정하는 방법은 무엇입니까?

코드 :

WallpaperManager m=WallpaperManager.getInstance(this); 

String s=Environment.getExternalStorageDirectory().getAbsolutePath()+"/1.jpg"; 
File f=new File(s); 
Log.e("exist", String.valueOf(f.exists())); 
try { 
     InputStream is=new BufferedInputStream(new FileInputStream(s)); 
     m.setBitmap(BitmapFactory.decodeFile(s)); 

    } catch (FileNotFoundException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.e("File", e.getMessage()); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     Log.e("IO", e.getMessage()); 
    } 

는 또한 나는 다음과 같은 권한을 추가 한 :

<uses-permission android:name="android.permission.SET_WALLPAPER" /> 

을하지만이 일을하지 않습니다; 파일은 sdcard에 있습니다. 내가 실수 한 부분이 어디 있니?

+1

예외가 발생 했습니까? –

답변

2
File f = new File(Environment.getExternalStorageDirectory(), "1.jpg"); 
String path = f.getAbsolutePath(); 
File f1 = new File(path); 

if(f1.exists()) { 
    Bitmap bmp = BitmapFactory.decodeFile(path); 
    BitmapDrawable bitmapDrawable = new BitmapDrawable(bmp); 
    WallpaperManager m=WallpaperManager.getInstance(this); 

    try { 
     m.setBitmap(bmp); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

열기의 AndroidManifest.xml 파일을 추가 할 수있는 권한 등 ..

<uses-permission android:name="android.permission.SET_WALLPAPER" /> 

이 시도하고 나를 어떻게 알려 .. 아마도

5

이미지가있는 경우, 당신은 메모리가 부족 큰. Logcat 로그를 읽으면 확인할 수 있습니다. 이 경우 다음과 같이 사진을 기기 크기에 맞게 조정하십시오.