【问题标题】:Android: API to access and/or backup system settingsAndroid:用于访问和/或备份系统设置的 API
【发布时间】:2012-10-02 06:20:56
【问题描述】:

Android 是否将其所有系统设置存储在一个文件中?是否可以访问此文件并可能将其复制到 SD 卡。如果存在可以调用的 API 将所有系统设置复制到 SD 卡并允许您从 SD 卡恢复这些设置,那就太好了。如果您想使用相同的系统设置设置一部新手机(或一次重置),这可能会很有用。

不确定 getConfiguration 方法是否这样做。它的文档没有提供任何细节:

http://developer.android.com/reference/android/provider/Settings.System.html#getConfiguration(android.content.ContentResolver, android.content.res.Configuration)

通过将此功能封装在 API 中,应用不必担心每次发布包含新系统设置的新 Android 版本时自行更新。

【问题讨论】:

    标签: android backup settings


    【解决方案1】:

    内部设置存储在数据库中,您可以通过设置内容提供程序访问它们。内容提供者强制执行权限:您需要一个权限才能使用它,一些设置是只读的,对于一些您需要另一个权限才能更改它们,还有一些只能由系统修改(即,使用设置应用程序 UI)。这是设计使然。直接更改和/或覆盖设置势必会破坏很多东西。此外,升级到新的操作系统版本会添加、删除或弃用设置,因此它会负责正确的迁移。同样,如果您升级操作系统,盲目覆盖可能会是一场灾难。

    希望您现在明白为什么您提出的 API 是个坏主意。

    Android 确实会将一些设置(例如经常使用 WiFi 接入点和已安装应用程序列表(来自 Google Play))保存到“云”,方法是将它们与您的 Google 帐户相关联。如果您重置手机,这些设置会自动恢复。使用标准备份系统可以为用户应用程序实现相同的目标。

    【讨论】:

    • 我只对备份系统设置感兴趣。您是说设置内容提供程序提供了处理从一个版本的操作系统迁移到另一个版本的方法,同时考虑到什么是新的、修改的和弃用的?还是我必须自己在代码中执行此操作?
    • 是的。更新操作系统后首次启动时观看 logcat。即使您可以备份它们,您也无权更改其中一些,因此这不适用于非系统应用程序。
    • 我对更新操作系统不感兴趣。我说的是使用现有手机并将设置更新为另一部手机上的设置。一个好的 API 会接受任何文件,并简单地忽略它不支持的设置。如果用户已授予进行这些修改的权限,该应用程序还将拥有对任何设置执行任何操作的完全权限。
    • 您可以使用adb backup/restore 来实现类似的功能,但是它故意不备份某些内容。至于权限,您不能将系统级权限授予常规应用程序。当然,欢迎您根据需要设计一个“好的 API”并提交给 AOSP。
    猜你喜欢
    • 2016-01-18
    • 2019-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-19
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多