Announcements

Help Wizard

Step 1

NEXT STEP

FAQs

Please see below the most popular frequently asked questions.

Loading article...

Loading faqs...

VIEW ALL

Ongoing Issues

Please see below the current ongoing issues which are under investigation.

Loading issue...

Loading ongoing issues...

VIEW ALL

Issue with storage option switching from SD Card to internal

Plan

Premium

Country

US 

Device

Moto X4

Operating System

Android Pie

 

My Question or Issue

 This happened with my last phone, Samsung S7 running Oreo (or whatever the most recent OS is) but it was fixed when I got the Moto X4. I like to keep a lot of songs downloaded offline because my service is terrible and I also spend a lot of time in the mountains. Before I I update my phone to the new Android Pie OS there was no problems. Now everytime I reset my phone I think spotify cannot see my SD card at first and tries to download all the music to its internal storage and I have to go back in and tell it to store it in the SD card. That is extremely annyoing but not the end of the world. What is really frustrating is that I think all of the downloaded songs are still on the SD card and just keep redownloading and taking up space. Eventually this will cause me to reformat the card which will be a major pain for me since I store a large amount of photos on there also. Is anyone else have this problem? I have already uninstalled and reinstalled the application so any other suggestions or help?

Hey there.

 

We just wanted to let you know that we've looked into this with the right folks now.

 

We are currently trying to resolve the issue. We don't have a timeframe for a fix, but we're really glad you let us know about this. If you have any other questions, just let us know!

 

Keep your app up-to-date and have a nice day 🙂

Comments
leminsc8

The Problem exist mor than 2 Years.

I think they don't fix the issu soon. 😵

 

 

WillianWRM

@dgs2-q_s9hk3hthere is no need to kernel access, just wait for SD to be accessible instead of failing at first try, it IS that simple.

 

And this issue is from 2019 so it's a 5 year bug, I don't think they care about it so no fix; there are some workaround like @dgs2-q_s9hk3h posted but they may or may not work, it depend on your phone manufacturer and model.

dgs2-q_s9hk3h
How do you wait for sd card without kernel access?
ziul123

@dgs2-q_s9hk3h I don't see why you can't just use Environment.getExternalStorageState to check the state of the sd card, and prompt the user for action if the sd card is not available. The user could then choose to download *everything* to internal storage (the current solution) or to just wait for a few seconds.

 

dgs2-q_s9hk3h
How do you do that without kernel access? Things need a trigger you can't
just tell it to wait until sd card is mounted because how is it going to
know if the sd card is mounted? It has to query the system which is the
kernel. So like I said all they can do is set the app to not load until the
user loads it. But when you have 100 million users and 10 000 of them have
this issue, an issue they can solve themselves and the only solution is to
inconvenience 99.99 million other users its not going to happen..... It
doesn't make business sense especially because none of the newer generation
of phones have sd card slots. They're being phased out.....
ziul123

@dgs2-q_s9hk3h how do you do what without kernel access? Wait a few seconds? You don't need to, you just wait a few seconds. If, after the wait, the sd card is still not available, you just prompt the user again. This behaviour would have no impact on users who don't use an sd card. Yes, this issue only affects a minority of users, but it still affects users, and could be easily fixed. They don't fix it because they don't care.

WillianWRM

@dgs2-q_s9hk3hhere a simple how to in C#:

void WaitSDReady(CancellationToken cancellation)
{
    // We will try it forever and ever
    while (true)
    {
        try
        {
            // Trying to access file in SD card (example only)
            using FileStream stream = new(@"DB file in the SD card or any other file we know it does exists for sure", FileMode.Open);

            // Everything looks great
            return;
        }

        // Ops, not ready yet
        catch {; }

        // Let try again but not so fast
        cancellation.WaitHandle.WaitOne(1000);

        // Check if it was canceled by whatever soever
        cancellation.ThrowIfCancellationRequested();
    }
}

 I did write it in like 3 minutes, it should wait for the SD to be ready before continue AND has a cancellation control that can be used if for some other reason it's no more necessary, like when user changed where to download.

You can even run it in a async thread and generate an event when it's ready.

dgs2-q_s9hk3h
You obviously don't understand linux/unix based systems that wait a few
seconds is a kernel boot parameter... And again it would affect non sd card
phones because non sd card phones have the same operating system with the
same external mounting system so you risk starting an error chain. Where
it continues to look for the sd card forever....
WillianWRM

Them just stop checking such thing during boot, wait for some user interaction or even make it as an event with threads.

ziul123

@dgs2-q_s9hk3h are you trying to imply that you need to have kernel access to *sleep* in linux based systems? What? The linux syscall manuals say otherwise:

 

> man 2 nanosleep

NANOSLEEP(2)

#include <time.h>

int nanosleep(const struct timespec *req, struct timespec *rem);

nanosleep() suspends the execution of the calling thread until either at least the time specified in *req has elapsed, or the delivery of
a signal that triggers the invocation of a handler in the calling thread or that terminates the process.

 

Can you not use linux syscalls on Android? And if not, is there no API call for a sleep function?

It would also *not* affect users who don't use sd cards, because spotify already stores this information. A simple if statement can check if the users set an sd card, and, if not, just initialize the app normally. If the user set an sd card but it is not currently available, prompt the user for what to do.

 

(also @WillianWRM how do you write a code block in this forum? I can't find the option)