Android используется в качестве обоев

Я разрабатываю приложение, внутри которого у меня есть галерея изображений. Когда я выбираю изображение, оно открывается в другом fragment в imageView (android:id="@+id/gallery_image") и отображается в полноэкранном режиме.

Все работает хорошо. Но мне нужна функция установки этого изображения в качестве обоев устройства. После открытия изображения, когда пользователь нажимает кнопку меню, появляется меню параметров только с одним пунктом меню с названием «Использовать как обои». При нажатии на этот элемент намерение Android по умолчанию установить в качестве обоев (может быть android.intent.action.SET_WALLPAPER) даст пользователю возможность установить это изображение в качестве обоев для этого устройства. Обрезка или другие функции настройки обоев будут обрабатываться Android.

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


person Kaidul    schedule 12.09.2013    source источник


Ответы (1)


ОБНОВЛЕНИЕ:

Для передачи изображения в родное приложение для обоев:

Intent intent = new Intent(Intent.ACTION_SET_WALLPAPER);
startActivity(Intent.createChooser(intent, "Select Wallpaper"));

Вы можете создать элемент в contextMenu как Set as wallpaper в своем приложении, и когда пользователь коснется этого элемента, вы используете этот код.


Вызовите этот метод для установки выбранного изображения в качестве обоев:

public void setWallpaper() {

        Context context = this.getBaseContext(); 
        Bitmap mBitmap = BitmapFactory.decodeResource(getResources(),mImageIds[pos]);
        context.setWallpaper(mBitmap);
}

И добавьте это разрешение в файл Android Manifest:

  <uses-permission android:name="android.permission.SET_WALLPAPER" />
person Umer Farooq    schedule 12.09.2013
comment
спасибо за Ваш ответ. На самом деле я знаю, как установить изображение в качестве обоев. Но я хочу передать это изображение намерению установки обоев Android (то, что вы видите, когда нажимаете кнопку меню и появляется элемент «использовать как» / «установить как»), а затем Android сделает все остальное (например, предоставив параметр обрезки и установив обои ). - person Kaidul; 12.09.2013
comment
@KaidulIslamSazal Обновил ответ. Ваше здоровье - person Umer Farooq; 12.09.2013
comment
это не должно работать. Вы просто открываете действие SET_WALLPAPER и не передаете это изображение. SET_WALLPAPER просто откройте возможное действие, чтобы выбрать изображения из галереи для установки обоев. Я просто хочу передать это изображение в ту ситуацию, когда изображение выбрано для обрезки и установки в качестве обоев. - person Kaidul; 12.09.2013
comment
Он делает это автоматически. Попробуй - person Umer Farooq; 12.09.2013
comment
не работает. это дает мне возможность выбрать изображение из галереи. - person Kaidul; 12.09.2013
comment
Нет, ты не можешь этого сделать. Я думаю, вам действительно нужно переосмыслить дизайн вашего приложения. Вы хотите передать изображение из своего приложения в программу запуска Android. Для этого вам нужно будет спросить разработчика программы запуска, как отправлять данные из вашего приложения в средство выбора обоев программы запуска. Таким образом, простое решение — написать код, позволяющий пользователю самостоятельно обрезать изображение. Конечно, после кадрирования для установки изображения в качестве фона вы можете использовать приведенный выше код. - person Umer Farooq; 12.09.2013