Set wallpaper in whatsapp after getting the path

I am executing this answer to accomplish my task. Everything works well, except for the last part,

if(result!=null) { Toast.makeText(getApplicationContext(), "Image saved in Gallery !", Toast.LENGTH_LONG).show(); if(isinint) //check if any app cares for the result { Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND, Uri.fromFile(new File(result.toString()))); //Create a new intent. First parameter means that you want to send the file. The second parameter is the URI pointing to a file on the sd card. (openprev has the datatype File) ((Activity) ImageListActivity.this).setResult(Activity.RESULT_OK, shareIntent); //set the file/intent as result ((Activity) ImageListActivity.this).finish(); //close your application and get back to the requesting application like GMail and WhatsApp return; //do not execute code below, not important } } 

Finally, nothing crashes, but the wallpaper is also not installed in whatsapp.

Can someone please let me know why it is not working?

Any help is assigned.

thanks

0
source share
1 answer

You can use the following code.

 OnButtonClick(){ ImageProcessing imageProcessing = new ImageProcessing(); Bitmap bitmap = imageProcessing.takeScreenshot(getWindow().getDecorView().findViewById(R.id.view_thought)); imageProcessing.saveBitmap(bitmap); Intent intent = imageProcessing.setAsOption(this,imageProcessing.getSavedImagePath()); startActivityForResult(Intent.createChooser(intent, "Set image as"), 200); } 

And implement the new ImageProcessing class

 public class ImageProcessing { private File imagesPath; public void saveBitmap(Bitmap bitmap) { imagesPath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg"); FileOutputStream fos; try { fos = new FileOutputStream(imagesPath); bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.flush(); fos.close(); } catch (FileNotFoundException e) { Log.e("POS", e.getMessage(), e); } catch (IOException e) { Log.e("POS", e.getMessage(), e); } } public File getSavedImagePath(){ imagesPath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg"); return imagesPath; } public Bitmap takeScreenshot(View rootView) { rootView.setDrawingCacheEnabled(true); return rootView.getDrawingCache(); } public Intent setAsOption(Context cntxt,File imagesPath){ /*File imagesPath = new File(Environment.getExternalStorageDirectory() + "/screenshot.jpg");*/ Intent intent = new Intent(Intent.ACTION_ATTACH_DATA); if(imagesPath.exists()){ Uri contentUri = FileProvider.getUriForFile(cntxt, BuildConfig.APPLICATION_ID+".Utility.GenericFileProvider",imagesPath); intent.setDataAndType(contentUri, "image/jpg"); intent.putExtra("mimeType", "image/jpg"); intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); }else { Toast.makeText(cntxt,"Not a wallpaper",Toast.LENGTH_SHORT).show(); } return intent; } 

}

And in the manifest add:

 <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.SET_WALLPAPER" /> 
0
source

All Articles