“自动日期和时间”以编程方式设置开/关

时间:2015-09-07 14:23:40

标签: android datetime networking time

我需要设置当前日期&来自网络提供商或gps提供商的时间
我已经尝试了这个但没有工作




  String timeSettings = android.provider.Settings.System.getString( 
 this.getContentResolver(),
 android.provider.Settings.System.AUTO_TIME);
 if(timeSettings.contentEquals(“0”)){
 android.provider.Settings.System.putString(
 this.getContentResolver(),
 android.provider.Settings.System.AUTO_TIME,“1”);
 }
 timeSettings = android.provider.Settings.System.getString(
 this.getContentResolver(),
 android.provider.Settings.System.AUTO_TIME);
  
& #xA;


和权限




 < uses-permission android:name =“android.permission.WRITE_SETTINGS”/>& #xA;  




但是没有工作,请告诉我出了什么问题,请告诉我们是否有其他解决方案




2 个答案:

答案 0 :(得分:8)

只有系统应用程序可以设置值,即使安装的应用程序具有权限,也无法更改。

选中自动时间优先时要读取的代码

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

选中自动时区pref 时要读取的代码

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

您可以要求用户设置它们是否关闭。

您可以通过阅读所需的值以编程方式设置时区和时区。

以下是设定时间的代码

long now = // time set from timepicker or servertime 
int year, month, day; // from timepicker

Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, day);
AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

am.setTime(now);

需要许可:<uses-permission android:name="android.permission.SET_TIME" />

答案 1 :(得分:0)

作为更新的答案,此方法适用于Settings.Global

 @RequiresPermission("android.permission.WRITE_SETTINGS")
    public void setSettingsAutomaticDateTimeIfNeeded() {
        String timeSettings = android.provider.Settings.Global.getString(
                this.getContentResolver(),
                android.provider.Settings.Global.AUTO_TIME);
        if (timeSettings.contentEquals("0")) {
            android.provider.Settings.Global.putString(
                    this.getContentResolver(),
                    android.provider.Settings.Global.AUTO_TIME, "1");
        }
    }

于2018年10月测试。