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

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.lryc.cn/news/481246.html

相关文章:

  • 第3章:角色扮演提示-Claude应用开发教程
  • 【FAQ】HarmonyOS SDK 闭源开放能力 —Vision Kit
  • 【问题解决】Tomcat由低于8版本升级到高版本使用Tomcat自带连接池报错无法找到表空间的问题
  • Git LFS
  • 基于Redis缓存机制实现高并发接口调试
  • 数字化转型实践:金蝶云星空与钉钉集成提升企业运营效率
  • Flutter 鸿蒙next 中使用 MobX 进行状态管理
  • 1.62亿元!812个项目立项!上海市2024年度“科技创新行动计划”自然科学基金项目立项
  • Redis数据库测试和缓存穿透、雪崩、击穿
  • [vulnhub] DarkHole: 2
  • 《XGBoost算法的原理推导》12-2 t轮迭代中对样本i的预测值 公式解析
  • ./bin/mindieservice_daemon启动成功
  • Linux: network: ip link M-DOWN的具体含义是什么?
  • Spring中的过滤器和拦截器
  • leetcode20.括号匹配
  • Unity性能优化-具体操作
  • 【嵌入式开发——ARM】1ARM架构
  • Linux中.NET读取excel组件,不会出现The type initializer for ‘Gdip‘ threw an exception异常
  • mmclassification的配置文件样本
  • Java基础——类和对象的定义链表的创建,输出
  • Linux应用项目之量产工具(一)——显示系统
  • Python小白学习教程从入门到入坑------第二十九课 访问模式(语法进阶)
  • 使用 PageHelper 在 Spring Boot 项目中实现分页查询
  • 深度学习-张量相关
  • 电脑提示xinput1_3.dll丢失怎么解决,分享6种有效的解决方法
  • 【计网】数据链路层笔记
  • 蓝牙FTP 协议详解及 Android 实现
  • 【前端】Svelte:动画效果
  • 2024系统架构师--论基于架构的软件设计方法(ABSD)及应用(论文范文)
  • ORU 的 Open RAN 管理平面 (M 平面)