【问题标题】:Access Shared Preferences externally / Store a value into a new file and access it externally从外部访问共享首选项/将值存储到新文件中并从外部访问它
【发布时间】:2019-07-18 15:35:33
【问题描述】:

我有以下两种方法,我正在使用它们在本地存储一个特殊值,并能够在应用程序重新启动时访问它:

(在本地存储值:)

private void SaveSet(string key, string value)
{
    ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);

    ISharedPreferencesEditor prefEditor = prefs.Edit();

    prefEditor.PutString(key, value);
    // editor.Commit();    // applies changes synchronously on older APIs
    prefEditor.Apply();        // applies changes asynchronously on newer APIs
}

(再读一遍:)

private string RetrieveSet(string key)
{
    ISharedPreferences prefs = PreferenceManager.GetDefaultSharedPreferences(this);
    return prefs.GetString(key, null);
}

这非常有效。现在是否可以在外部访问和编辑此共享首选项?不幸的是,我在文件夹中搜索时找不到任何文件

Phone\Android\data\com.<company_name>.<application_name>\files

也不在其他任何地方。在将手机连接到它之后,我想/尝试从我的计算机上编辑这个值。这可能吗?

或者:任何人都可以告诉我如何在上面的给定路径中创建一个新文件,以编程方式写入/读取它以及它如何保持在那里,即使应用程序已关闭/再次启动?这样我就可以用我的电脑编辑这个文件了?

我尝试使用以下代码,但不幸的是它不起作用/没有创建文件,或者至少我在上面的给定路径中看不到它:

//"This code snippet is one example of writing an integer to a UTF-8 text file to the internal storage directory of an application:"
public void SaveValueIntoNewFile(int value)
{
    var backingFile = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "newFile.txt");
    using (var writer = System.IO.File.CreateText(backingFile))
    {
        writer.WriteLine(value.ToString());
    }
}

对每一个答案都非常高兴,提前致谢并致以最诚挚的问候

【问题讨论】:

    标签: file io xamarin.android storage read-write


    【解决方案1】:

    您要查找的是 Android 存储共享首选项文件的位置,以供使用默认 PreferenceManager 的应用程序使用。

    我会参考this SO post,它很好地回答了你的问题

    SharedPreferences 存储在应用数据文件夹中的 xml 文件中, 即

    /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PREFS_NAME.xml

    或默认首选项:

    /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml

    在运行时添加的 SharedPreferences 不存储在 Eclipse 中 项目。

    注意:访问 /data/data/ 需要超级用户 特权

    【讨论】:

    • 您好,非常感谢您的回答。有没有办法在 Visual Studio 中做到这一点?你知道吗?不幸的是,我使用 Xamarin.Android 来创建我的应用程序,并且在您链接的帖子中,他们使用 Eclipse。^^
    【解决方案2】:

    一个简单的方法是使用Android Device Monotor,你可以点击Tools打开它--> android-->Android Device Monotor... 例如:

    我设备中的路径如下:

     /data/data/YOUR_PACKAGE_NAME/shared_prefs/YOUR_PACKAGE_NAME_preferences.xml
    

    我们注意到图片右上角的三个按钮。 第一个用于Pull a file from the device,第二个用于Push a file onto the device,最后一个用于删除preferences.xml文件。

    这样我们就可以将当前设备中的preferences.xml文件拉取到我们的电脑中并根据需要进行编辑,然后将更新后的preferences.xml再次推送到文件夹中。然后我们将得到preferences.xml文件的值。

    【讨论】:

    • 您好,非常感谢您的回答和帮助。不幸的是,我正在使用 Visual Studio - Xamarin.Android ^^ 这里也有类似的方法吗?你知道吗?
    • @Sam 是的,我只是在谈论 Visual Studio-Xamarin.Android。
    • 啊,等等,好吧...抱歉 xD 有点困惑,因为我从未见过你显示的那个界面^^ 我在哪里可以找到Tools?在我的 Visual Studio 菜单栏中,有FileEditViewProjectBuildDebugTeamExtrasTest、@987654340 987654341@和Help
    • 你的VS是什么版本的? R-tools 是否有android-->Android Device Monotor.. 的选项?工具菜单在我电脑上的 VS2017 和 2019 中可用。
    • 我正在使用 Visual Studio 2017。R-Tools 似乎完全不同,下拉菜单项是:DrawingsDataWindowInstall R-Client from Microsoft、@ 987654349@、Set Up Remote-RRTVS-Documentation and ExamplesR-DocumentationFeedbackEditor-OptionsOptionsData Science Settings
    猜你喜欢
    • 2014-11-20
    • 2018-10-23
    • 2017-01-19
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 1970-01-01
    相关资源
    最近更新 更多