URI: 
       tandroid: move wallet data to internal storage. - electrum - Electrum Bitcoin wallet
  HTML git clone https://git.parazyd.org/electrum
   DIR Log
   DIR Files
   DIR Refs
   DIR Submodules
       ---
   DIR commit 4c7bbb4e865aaf533d4c37d967771e0ac2ca6ede
   DIR parent 671fe7378888117b6ade0a941a8bba2779702999
  HTML Author: ThomasV <thomasv@electrum.org>
       Date:   Tue,  8 Mar 2016 04:55:28 +0100
       
       android: move wallet data to internal storage.
       
       Diffstat:
         M gui/kivy/Readme.txt                 |       5 +++++
         M lib/blockchain.py                   |       2 +-
         M lib/util.py                         |      47 +++++++++++++++++++++++++------
       
       3 files changed, 45 insertions(+), 9 deletions(-)
       ---
   DIR diff --git a/gui/kivy/Readme.txt b/gui/kivy/Readme.txt
       t@@ -11,3 +11,8 @@ If something in included modules like kivy or any other module changes
        then you need to rebuild the distribution. To do so:
        
           `rm -rf electrum/.buildozer/android/platform/python-for-android/dist`
       +
       +
       +Note:
       +  python-for-android must be patched with:
       +  git pull git@github.com:denys-duchier/python-for-android.git fix-recursive-delete
   DIR diff --git a/lib/blockchain.py b/lib/blockchain.py
       t@@ -102,7 +102,7 @@ class Blockchain(util.PrintError):
                return hash_encode(Hash(self.serialize_header(header).decode('hex')))
        
            def path(self):
       -        return os.path.join(self.config.path, 'blockchain_headers')
       +        return util.get_headers_path(self.config)
        
            def init_headers_file(self):
                filename = self.path()
   DIR diff --git a/lib/util.py b/lib/util.py
       t@@ -196,6 +196,44 @@ def profiler(func):
            return lambda *args, **kw_args: do_profile(func, args, kw_args)
        
        
       +def android_ext_dir():
       +    import jnius
       +    env = jnius.autoclass('android.os.Environment')
       +    return env.getExternalStorageDirectory().getPath()
       +
       +def android_data_dir():
       +    import jnius
       +    PythonActivity = jnius.autoclass('org.renpy.android.PythonActivity')
       +    return PythonActivity.mActivity.getFilesDir().getPath() + '/data'
       +
       +def android_headers_path():
       +    path = android_ext_dir() + '/org.electrum.electrum/blockchain_headers'
       +    d = os.path.dirname(path)
       +    if not os.path.exists(d):
       +        os.mkdir(d)
       +    return path
       +
       +def android_check_data_dir():
       +    """ if needed, move old directory to sandbox """
       +    ext_dir = android_ext_dir()
       +    data_dir = android_data_dir()
       +    old_electrum_dir = ext_dir + '/electrum'
       +    if not os.path.exists(data_dir) and os.path.exists(old_electrum_dir):
       +        import shutil
       +        new_headers_path = android_headers_path()
       +        old_headers_path = old_electrum_dir + '/blockchain_headers'
       +        if not os.path.exists(new_headers_path) and os.path.exists(old_headers_path):
       +            print_error("Moving headers file to", new_headers_path)
       +            shutil.move(old_headers_path, new_headers_path)
       +        print_error("Moving data to", data_dir)
       +        shutil.move(old_electrum_dir, data_dir)
       +    return data_dir
       +
       +def get_headers_path(config):
       +    if 'ANDROID_DATA' in os.environ:
       +        return android_headers_path()
       +    else:
       +        return os.path.join(config.path, 'blockchain_headers')
        
        def user_dir():
            if "HOME" in os.environ:
       t@@ -205,14 +243,7 @@ def user_dir():
            elif "LOCALAPPDATA" in os.environ:
                return os.path.join(os.environ["LOCALAPPDATA"], "Electrum")
            elif 'ANDROID_DATA' in os.environ:
       -        try:
       -            import jnius
       -            env  = jnius.autoclass('android.os.Environment')
       -            _dir =  env.getExternalStorageDirectory().getPath()
       -            return _dir + '/electrum/'
       -        except ImportError:
       -            pass
       -        return "/sdcard/electrum/"
       +        return android_check_data_dir()
            else:
                #raise Exception("No home directory found in environment variables.")
                return