我有一个应用程序,我在 SD卡的文件夹中有一些下载的图像。我想把它保存为壁纸。
使用以下代码用户可以将其设置为壁纸。
WallpaperManager myWallpaperManager = WallpaperManager.getInstance(context);
myWallpaperManager.setBitmap(loadedImage);
然而,当从Gallery应用程序中选择图像来设置壁纸时,这不会为用户提供任何用户选择图像的一部分(如裁剪操作)的UI。我希望我的代码能够触发这样的操作。当用户点击我的应用程序中的按钮时,我想将它们带到带有裁剪选项的图库应用程序来设置壁纸。
请让我知道如何做到这一点。谢谢。
答案 0 :(得分:1)
你可能想试试这个:
从您的图书馆中选择(包括SD卡) - void selectPhoto():
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Choose photo to upload"), PICK_FROM_FILE);
开始裁剪操作 - void doCrop():
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setType("image/*");
// Check if there is image cropper application installed.
List<ResolveInfo> list = getPackageManager().queryIntentActivities( intent, 0 );
int size = list.size();
// If no cropper application is found, throw a message.
if (size == 0) {
Toast.makeText(this, "Can not find image crop app", Toast.LENGTH_SHORT).show();
return;
// If there're cropper applications found, use the first
} else {
// Specify image path and cropping parameters
intent.setData(mImageCaptureUri);
intent.putExtra("outputX", 0);
intent.putExtra("outputY", 0);
intent.putExtra("return-data", true);
Intent i = new Intent(intent);
ResolveInfo res = list.get(0);
i.setComponent( new ComponentName(res.activityInfo.packageName, res.activityInfo.name));
startActivityForResult(i, CROPPED_IMAGE);
处理活动结果 - void onActivityResult(int requestCode,int resultCode,Intent data)
if (resultCode != RESULT_OK) return;
switch (requestCode) {
case PICK_FROM_FILE:
mImageCaptureUri = data.getData();
doCrop();
break;
case CROPPED_IMAGE:
Bundle extras = data.getExtras();
try{
if (extras != null) {
Bitmap myImage = extras.getParcelable("data");
}
}
catch(Exception e)
{
e.printStackTrace();
}
break;
此代码将在您选择图像后立即激活裁剪操作。
请注意, mImageCaptureUri 是选定的图片URI,它会传递给裁剪操作的意图。