我需要设置当前日期&来自网络提供商或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;


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

答案 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月测试。