为什么我在包含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;
答案 0 :(得分: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对this问题的回答。
答案 1 :(得分:5)
“已弃用”表示您使用的特定代码不再是实现该功能的推荐方法。您应该查看给定方法的文档,它很可能会提供指向它的推荐方法的链接。
答案 2 :(得分: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();
}
答案 3 :(得分:1)
您应该使用WallpaperManager.setStream()而不是Context.setWallpaper(),因为它已弃用,可能会在新的API版本中删除。