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);

    }
    //*/

    }
}

 

上一篇:实验5:网络设备发现、管理和维护


下一篇:使用Flask部署自己的pytorch模型(猫品种分类模型)