Я создал переработчик для отображения карт. Они содержат 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);