android修改系统时区

 动态注册广播接收器必须有实例存在
静态不要实例存在
 
设置系统时区:

AlarmManager mAlarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
mAlarmManager.setTimeZone("GMT+08:00");

设置时区需要在manifest.xml中增加如下权限:
<!-- 允许设置时区-->
<uses-permission android:name="android.permission.SET_TIME_ZONE" />
 
package com.lzh.modeify;

import java.util.Calendar;
import java.util.Timer;

import android.R.integer;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.IBinder;
import android.util.Log;

public class ZoneService extends Service {
    private static final String ACTION_DATE_CHANGED = Intent.ACTION_DATE_CHANGED;
    private static final String ACTION_TIME_CHANGED = Intent.ACTION_TIME_CHANGED;

    private BroadcastReceiver TimerChangered = new BroadcastReceiver() {

        @Override
        public void onReceive(Context context, Intent intent) {

            Calendar c = Calendar.getInstance();// 可以对每个时间域单独修改

//            int year = c.get(Calendar.YEAR);
//            int month = c.get(Calendar.MONTH);
//            int date = c.get(Calendar.DATE);
            int hour = c.get(Calendar.HOUR_OF_DAY);
            int minute = c.get(Calendar.MINUTE);
            int second = c.get(Calendar.SECOND);

            Log.v("time", Integer.toString(hour)+Integer.toString(minute)+Integer.toString(second));
        }
    };

    private BroadcastReceiver stopServiceReceiver = new BroadcastReceiver() {

        public void onReceive(android.content.Context context, Intent intent) {
            ZoneService.this.stopSelf();
            ZoneService.this.unregisterReceiver(stopServiceReceiver);
        };
    };

    @Override
    public void onCreate() {

        super.onCreate();
        Log.i("liujun", "后台进程被创建。。。");
        IntentFilter intentFilter = new IntentFilter("closeService");
        ZoneService.this.registerReceiver(stopServiceReceiver, intentFilter);
        // 服务启动广播接收器,使得广播接收器可以在程序退出后在后天继续执行,接收系统时间变更广播事件

        ZoneService.this.registerReceiver(TimerChangered, new IntentFilter(
                Intent.ACTION_TIME_TICK));

    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {

        Log.i("liujun", "后台进程。。。");
        return super.onStartCommand(intent, flags, startId);

    }

    @Override
    public void onDestroy() {

        Log.i("liujun", "后台进程被销毁了。。。");
        super.onDestroy();
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO 自动生成的方法存根
        return null;
    }

}

 
    MainActivity.this.sendBroadcast(new Intent("closeService"));
 
    MainActivity.this.startService(new Intent(MainActivity.this,ZoneService.class));

转载于:https://www.cnblogs.com/lzh-Linux/p/4455932.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值