【问题标题】:Change Settings.Global.AUTO_TIME to always be 1将 Settings.Global.AUTO_TIME 更改为始终为 1
【发布时间】:2017-09-20 14:40:50
【问题描述】:

我希望 Android 应用相信自动时区设置为开启,即使它实际上并非如此。我读到使用 Settings.Global.AUTO_TIME 变量检测到自动时区,如果自动时区为 ON,则返回值 1,如果自动时区为 OFF,则返回值 0。 使用以下行读取此变量

Settings.Global.getInt(getContentResolver(), Settings.Global.AUTO_TIME)

我读到这个变量只能由系统应用程序设置。有没有办法以某种方式改变这个变量?我可以编写一个允许我更改此变量的应用程序吗?这可以通过root android设备来完成吗?

【问题讨论】:

  • ...........COV?
  • 如果您希望您的应用程序“相信”该设置已设置为打开,即使它不是,那么只需不要读取设置并假设它已打开..
  • @akash93 “我的应用程序”是指我使用的应用程序,而不是我正在制作的某些应用程序。将问题编辑得更清楚。

标签: android android-timepicker android-timer


【解决方案1】:

您可以使用Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME, 1) 从您的应用中设置值。

您需要拥有WRITE_SETTINGS 权限。

【讨论】:

  • 如何获得写权限?不是只有系统应用可以使用吗?
  • 您需要创建一个应用程序并请求该权限。用户应用也可以拥有该权限。
  • 那段代码在用户应用程序上总是返回 false,即使授予了WRITE_SETTINGS 权限,因此它不起作用。来源:developer.android.com/reference/android/provider/…“全局系统设置,包含始终相同地应用于所有已定义用户的首选项。应用程序可以读取这些但不允许写入”
【解决方案2】:

最常见的建议解决方案是使用Settings.Global.putInt(getContentResolver(), Settings.Global.AUTO_TIME, 1)。不过,您最终会在 logcat 中看到此消息:

Setting auto_time has moved from android.provider.Settings.System to android.provider.Settings.Global, value is unchanged.

根据 Android 文档,应用无法修改这些设置。

https://developer.android.com/reference/android/provider/Settings.Global

全局系统设置,包含始终以相同方式应用于所有已定义用户的首选项。应用程序可以读取这些但不允许写入;与“安全”设置一样,这些设置用于用户必须通过系统 UI 或针对这些值的专用 API 显式修改的首选项。

这些设置是只读的,除非您的应用作为系统应用安装或由运行它的设备的制造商签名。

大多数人最终都会根植他们的设备,但还有另一种选择。设备所有者应用可以通过不同的 API 修改全局系统设置。

https://developer.android.com/reference/android/app/admin/DevicePolicyManager#setGlobalSetting(android.content.ComponentName,%20java.lang.String,%20java.lang.String)

你会这样做:

DevicePolicyManager dpm = (DevicePolicyManager) getApplicationContext().getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName component = new ComponentName(getApplicationContext(), DeviceAdminReceiver.class);
dpm.setGlobalSetting(component, Settings.Global.AUTO_TIME, enable ? "1" : "0");

此替代方案主要适用于自制应用程序和基于 Android 的专有产品,因为该设备不能拥有用户帐户。 Play Store 不会以 Device Owner 身份安装应用程序,必须手动完成。

下面是使用 ADB 的方法:

https://developer.android.com/work/dpc/dedicated-devices/cookbook#dev-setup

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 2014-03-04
    • 2016-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多