Это мой код загрузки обоев. Работает только на Google Photo. Пожалуйста, дайте мне самый простой код для загрузки обоев одним щелчком мыши.
Как автоматически загрузить обои в галерею одним щелчком мыши?
private void downloadWallpaper(final Wallpaper wallpaper) {
((Activity) mCtx).findViewById(R.id.progressbar).setVisibility(View.VISIBLE);
Glide.with(mCtx)
.asBitmap()
.load(wallpaper.url)
.into(new SimpleTarget<Bitmap>() {
@Override
public void onResourceReady(Bitmap resource, Transition<? super Bitmap> transition) {
((Activity) mCtx).findViewById(R.id.progressbar).setVisibility(View.GONE);
Intent intent = new Intent(Intent.ACTION_VIEW);
Uri uri = saveWallpaperAndGetUri(resource, wallpaper.id);
if (uri != null) {
intent.setDataAndType(uri, "image/*");
mCtx.startActivity(Intent.createChooser(intent, "Islamic Writes"));
}
}
}
);
}
private Uri saveWallpaperAndGetUri(Bitmap bitmap, String id) {
if (ContextCompat.checkSelfPermission(mCtx, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat
.shouldShowRequestPermissionRationale((Activity) mCtx, android.Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
Intent intent = new Intent();
intent.setAction( Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", mCtx.getPackageName(), null);
intent.setData(uri);
mCtx.startActivity(intent);
} else {
ActivityCompat.requestPermissions((Activity) mCtx, new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100);
}
return null;
}
File folder = new File(Environment.getExternalStorageDirectory().toString() + "/Download");
folder.mkdirs();
File file = new File(folder, id + ".jpg");
try {
FileOutputStream out = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
out.flush();
out.close();
Intent intent = new Intent( Intent.ACTION_MEDIA_SCANNER_SCAN_FILE );
mCtx.sendBroadcast(intent);
return FileProvider.getUriForFile( mCtx, BuildConfig.APPLICATION_ID +".provider",file );
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}