Locus can not write on SD card on Android Marshmallow (6).

Markus Frömmel shared this problem 2 years ago
Solved

Locus can not write on SD card on Android Marshmallow (6).

It is true that it got write protected in kitcat (4.4) but it had been revised on Android 5 and again android 6.

Please update your code to support the new SD card API of Android 6.

Comments (19)

photo
1

Good day Markus,

I wrote about this problem many times. Unfortunately I'm currently unable to find some of my clear explanations, so once more again.

Short: support for write access since Android 5 is not fully featured "write access", just a workaround usable only for some methods.

Long: Locus already use write access to SD card for Android 5 for backup data, vector maps and SRTM data. You may try it on your own in settings > misc > directories. With simple files, that may be used only for read/write, this method is usable. So simple file manager like Total commander may work with this tool. Side effect is, that it's really really slow compare to classic method.

Problem start when you need a random access to files over this new method. But I already have a solution, so it works for example for SRTM files.

But unsolvable problem starts in moment, you need to access basic SQLite database. Unfortunately here do not exists a working solution. So database of points/tracks, all online maps, offline maps created from online maps and some other important parts of Locus, cannot be moved to SD card. It's technically not possible for now.

Hope my explanation is clear. Trust me, I spend on this a few very long days and current solution is best I can do, to save some space in internal memory.

photo
1

Thank you for the explination.


However you are only writing about Android 5. What about the new SD-Card API in Android 6?

photo
1

You are welcome.


Android 6: you mean this feature: http://liliputing.com/2015/10/android-6-0-can-treat-sd-cards-as-internal-storage-at-a-cost.html ? In this case, SD card should work as internal memory, so there should be no need to do something on Locus side.

photo
1

Dear Menion,


thank you for your great effort!!

the interesting thing is: It is actually working just fine on Android 5 from external SD-Card (Good Job on this one!) :-)


Just after Upgrading to Marshmallow it stopped working. With some googling I found out other programmers have the same issue. I believe it has something to do with the new permission modell in Android 6.


I would be ethernaly gratefull if you could look into this issue. Here is an interesting link for example:

http://stackoverflow.com/questions/33139754/android-6-0-marshmallow-cannot-write-to-sd-card

https://groups.google.com/forum/#!topic/eyes-free/rspqjlmu_ss

photo
2

Good day Markus,

interesting if this may cause troubles to you. Because new feature of Android 6 - permissions on request - are already supported by Locus.


On your device, try to open your main settings > applications > Locus Map (Free/Pro) > Perissions. Here are four possible permissions that Locus may request. "Location" and "Storage" are needed. When one of them is disabled, Locus cannot work. Both are requested at start of application. Maybe you have forced Android to disable it for Locus? Two other, "Contacts" and "Microphone" are optional and are requested in Locus when needed.

photo
1

mhhhh ... I checked my permission settings and they are okay.


I am really wondering how it is possible that it works on Android 5 but not 6. I think it is probably a simple mistake which could be fixed.


If I can help you with that in any way I would be more then happy to!

photo
1

I am using Locus on Android 6.0 with app and maps etc on additional SD card memory designated as adoptable storage, all permissions enabled and it all works perfectly.

photo
1

For Marshmallow, using ExtSDCard as a real External Storage like it was by the past is prohibited and locked by our lovely Google.

At this time, to pass trough, you can try ExtSD Fix :

http://forum.xda-developers.com/android/software/fix-extsd-fix-v1-0b-2016-01-18-t3296266

http://forum.xda-developers.com/devdb/project/?id=13505#downloads

If not successful, let me know, i could give some other ways to unlock the Google prohibition.

photo
1

Hi guys,

as I see by posts from Hampson and Fifi, there are alternatives, fine.

Anyway setup of custom directories for backup data, srtm data and vector maps on SD card have to work even with default Android config and latest Locus Map version.

So back to start ... Markus, what does not work? As I read since start this topic, to be true I'm not sure where is a problem. If you select in Locus menu > settings > misc > default directories > directory for mentioned three types (backup, srtm, vector maps), there Locus is still not able to write to SD card (edit: into these three directories of course) ?

photo
1

Dear Menion,


if I start the App I get the following:e352bcb76c4b37f702983176007f96ec


In this menu I can only select the first entry if I want to start the app. After that I go to Settings and find that:


79ceb4660389fcc71c87b6a89315462c


This is on Android 6 (emotion ROM) on a Samsung Galaxy Note 4.

On Android 5 it works without problem.

photo
1

Good day Markus,

exactly same issue I saw on my testing device with Cyanogen Mode 12 ROM. It happen always only after first install and simple solution is, to close Locus and in list of applications, terminate it completely. And then start it again and correct directory is available without any problems.

photo
1

Hi Menion,


I have the same problem as Markus and I tried your fix but it doesn't work for me. Nothing changes; same screen as Markus had/has.

I have a S4 mini with cm13

Is there another way to fix that problem?


Cheers

Karl

photo
photo
1

Good day guys, Karl,


older topic, so let's solve it.


Firstly, please read this new article: help.locusmap.eu/topic/fix-for-external-sd-card-on-marshmallow . This explain why new system that Google offered is useless for Locus Map.


So if you do not have rooted device, there is no change to use Locus Map fully on SD card. With root, there seems to be option described in this topic http://help.locusmap.eu/topic/fix-for-external-sd-card-on-marshmallow . But I have never tried it, so cannot guarantee.

photo
1

Hi Menion,

a short Update from my side. I changed to a different ROM and it solved it!

Old Rom:


  • AOSP -Based Android 6.0
  • rooted
  • Galaxy Note 4 (910F)

new Rom:


  • Samsung Touch Wiz-Based Android 6.0
  • rooted
  • Galaxy Note 4 (910F)

as you can see, tho only difference is the Rom Base (Samsung vs. AOSP). Android Version and rooted-Status is identical. Not Sure why Locus doesn't work @ ASOP but other Apps do ...

Especially if it is rooted it should be able to do anything but seems it is not even trying to escalate priviliges.

Your "trick" didn't work for me either. Maybe it would have been necessary to delete the folder before trying? Because I already had the Folder on my SD-Card ...

(Like this: Delete/Rename Folder > Force-Close > Reopen > Select Folder > Force-Close > Delete Folder > Copy back old folder/Content ?)

However I can not test it now, since I run now Samsung ROM.

To Conclude: I don't think there is a Incompatibility between Locus vs. Android 6 but rather Locus vs. the current Version of AOSP/Cyanogen (Which is kind of a big deal, since so many people using it). The Question is what is Cyanogen & Co doing differently then Samsung ans Google (?)(confirmation needed).

Cheers, Markus

photo
1

Good day Markus,

thanks for extra information. Currently I do not use cyanogenmode on daily basis, but I'll try to check it one I get also stable version of new CM13 for older SGS2 ... if there will be such update ever.


Anyway I'm glad you found an working solution.

photo
1

Hi Menion and Markus,


Just for info about Locus and CyanogenMod :

My smartphone is a Samsung Galaxy S5 Mini (SM-G800F) rooted running CyanogenMod 13 (Android 6.0.1) and last versions of Locus, and everything works perfectly.

The only things i've added are the tricks to fix Marshmallow Ext SD Card limitations that i've described here : http://help.locusmap.eu/topic/fix-for-external-sd-card-on-marshmallow#comment-30352


Cheers

photo
1

Hello users,


i have the full Text with the workaround to use Locus with ExtSDCard on Android 6.0.1 Marshmallow.

http://forum.xda-developers.com/xposed/modules/xposed-marshmallow-sd-fix-write-t3403263/page25#post69415913


Quicksteps:

Install [ExtSD] ExtSD Fix (v2.9b - 2016-06-09) by rufus.wilson

http://forum.xda-developers.com/android/software/fix-extsd-fix-v1-0b-2016-01-18-t3296266


I download and use "ExtSD Fix 1.9 latest stable Version"


Open "TWRP" app and go to the menu "Install" and select the "ExtSD_Fix_rw-signed-v1.9b.zip" Zip-File.


IMPORTANT for TWRP usw:


Only install with "TWRP" App over the Menu "Install“ who the Manual are write are not work.

You must open the menu „Install TWRP“ und select you Device and the „Recovery Version to install“ and download it In my case search " S5" for Samsung Galaxy S5 (SM-G900F).

Now it download and install „twrp-3.0.2-2.klte.img“.


Only now the Android Device boot with the TWRP Recovery-Mod.


Now i have Write Access for alle Apps on my extSD Card


It works fine with my Samsung Galaxy S5 SM-G900F (TouchWiz) mit Stock ROM (Ohne Provider Branding) Android 6.0.1 (Marshmallow, API 23)


The Solution with Edit the "packages.xml" are NOT work with my Device on Android 6.0.1!!!


Dear


Christian S.

photo
1

Thanks Christian,

maybe @Michal finds your description useful as well and add it to some advanced section to our manual. Working tools how to make app working with data from SD card, are always welcome.

photo
photo
1

Good stuff - for rooted devices ...