6

为什么我会在包含 的行上收到弃用错误,setWallpaper(bmp)我该如何解决?

错误:不推荐使用 Context 类型的方法 setWallpaper(Bitmap)

switch(v.getId()){
 case R.id.bSetWallpaper:
try {
            getApplicationContext().setWallpaper(bmp);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        break;
4

4 回答 4

11

当某些东西被弃用时,这意味着开发人员已经创造了一种更好的方式来做这件事,并且你不应该再使用旧的或弃用的方式。不推荐使用的东西将来会被删除。

在您的情况下,如果您有图像路径,则设置壁纸的正确方法如下:

is = new FileInputStream(new File(imagePath));
bis = new BufferedInputStream(is);
Bitmap bitmap = BitmapFactory.decodeStream(bis);
Bitmap useThisBitmap = Bitmap.createScaledBitmap(
    bitmap, parent.getWidth(), parent.getHeight(), true);
bitmap.recycle();
if(imagePath!=null){
    System.out.println("Hi I am try to open Bit map");
    wallpaperManager = WallpaperManager.getInstance(this);
    wallpaperDrawable = wallpaperManager.getDrawable();
    wallpaperManager.setBitmap(useThisBitmap);

如果您有图像 URI,请使用以下内容:

wallpaperManager = WallpaperManager.getInstance(this);
wallpaperDrawable = wallpaperManager.getDrawable();
mImageView.setImageURI(imagepath);

从 Maidul 对这个问题的回答。

于 2013-03-03T20:02:49.857 回答
5

“已弃用”意味着您正在使用的特定代码不再是实现该功能的推荐方法。您应该查看给定方法的文档,它很可能会提供指向推荐方法的链接。

于 2013-03-03T20:02:33.927 回答
3
WallpaperManager myWallpaperManager=WallpaperManager.getInstance(getApplicationContext());

try {
    myWallpaperManager.setBitmap(bmp);
}
catch (IOException e) {
    Toast.makeText(YourActivity.this, 
                   "Ooops, couldn't set the wallpaper", 
                   Toast.LENGTH_LONG).show();
}
于 2013-03-18T01:42:50.720 回答
1

您应该使用WallpaperManager.setStream()而不是 Context.setWallpaper(),因为它已被弃用,并且可能会在新的 API 版本中被删除。

于 2013-03-03T20:04:42.237 回答