package Ġvin ho . andre . android . com . ger enci ador vin ho . util . function Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Environment Ċ import Ġjava . io . File Ċ import Ġjava . io . FileInputStream Ċ import Ġjava . io . File OutputStream Ċ Ċ fun Ġbackup Database ( ĊĠĠĠ Ġcontext : ĠContext , ĊĠĠĠ Ġdatabase Name : ĠString Ċ ) Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsd Ġ= ĠEnvironment . get External Storage Directory () ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= ĠEnvironment . getData Directory () ĊĊĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= Ġcontext . application Info . packageName ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sd . can Write ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent DB Path Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"// data // % s // databases // % s ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdatabase Name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackup DB Path Ġ= ĠString . format ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" debug _% s . sqlite ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent DB Ġ= ĠFile ( data , Ġcurrent DB Path ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbackup DB Ġ= ĠFile ( sd , Ġbackup DB Path ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( current DB . exists ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsrc Ġ= ĠFileInputStream ( current DB ). channel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdst Ġ= ĠFileOutputStream ( backup DB ). channel ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . transfer From ( src , Ġ 0 , Ġsrc . size ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsrc . close () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdst . close () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠError ( e ) ĊĠĠĠ Ġ} Ċ }