spocky / miproja1

364 stars 10 forks source link

Folder picker not supported on many Android Tv devices #69

Open whyisthisbroken opened 8 months ago

whyisthisbroken commented 8 months ago

Hi,

I have bought the Premium and would set now Videos as Launcher Background - but I can't set or pick a folder from my device. I click "pick folder" and nothing happens.

Also I don't understand the change log, must I download all video or can I say use for example the App to load the background Videos?

spocky commented 8 months ago

This seems to be related to a poor management of Google on Android Tv regarding file access. They refuse that standard apps browse the file system except for good reasons (ex: File managers). If you don't follow the rules, your app might not get approved on the Play Store or worse, could be banned. They advise developers to rely on other apps installed on the system in order to pick files/images/folders. However, apps that can do this do not necessarily exist on many stock Android Tv devices.

See here or here

As mentionned in one of these issues, this is working fine on Nvidia Shield.

The "pick folder" intent (aka ACTION_OPEN_DOCUMENT_TREE) doesn't seem to be supported by Fx File Explorer or Tv File Commander, but maybe there's another file manager that supports it. Please share if you find one.

In the meantime, I'll try to find a workaround if possible.

whyisthisbroken commented 8 months ago

Well, maybe Shizuku is a alternative way to go ? https://shizuku.rikka.app/ I try it with the Filemanager X-plore and i can access Android/Data with it. But not trough the launcher... I´ve googled arround and found that the Main Problem the App "com.google.android.documentsui" is missing with ATV11 and so the permissions are denied.... I dont know if it works with the your Launcher App to get Access trough Shizuku - i´m not a developer...

Glx28 commented 7 months ago

My issue is different that I can pick the video but not a folder.

koston-shpee-party commented 7 months ago

Is there anyway we can simply type in the directory's location as a work around on these devices?

6twenty commented 6 months ago

As mentionned in one of these issues, this is working fine on Nvidia Shield.

For what it's worth it only seems to work on my Shield (2019 Pro) for local filesystem directories, not mounted filesystems. I have a USB drive connected as well as an SMB share, and when I try to select a folder from one of those it'll ask if I want to allow Projectivy permission to access that folder and I'll hit yes, but then Projectivy's config remains unchanged. This is a bit frustrating as I want to point it to quite a large directory of images and I don't have enough free space on the internal filesystem to copy the folder to there.

6twenty commented 6 months ago

Update: I tried this again and selected a folder on a connected USB disk, then closed and re-opened Projectivy. This time when I went back to the wallpaper configure setting the folder I had selected was there, but it appears to be formatted incorrectly: it's showing content://com.android.externalstorage.documents/tree/6630/276C%3ANVIDIA_SHIELD%2FArt - unsure if that's just an Android thing but I didn't expect it to show URL-encoded characters in there? %3A is : and %2F is /. Regardless if this format is correct or not, Projectivy doesn't load any of the images from that folder and instead just shows the default wallpaper.

EDIT: after messing around with some of the other wallpaper settings, Projectivy is now loading images from that folder 🙌

jdfrye2 commented 5 months ago

Is a default location for wallpaper(s) an option for the time being while we wait on Google? Something like /storage/emulated/0/Pictures/projectivy. I had moved photos there and bought premium only to discover this issue on my Chromecast TV

MikaKitten7 commented 5 months ago

I'm using a Chromecast with Google TV,

I am unable to set a wallpaper or a folder for rotating wallpapers.

I am also unable to share wallpapers from other file manager apps nothing happens when I choose to share.

Additionally I can't seem to get any of the Reddit wallpapers to work only the default one. I did get an astrophotography wallpaper to load once, but now it won't change away from the default canyon wallpaper.

I successfully requested a refund because it was not mentioned that this feature did not work on Google TV devices, however I would be happy to repurchase if it is fixed.

ISeeTWizard commented 3 months ago

On my Sony TV KD-55AG9 I have the same issue You click on the „select folder“ and nothing happens Choosing a single wallpaper works correctly

Linkinlt commented 2 months ago

try AnExploere (on Android TV), then go to setting, apps >> AnExploere >> permission > always file and foler ( i dont remember exactly)

EzeJovi commented 1 month ago

comentó

Prueba AnExploere (en Android TV), luego ve a configuración, aplicaciones >> AnExploere >> permisos > siempre archivos y carpetas (no recuerdo exactamente)

Eso te permitió poner la elección de carpetas con fondos aleatorios o que es lo que logró. Yo tengo Anexplorer pero solo para elegir fotos y videos pero solo uno.

Thorfinn66 commented 1 month ago

A quick fix would be to to use the file selector (Which works in most File Manager apps) and then select a dummy file in folder and extract the folder path from that.

spocky commented 1 day ago

As I'm regularly asked about the folder picker, let me make a brief summary regarding how things are broken regarding file access on Android Tv.

-> Great. This means that apps must use scoped storage, but it's only partially supported on Android Tv. So requesting access to a folder is mostly impossible on Android Tv.

-> this is done by adding requestLegacyExternalStorage="true", but is unfortunately only supported up to Android 10.

-> Well this requires the special permission MANAGE_EXTERNAL_STORAGE. This is considered a high risk permission (source). Don't get fooled by this sentence "You should only access the All files access permission when your app cannot effectively make use of the more privacy-friendly best practices". Just look down a little to discover that : "the app’s usage of the permission [...] must be directly tied to the core functionality of the app". Upon Google Play pre-publish review, this will more or less only be accepted for file managers, and surely not for an app's side feature.

So... the app can't access any random folder, and users can't pick a folder they choose. Let's try a hardcoded folder...

This is where I am at the moment. Banging my head against the walls that Google has erected on Android under the protection of privacy. I mean, even with user consent and all my good will, I just can't find any way to let users pick a folder on their device.