如何通过编程方式将图像设置为墙纸?

我一直在开发需要将图像设置为壁纸的应用程序。

码:

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()); } 

我还添加了以下权限:

  

但它不起作用; 该文件存在于SD卡上。 我哪里弄错了?

如果您的图像很大,可能会耗尽内存。 您可以通过阅读Logcat日志来确保它。 如果是这种情况,请尝试将图片调整为设备尺寸,如下所示:

  DisplayMetrics displayMetrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); int height = displayMetrics.heightPixels; int width = displayMetrics.widthPixels << 1; // best wallpaper width is twice screen width // First decode with inJustDecodeBounds=true to check dimensions final BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true; BitmapFactory.decodeFile(path, options); // Calculate inSampleSize options.inSampleSize = calculateInSampleSize(options, width, height); // Decode bitmap with inSampleSize set options.inJustDecodeBounds = false; Bitmap decodedSampleBitmap = BitmapFactory.decodeFile(path, options); WallpaperManager wm = WallpaperManager.getInstance(this); try { wm.setBitmap(decodedSampleBitmap); } catch (IOException e) { Log.e(TAG, "Cannot set image as wallpaper", e); } 
 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文件并添加权限,如..

  

试试看,让我知道发生了什么……