当前位置: 首页 > article >正文

Android 重新定义一个广播修改系统时间,避免系统时间混乱

有时候,搞不懂为什么手机设备无法准确定义系统时间,出现混乱或显示与实际不符,需要重置或重新设定一次才行,也是真的够无语的!!

vendor/mediatek/proprietary/packages/apps/MtkSettings/AndroidManifest.xml

<!--无法从设置外部触发。统计数据可以触发它,因为我们发送
对它犹豫不决-->

<receiver android:name=".fuelgauge.batterytip.AnomalyConfigReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.app.action.STATSD_STARTED"/>
                <action android:name="android.intent.action.BOOT_COMPLETED"/>
        <action android:name="com.android.set.system_time"/>
            </intent-filter>
        </receiver>

/vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/fuelgauge/batterytip/AnomalyConfigReceiver.java

//*/broadcast modify system time
import android.provider.Settings;
import android.app.AlarmManager;
//*/

public class AnomalyConfigReceiver extends BroadcastReceiver {
    private static final String TAG = "AnomalyConfigReceiver";

    @Override
    public void onReceive(Context context, Intent intent) {
        if (StatsManager.ACTION_STATSD_STARTED.equals(intent.getAction())
                || Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
            final StatsManager statsManager = context.getSystemService(StatsManager.class);

            // Check whether to update the config
            AnomalyConfigJobService.scheduleConfigUpdate(context);

            try {
                BatteryTipUtils.uploadAnomalyPendingIntent(context, statsManager);
            } catch (StatsManager.StatsUnavailableException e) {
                Log.w(TAG, "Failed to uploadAnomalyPendingIntent.", e);
            }

            if (Intent.ACTION_BOOT_COMPLETED.equals(intent.getAction())) {
                AnomalyCleanupJobService.scheduleCleanUp(context);
            }
        }
    //*/add broadcast modify system time
    if ("com.android.set.system_time".equals(intent.getAction())) {
        String tzId = intent.getStringExtra("timeZone");
        String timeFormat = intent.getStringExtra("timeFormat");
        long when = intent.getLongExtra("when",0);

        android.util.Log.i("TP","com.tyd.system_time tzId = "+tzId);
        android.util.Log.i("TP","com.tyd.system_time timeFormat = "+timeFormat);
        android.util.Log.i("TP","com.tyd.system_time when ="+when);
        Settings.Global.putInt(context.getContentResolver(), Settings.Global.AUTO_TIME_ZONE,0);//【置0重新设置一次】
        context.getSystemService(AlarmManager.class).setTimeZone(tzId);
        android.provider.Settings.System.putString(context.getContentResolver(),
        android.provider.Settings.System.TIME_12_24, timeFormat);
        context.getSystemService(AlarmManager.class).setTime(when);

    }
    //*/

    }
}

 


http://www.kler.cn/a/386608.html

相关文章:

  • 「QT」文件类 之 QDataStream 数据流类
  • 第12章 系统部署
  • 【MYSQL】数据库日志 (了解即可)
  • 随机数
  • datastage在升级版本到11.7之后,部分在11.3上正常执行的SP报错SQLSTATE = 22007: 本机错误代码 = -180
  • 国家网络安全法律法规
  • Redis 的线程模型
  • 【卷积基础】CNN中一些常见卷积(1*1卷积、膨胀卷积、组卷积、深度可分离卷积)
  • 快速学习Django框架以开发Web API
  • Django 框架:全方位技术分析
  • Linux如何更优质调节系统性能
  • 【网络安全 | 并发问题】Nginx重试机制与幂等性问题分析
  • 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
  • 论文阅读-Event-based Visible and Infrared Fusion via Multi-task Collaboration
  • 机器学习,生成式AI ,LLM大模型,人工智能,他们之间的关系是什么?有什么不同?
  • uni-app 实现自定义底部导航
  • 数据库的使用02:SQLServer的连接字符串、备份、还原、SQL监视相关设置
  • 算法训练(leetcode)二刷第二十天 | 93. 复原 IP 地址、78. 子集、90. 子集 II
  • LeetCode34:在排序数组中查找元素第一个和最后一个位置
  • 创新引领,模块化微电网重塑能源格局
  • 使用开源Embedding模型嵌入高维空间向量
  • 设计模式之——单例模式
  • Golang--网络编程
  • 【专题】2024年全球生物医药交易报告汇总PDF洞察(附原数据表)
  • quartz
  • 【计网不挂科】计算机网络期末考试——【选择题&填空题&判断题&简述题】题库(4)