android - 这是我的壁纸下载代码,仅适用于 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;
}
解决方案
推荐阅读
- html - 如何将导航栏放在单独的边框中?
- go - [...]int{} 和 []int 之间的区别
- web - 当我尝试使用 npm 时,我 apify 命令出现 243 错误
- purescript - 了解 newtype 以及何时使用它
- java - 我如何创建适用于所有控制器的动态链接
- python - 如何标记带有点的标题,例如“先生”。而不是 "Mr" 和 "It's" 而不是 "It" 和 "s"?
- unity3d - 您可以将瓦片地图上的单个瓦片引用为变换/游戏对象吗?
- javascript - 使用 Sass.js 在浏览器中编译 Sass 时未定义未知命令
- python - Python函数循环遍历每个列表值并插入字符串
- javascript - 如何在 Echarts 中将力图转换为无?