Настройка обоев из необработанного ресурса в видоискателе - PullRequest
0 голосов
/ 08 ноября 2018

Я создал переработчик для отображения карт. Они содержат GIF-файлы, которые я установил в свой каталог Raw. Это прекрасно работает.

Сейчас Я пытаюсь установить обои телефона на основе выбранного элемента. Проблема здесь в том, что WallpaperManager, который я использую, пытается запросить путь к ресурсу, но я хочу, чтобы он был установлен на основе выбранного элемента. Вот фрагменты -

 public MyViewHolder(final View itemView) {
            super(itemView);
            this.textViewName =  itemView.findViewById(R.id.textViewName);
            this.textViewVersion =  itemView.findViewById(R.id.textViewVersion);
            this.gifView = itemView.findViewById(R.id.gifView);
            this.fileName = itemView.findViewById(R.id.fileName);

            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {

                    Toast.makeText(itemView.getContext(), "You Chose " + textViewName.getText().toString(), Toast.LENGTH_SHORT).show();

                    int resID = itemView.getResources().getIdentifier(fileName.getText().toString(),
                            "raw", itemView.getContext().getPackageName());
                    Log.i(TAG, String.valueOf(resID));

                    WallpaperManager myWallpaperManager = WallpaperManager.getInstance(itemView.getContext());
                    try {
                        myWallpaperManager.setResource(resID);
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            });

        }

Вы увидите, что я попытался установить resID на основе (не видимого) текстового представления, которое я установил в своем представлении. Просто пробую, но все равно выдает ошибку -

android.content.res.Resources$NotFoundException: Unable to find resource ID #0x0
    at android.content.res.ResourcesImpl.getResourceName(ResourcesImpl.java:255)
    at android.content.res.Resources.getResourceName(Resources.java:1954)
    at android.app.WallpaperManager.setResource(WallpaperManager.java:1155)
    at android.app.WallpaperManager.setResource(WallpaperManager.java:1125)
    at com.example.erickrusznis.live.CustomAdapter$MyViewHolder$1.onClick(CustomAdapter.java:54)

Так что кажется, что он постоянно дает мне только идентификатор ресурса, а не фактический путь. Любые предложения о том, как получить необработанный путь к файлу, основанный на позиции, было бы здорово! спасибо!

Edit- Я тоже попробовал это, но он говорит, что ему нужен int вместо uri-

  Uri uri = Uri.parse("android.resource://"+itemView.getContext().getPackageName()+"/raw/"+fileName.getText().toString());

                    WallpaperManager wpm = WallpaperManager.getInstance(itemView.getContext());
                    wpm.setResource(uri);
...