代码之家  ›  专栏  ›  技术社区  ›  fwjggYUKGFTYucfty

我无法使用WallpaperManager更改Android墙纸

  •  1
  • fwjggYUKGFTYucfty  · 技术社区  · 11 年前

    我正在尝试使用代码更改Android墙纸。我正在使用WallpaperManager类,但没有成功。我在/drawable目录中使用了.png图像。我收到一个错误,上面写着“预期资源类型为raw”。当我运行应用程序时(当该方法运行时),它会崩溃。我一定是一个非常愚蠢的错误的受害者。方法changeWallpaper()在用户点击按钮后运行。这是我的代码:

     public void changeWallpaper(View view) {
    
        try{
            WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext());
            wallpaperManager.setResource(R.drawable.material_wallpaper);
            String successMessage = "Wallpaper Changes";
            Toast.makeText(this, successMessage, Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
            String failedMessage = "Operation failed";
            Toast.makeText(this, failedMessage, Toast.LENGTH_SHORT).show();
        }
    
    }
    

    编辑:我的/res/目录中没有“原始”文件夹。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Florian Schrofner    11 年前

    如果您想继续使用Drawable,可以将资源转换为位图,然后使用 setBitmap(Bitmap _bitmap) (参见 WallpaperManager ).

    WallpaperManager wallpaperManager = WallpaperManager.getInstance(getActivity().getApplicationContext());
    Bitmap bitmap = BitmapFactory.decodeResource(getActivity().getResources(), R.drawable.material_wallpaper);
    wallpaperManager.setBitmap(bitmap);