Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 其中是在电话存储器中创建的sqlite数据库文件的默认位置_Android_Xamarin - Fatal编程技术网

Android 其中是在电话存储器中创建的sqlite数据库文件的默认位置

Android 其中是在电话存储器中创建的sqlite数据库文件的默认位置,android,xamarin,Android,Xamarin,对于android sqlite数据库本机android的xamarin代码,创建了一个DBfile,如下所示: public static string DBFile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"Test.db"); public static void InitializeLocalDB() {

对于android sqlite数据库本机android的xamarin代码,创建了一个DBfile,如下所示:

    public static string DBFile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),"Test.db");

 public static void InitializeLocalDB()
        {

            if (!File.Exists(DBFile))
            {
                using (var connection = new SQLiteConnection(DBFile))
                {
                    connection.CreateTable<Model.TestItem>();
                }
            }
当我尝试使用文件管理器但找不到文件时,我可以知道在安卓手机中根据上述代码创建的数据库文件的默认位置在哪里吗

文件“test.db”将位于应用程序的沙箱中,因此通常不可访问(除非您使用根设备或模拟器的非生产映像)

在Android上:

System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
映射到(当然要根据您的包名进行调整):

/data/data//数据库/
正如他们在书中所说的那样

在物理设备(而不是模拟器)中,问题在于,有时,根据手机的不同,您无法访问该文件夹。 例如,我有一个普通的Android平板电脑,而不是根。如果应用程序处于调试(非发布)状态,我可以从Android Studio设备资源管理器访问该文件夹

有时它无法通过这种方式访问,例如在某些三星手机中(它说,
运行方式包未知
),因此我使用adb和中描述的方法

编辑:对不起,我没意识到你在问关于Xamarin的事。无论如何,我会留下我的Android Studio设备文件浏览器中的图像,以防万一,它可以帮助你


希望有帮助。

只需将
DBFile
记录到控制台,您就会看到路径。我已将应用部署到我的android设备中,但我在android数据文件夹中没有看到包,我如何在xamarin中创建包以访问dB文件我查看其他应用,软件包文件夹位于/data文件夹中,而不是/data/data/package\u name。它是如何完成的?因此,我当前的应用程序包文件夹位于可访问的/data/data文件夹中,我的理解正确吗?@ThomasKoh每个应用程序中的数据(而不是应用程序本身)都在/data/data/内,您可以在其中看到缓存、数据库、共享prefs等。我刚刚在平板电脑中尝试并拍摄了该屏幕截图。我在我的三星手机上也尝试过同样的方法,但我看不到同样的方法,因为无论出于何种原因,三星都不允许。我尝试安装android终端模拟器来访问该文件夹,有人知道/data/data文件夹的完整路径吗?我问了另一个问题,关于如何更改数据库的位置,这可能是另一种方式。您可以在应用程序中编写一个简单的方法,将.db文件复制到您选择的可访问文件夹中,然后从那里访问它。
System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal)
/data/user/0/com.sushihangover.someApp/files/Test.db
/data/data/<Your-Application-Package-Name>/databases/<your-database-name>