Here App.xaml.cs's code ``` using SQLite; using System; using System.IO; using Xamarin.Forms; using Xamarin.Forms.Xaml; namespace App111 { public partial class App : Application { SQLiteAsyncConnection Database; public App() { InitializeComponent(); Database = new SQLiteAsyncConnection(Constants.DatabasePath, Constants.Flags); var result = Database.CreateTableAsync(); MainPage = new MainPage(); } protected override void OnStart() { } protected override void OnSleep() { } protected override void OnResume() { } } internal class TodoItem { public string ID { get; set; } } public static class Constants { public const string DatabaseFilename = "Fruits.db"; public const SQLite.SQLiteOpenFlags Flags = // open the database in read/write mode SQLite.SQLiteOpenFlags.ReadWrite | // create the database if it doesn't exist SQLite.SQLiteOpenFlags.Create | // enable multi-threaded database access SQLite.SQLiteOpenFlags.SharedCache; public static string DatabasePath { get { var basePath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); return Path.Combine(basePath, DatabaseFilename); } } } } ``` here is MainPage.xaml.cs ``` using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace App111 { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } private void Button_Clicked(object sender, EventArgs e) { DependencyService.Get().CopyDB(); //Navigation.PushModalAsync(new Page1()); } } } ``` Here is MainPage.xaml ``` ``` Here is ICopy interface. ``` using System; using System.Collections.Generic; using System.Text; namespace App111 { public interface ICopy { void CopyDB(); } } ``` Then open your App111.Android project Find MainActivity.cs ``` using System; using Android.App; using Android.Content.PM; using Android.Runtime; using Android.OS; using Google.Android.Material.Snackbar; using Android.Views; using Android.Content; namespace App111.Droid { [Activity(Label = "App111", Icon = "@mipmap/icon", Theme = "@style/MainTheme", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode | ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize )] public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); var path= Android.OS.Environment.ExternalStorageDirectory.AbsolutePath; var InternalPath= Android.App.Application.Context.GetExternalFilesDir("").AbsolutePath; if (Build.VERSION.SdkInt >= BuildVersionCodes.R) { if (!Android.OS.Environment.IsExternalStorageManager) { Snackbar.Make(FindViewById(Android.Resource.Id.Content), "Permission needed!", Snackbar.LengthIndefinite) .SetAction("Settings", new MyOnClickListener(this)).Show(); } } Xamarin.Essentials.Platform.Init(this, savedInstanceState); global::Xamarin.Forms.Forms.Init(this, savedInstanceState); LoadApplication(new App()); } public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults) { Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults); base.OnRequestPermissionsResult(requestCode, permissions, grantResults); } } internal class MyOnClickListener : Java.Lang.Object, View.IOnClickListener { private MainActivity mainActivity; public MyOnClickListener() { } public MyOnClickListener(MainActivity mainActivity) { this.mainActivity = mainActivity; } public void OnClick(View v) { // throw new System.NotImplementedException();ACTION_MANAGE_APP_ALL_FILES_ACCESS_PERMISSION try { mainActivity.StartActivity(new Intent( Android.Provider.Settings.ActionManageAllFilesAccessPermission, Android.Net.Uri.Parse("package:" + Android.App.Application.Context.PackageName))); } catch (Exception ex) { Intent intent = new Intent(); intent.SetAction(Android.Provider.Settings.ActionManageAllFilesAccessPermission); mainActivity.StartActivity(intent); } } } } ``` create a class called MyCopyService.cs ``` using Android.App; using Android.Content; using Android.OS; using Android.Runtime; using Android.Views; using Android.Widget; using App111.Droid; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using Xamarin.Forms; [assembly: Dependency(typeof(MyCopyService))] namespace App111.Droid { class MyCopyService : ICopy { public void CopyDB() { Java.IO.File mediaStorageDir = new Java.IO.File(Android.OS.Environment.GetExternalStoragePublicDirectory(Android.OS.Environment.DirectoryDocuments) + "/MyDB"); if (!mediaStorageDir.Exists()) { var tt = mediaStorageDir.Mkdirs(); if (mediaStorageDir.Mkdirs() == false) { var fail = "failed to create"; } } var directoryPath = mediaStorageDir.AbsolutePath; var dbPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.ApplicationData), "Fruits.db"); FileInfo file = new FileInfo(dbPath); var dbName = file.Name; var fullFileName = string.Concat("/", dbName ); var newpath = string.Format("{0}{1}", directoryPath, fullFileName); byte[] dbFile = System.IO.File.ReadAllBytes(dbPath); System.IO.File.WriteAllBytes(newpath, dbFile); } } } ```