0

所以,我正在制作一个以位图形式获取图像的图库应用程序。我希望 Android 默认图库应用程序来处理这个问题。我使用了墙纸意图,但它再次要求我选择要设置为墙纸的图像。我想通过这一步并将选定的位图用作墙纸。我该怎么做呢?

任何帮助,将不胜感激。谢谢!PS:我不想使用 WallpaperManager,因为它没有裁剪选项等。我希望默认应用程序为我处理它(所有设备都可以吗?如果不是,那么替代方案?)

4

1 回答 1

0

这是一个 Intent,可帮助您从图库中加载图像:

     Intent intent = new Intent(
                        Intent.ACTION_PICK,
                        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                intent.setType("image/*");
                startActivityForResult(
                        Intent.createChooser(intent, getResources().getString(R.string.select_a_file)),
                        ACTION_REQUEST_GALLERY);

这应该是您的 activityOnResult 的一部分。您可以在此处处理从图库中返回的图像。最后一行有一个位图,这是用户从图库中选择的:

 if (resultCode == RESULT_OK && requestCode == ACTION_REQUEST_GALLERY) {
            Uri selectedImageUri = data.getData();
            String[] projection = {MediaStore.MediaColumns.DATA};
            Cursor cursor = managedQuery(selectedImageUri, projection, null, null,
                    null);
            int column_index = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.DATA);
            cursor.moveToFirst();

            String selectedImagePath = cursor.getString(column_index);


            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(selectedImagePath, options);
            final int REQUIRED_SIZE = 200;
            int scale = 1;
            while (options.outWidth / scale / 2 >= REQUIRED_SIZE
                    && options.outHeight / scale / 2 >= REQUIRED_SIZE)
                scale *= 2;
            options.inSampleSize = scale;
            options.inJustDecodeBounds = false;
            bitmap = BitmapFactory.decodeFile(selectedImagePath, options);

        }
于 2015-06-24T14:59:01.207 回答