The answer is a combined answer with that of loop and some other codes, now it works perfectly. So creds to Loop for the code you gave me :)
case R.id.BsetWallpaper:
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
// get the height and width of screen
int height = metrics.heightPixels;
int width = metrics.widthPixels;
try {
WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
int targetWidth = wallpaperManager.getDesiredMinimumWidth();
int targetHeight = wallpaperManager.getDesiredMinimumHeight();
Bitmap source = BitmapFactory.decodeResource(getResources(), toPhone);
int sourceWidth = source.getWidth();
int sourceHeight = source.getHeight();
Bitmap target = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.RGB_565);
Canvas canvas = new Canvas(target);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(source, sourceWidth < targetWidth ? (targetWidth-sourceWidth)/2 : 0, sourceHeight < targetHeight ? (targetHeight-sourceHeight)/2 : 0, null);
wallpaperManager.setBitmap(target);
wallpaperManager.suggestDesiredDimensions(width, height);
Toast.makeText(this, "Wallpaper Set", Toast.LENGTH_SHORT).show();
}catch(IOException e){
e.printStackTrace();
}
break;