java - 无法在android studio中更改系统时间
问题描述
我无法在我的 android 应用程序上更改我的系统时间(不使用任何 UI)。
这个想法是:
- 检索当前系统时间
- 将当前时间向前和向后切换几个小时(不使用任何 UI)请注意,android 应用程序将在根设备中运行。
下面是我的代码:
MainActivity.java
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_open = findViewById(R.id.btn_startxk);
btn_open.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
SimpleDateFormat simpdate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
String cur_time = simpdate.format(cal.getTime());
Toast.makeText(MainActivity.this, cur_time, Toast.LENGTH_LONG).show();
TimeManager timeManager = TimeManager.getInstance();
cal.set(Calendar.MILLISECOND, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.HOUR_OF_DAY, 10);
long timeStamp = cal.getTimeInMillis();
timeManager.setTime(timeStamp);
}
任何人都可以帮助纠正我的代码吗?
解决方案
你需要android.permission.SET_TIME。 之后通过 Context.getSystemService(Context.ALARM_SERVICE) 和它的方法 setTime() 使用 AlarmManager。
从 Activity 或 Service 将时间设置为 2010/1/1 12:00:00 的片段:
Calendar c = Calendar.getInstance();
c.set(2010, 1, 1, 12, 00, 00);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());
如果您要更改时区,方法应该非常相似(参见 android.permission.SET_TIME_ZONE 和 setTimeZone)
推荐阅读
- python - 检查 python 列表是否遵循特定的重复模式
- python-3.x - Databricks python notebook 执行的日志文件
- mongodb - Mongodb - $in 模拟查询 AND,而不是 OR
- java - 为什么 SimpleJdbcCall igronre @Transactional 注解
- angular - innerHTML 的正确值并翻译 Angular
- python - 如何可视化 word2vec 输出?
- java - 杰克逊在课堂上将所有空字符串反序列化为空
- azure - Azure Text to Speech 突然开始返回“400 Bad Request”
- python - Python Modular Divison - 如何显示商和余数
- angular - 将插件集成到 froala 编辑器中