首页 > 解决方案 > 无法在android studio中更改系统时间

问题描述

我无法在我的 android 应用程序上更改我的系统时间(不使用任何 UI)。

这个想法是:

  1. 检索当前系统时间
  2. 将当前时间向前和向后切换几个小时(不使用任何 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);

    }

任何人都可以帮助纠正我的代码吗?

标签: javaandroidandroid-studiodatetime

解决方案


你需要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)


推荐阅读