Search code examples
androidandroid-studioimageviewandroid-imageviewwallpaper

Getting deprecated error on setting wallpaper


I am trying to make a wallpaper app but I am getting error on setting the wallpaper by a button on click but i m getting deprecated error here is my java code`package com.example.neelaysrivastava.wallpaper;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.content.pm.ActivityInfo;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Switch;
import java.io.IOException;
import java.io.InputStream;


public class MainActivity extends Activity implements OnClickListener {
     ImageView display;
int toPhone;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
    display = (ImageView) findViewById(R.id.imageView);
    ImageView image1 = (ImageView) findViewById(R.id.iVmg1);
    ImageView image2 = (ImageView) findViewById(R.id.iVmg2);
    ImageView image3 = (ImageView) findViewById(R.id.iVmg3);
    ImageView image4 = (ImageView) findViewById(R.id.iVmg4);
    ImageView image5 = (ImageView) findViewById(R.id.iVmg5);
    ImageView image6 = (ImageView) findViewById(R.id.iVmg6);
    ImageView image7 = (ImageView) findViewById(R.id.iVmg7);
    ImageView image8 = (ImageView) findViewById(R.id.iVmg8);
    ImageView image9 = (ImageView) findViewById(R.id.iVmg9);
    ImageView image10 = (ImageView) findViewById(R.id.iVmg10);
    ImageView image11 = (ImageView) findViewById(R.id.iVmg11);
    ImageView image12 = (ImageView) findViewById(R.id.iVmg12);
    ImageView image13 = (ImageView) findViewById(R.id.iVmg13);
    ImageView image14 = (ImageView) findViewById(R.id.iVmg14);
    ImageView image15 = (ImageView) findViewById(R.id.iVmg15);
    ImageView image16 = (ImageView) findViewById(R.id.iVmg16);
    ImageView image17 = (ImageView) findViewById(R.id.iVmg17);
    ImageView image18 = (ImageView) findViewById(R.id.iVmg18);
    ImageView image19 = (ImageView) findViewById(R.id.iVmg19);
    ImageView image20 = (ImageView) findViewById(R.id.iVmg20);

    Button setWall =(Button)findViewById(R.id.button);
    image1.setOnClickListener(this);
    image2.setOnClickListener(this);
    image3.setOnClickListener(this);
    image4.setOnClickListener(this);
    image5.setOnClickListener(this);
    image6.setOnClickListener(this);
    image7.setOnClickListener(this);
    image8.setOnClickListener(this);
    image9.setOnClickListener(this);
    image10.setOnClickListener(this);
    image11.setOnClickListener(this);
    image12.setOnClickListener(this);
    image13.setOnClickListener(this);
    image14.setOnClickListener(this);
    image15.setOnClickListener(this);
    image16.setOnClickListener(this);
    image17.setOnClickListener(this);
    image18.setOnClickListener(this);
    image19.setOnClickListener(this);
    image20.setOnClickListener(this);
}


@Override
public void onClick(View v) {
     switch(v.getId()) {
            case R.id.iVmg1:
                display.setImageResource(R.drawable.img1);
                break;
            case R.id.iVmg2:
                display.setImageResource(R.drawable.img2);
                break;
            case R.id.iVmg3:
                display.setImageResource(R.drawable.img3);
                break;
            case R.id.iVmg4:
                display.setImageResource(R.drawable.img4);
                break;
            case R.id.iVmg5:
                display.setImageResource(R.drawable.img5);
                break;
            case R.id.iVmg6:
                display.setImageResource(R.drawable.img6);
                break;
            case R.id.iVmg7:
                display.setImageResource(R.drawable.img7);
                break;
            case R.id.iVmg8:
                display.setImageResource(R.drawable.img8);
                break;
            case R.id.iVmg9:
                display.setImageResource(R.drawable.img9);
                break;
            case R.id.iVmg10:
                display.setImageResource(R.drawable.img10);
                break;
            case R.id.iVmg11:
                display.setImageResource(R.drawable.img11);
                break;
            case R.id.iVmg12:
                display.setImageResource(R.drawable.img12);
                break;
            case R.id.iVmg13:
                display.setImageResource(R.drawable.img13);
                break;
            case R.id.iVmg14:
                display.setImageResource(R.drawable.img14);
                break;
            case R.id.iVmg15:
                display.setImageResource(R.drawable.img15);
                break;
            case R.id.iVmg16:
                display.setImageResource(R.drawable.img16);
                break;
            case R.id.iVmg17:
                display.setImageResource(R.drawable.img17);
                break;
            case R.id.iVmg18:
                display.setImageResource(R.drawable.img1);
                break;
            case R.id.iVmg19:
                display.setImageResource(R.drawable.img19);
                break;
            case R.id.iVmg20:
                display.setImageResource(R.drawable.img20);
                break;
         case R.id.button:
             InputStream yeaaa =getResources().openRawResource(toPhone);
             Bitmap Whatever = BitmapFactory.decodeStream(yeaaa);
             try{
                 getApplicationContext().setWallpaper(Whatever);
             } catch (IOException e) {
                 e.printStackTrace();
             }
             break;

    }
}
}

`I am using the API 23 and minimum API for the app is 16.So what should i do to fix the error

I tried wallpaper manager but getting error here is the code

 case R.id.button:
             InputStream yeaaa =getResources().openRawResource(toPhone);
             Bitmap Whatever = BitmapFactory.decodeStream(yeaaa);
             WallpaperManager myWallpaper =WallpaperManager.getInstance(this);
             try{
                 myWallpaper.setBitmap(Whatever);
             } catch (IOException e) {
                 e.printStackTrace();
             }
             break;

and LOGCAT is showing 03-02 06:37:44.374 9764-9764/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm 03-02 06:38:05.104 9777-9777/? D/AndroidRuntime: CheckJNI is OFF 03-02 06:38:05.104 9777-9777/? D/dalvikvm: Trying to load lib libjavacore.so 0x0 03-02 06:38:05.114 9777-9777/? D/dalvikvm: Added shared lib libjavacore.so 0x0 03-02 06:38:05.114 9777-9777/? D/dalvikvm: Trying to load lib libnativehelper.so 0x0 03-02 06:38:05.114 9777-9777/? D/dalvikvm: Added shared lib libnativehelper.so 0x0 03-02 06:38:05.114 9777-9777/? D/dalvikvm: No JNI_OnLoad found in libnativehelper.so 0x0, skipping init 03-02 06:38:05.124 9777-9777/? D/dalvikvm: Note: class Landroid/app/ActivityManagerNative; has 179 unimplemented (abstract) methods 03-02 06:38:05.214 9777-9777/? E/memtrack: Couldn't load memtrack module (No such file or directory) 03-02 06:38:05.214 9777-9777/? E/android.os.Debug: failed to load memtrack module: -2 03-02 06:38:05.254 9777-9777/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm as ERROR


Solution

  • You may use

    WallpaperManager.setBitMap()
    

    as setWallpaper() is deprecated.

    If you have an image URI, then use the following:

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