Что означает, что метод считается устаревшим, и как я могу устранить возникшие ошибки?

Почему я получаю сообщение об устаревании в строке, содержащей setWallpaper(bmp), и как ее устранить?

Ошибка: метод setWallpaper(Bitmap) из типа Context устарел.

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

person TAM    schedule 03.03.2013    source источник
comment
Я думаю, вы ошиблись в своем вопросе. Можете ли вы объяснить ошибку для нас, пожалуйста?   -  person christopher    schedule 04.03.2013
comment
Да, извините, я отредактировал пост, случайно пропустил.   -  person TAM    schedule 04.03.2013
comment
deprecated означает, что вы не должны его использовать.   -  person John Dvorak    schedule 04.03.2013


Ответы (3)


Когда что-то устарело, это означает, что разработчики создали лучший способ сделать это, и что вам больше не следует использовать старый или устаревший способ. Вещи, которые устарели, подлежат удалению в будущем.

В вашем случае правильный способ установки обоев, если у вас есть путь к изображению, выглядит следующим образом:

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

Из ответа Майдула на этот вопрос.

person Zach Latta    schedule 03.03.2013
comment
Спасибо, я попробую это сделать, когда вернусь к коду. - person TAM; 04.03.2013

«Устаревший» означает, что конкретный код, который вы используете, больше не является рекомендуемым методом достижения этой функциональности. Вы должны посмотреть документацию для вашего метода, и она, скорее всего, предоставит ссылку на рекомендуемый метод на своем месте.

person christopher    schedule 03.03.2013

Вы должны использовать WallpaperManager.setStream() вместо Context.setWallpaper(), так как он устарел и может быть удален в новых выпусках API.

person madhead    schedule 03.03.2013