【问题标题】:Get Applicaton Path for iOS and Android获取适用于 iOS 和 Android 的应用程序路径
【发布时间】:2017-08-31 00:28:35
【问题描述】:

我曾经将 SQLite 用于我的 android 应用程序。我制作了一个 Queries.cs 文件,其中存储了所有查询(createDatabase、insertDatabase 等)。我有一个字符串作为类变量,我在其中存储了我想放入 .db 文件的文件夹的路径。它看起来像这样:

private string folder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);

现在我想要与应用程序所在的文件夹相同或至少是所在的文件夹。但这次我需要一种 iOS 支持并形成 Android 的方法,因为它对于这个项目是必要的。你知道我该怎么做吗?

在此先感谢

【问题讨论】:

    标签: c# sqlite xamarin.ios xamarin.android xamarin.forms


    【解决方案1】:

    您应该使用依赖服务来获取平台特定的文件路径。可以在 here 找到有关如何在 Xamarin.Forms 中使用 SQLite 的精彩教程,该教程也可用于特定于平台的代码。

    【讨论】:

      【解决方案2】:

      Xamarin.Forms 中没有为此提供统一的方法。您可以利用DependencyService 从您的共享代码中访问它,并且仍然可以根据平台进行区分。这可能看起来像这样,在您的共享代码中定义一个接口:

      public interface IFilesystemService
      {
          string GetAppRootFolder();
      }
      

      现在像这样在 Android 上创建一个实现:

      public class FilesystemServiceAndroid : IFilesystemService
      {
          public string GetAppRootFolder()
          {
              return System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
          }
      }
      

      对于 iOS,这个想法是相同的,只是实现可能不同。当然,您可以根据需要扩展此类,例如具有读取或写入文件的能力。

      不要忘记使用[assembly: Xamarin.Forms.Dependency (typeof (FilesystemServiceAndroid ))] 属性来装饰您的实现命名空间。像这样:

      [assembly: Xamarin.Forms.Dependency (typeof (FilesystemServiceAndroid ))]
      namespace YourAppName
      {
          public class FilesystemServiceAndroid : IFilesystemService
          {
              // ... code here
          }
      }
      

      您现在可以像这样在共享代码中检索它:var path = DependencyService.Get<IFilesystemService>().GetAppRootFolder();

      【讨论】:

      • [assembly: Xamarin.Forms.Dependency (typeof (FilesystemServiceAndroid))] 我必须把它放在哪里?我是新手,对不起。我仍然得到空回
      • 我似乎仍然有错误。但这次是使用 SQLiteConnection。你觉得你能帮我吗? :/ 我已经截取了错误:puu.sh/va49n/f4431e525c.png
      猜你喜欢
      • 2018-01-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-17
      • 1970-01-01
      • 2011-04-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多