Android: как получить доступ к обоям приложения галереи по умолчанию с помощью намерений

Итак, я делаю приложение-галерею, которое получает изображение в виде растрового изображения. Я хочу, чтобы приложение галереи Android по умолчанию справилось с этим. Я использовал намерение обоев, но он снова попросил меня выбрать, какое изображение я хочу установить в качестве обоев. Я хочу пройти этот шаг и использовать выбранное растровое изображение в качестве обоев. Как мне это сделать?

Любая помощь будет оценена по достоинству. Спасибо! PS: я не хочу использовать WallpaperManager, так как у него нет опции обрезки и т. д. Я хочу, чтобы приложение по умолчанию справилось с этим за меня (ПОДХОДИТ ЛИ ЭТО ДЛЯ ВСЕХ УСТРОЙСТВ? ЕСЛИ НЕТ, ТО АЛЬТЕРНАТИВЫ?)


person Anay    schedule 24.06.2015    source источник
comment
Можете ли вы опубликовать код, который вы пробовали?   -  person Kevin Cronly    schedule 24.06.2015
comment
Ну, попробовал через WallpaperManager. Вот и все. Намерение галереи Android мало что дало. Он попросил бы меня выбрать изображение из галереи, а затем установить его в качестве обоев (после обрезки и т. д.). Я хочу пропустить выбор изображения и перейти прямо к установке в качестве обоев. Разве не должен быть способ передать растровое изображение в приложение галереи по умолчанию и добиться цели?   -  person Anay    schedule 24.06.2015


Ответы (1)


Это намерение, которое поможет вам загрузить изображение из вашей галереи:

     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);

это должно быть частью вашей активностиOnResult. Здесь вы можете обработать изображение, которое вы получили из своей галереи. В последней строке есть растровое изображение, это то, что пользователь выбрал из галереи:

 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);

        }
person Karoly    schedule 24.06.2015
comment
Спасибо за ответ. Однако у меня уже есть Bitmap uri. Я просто хочу использовать приложение Галерея, чтобы установить его в качестве обоев. - person Anay; 24.06.2015
comment
ой, извини. Я неправильно тебя понимаю. - person Karoly; 24.06.2015