是否有一个android事件监听器可以更改设备的时区?

时间:2015-07-14 05:30:22

标签: android android-intent

我有一个Android应用程序。每当用户更改设备时区时,我都希望事件监听器通知我?我怎么能完成它?

3 个答案:

答案 0 :(得分:3)

使用以下意图过滤器注册接收器

filter = new IntentFilter();
filter.addAction(Intent.ACTION_TIME_TICK);
filter.addAction(Intent.ACTION_TIMEZONE_CHANGED);
filter.addAction(Intent.ACTION_TIME_CHANGED);

并将其注册到您活动的OnCreate

public void onCreate() {
        super.onCreate();
        registerReceiver(receiver, filter);     
    }

按如下方式创建广播接收器。

 private final BroadcastReceiver receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final String action = intent.getAction();

            if (action.equals(Intent.ACTION_TIME_CHANGED) ||
                action.equals(Intent.ACTION_TIMEZONE_CHANGED))
            {
                doWorkSon();
            }
        }
    };

并在您的活动的onDestroy中取消注册:

 public void onDestroy() {
    super.onDestroy();
    unregisterReceiver(m_timeChangedReceiver);     
}

答案 1 :(得分:0)

您需要为意图操作ACTION_TIMEZONE_CHANGED创建一个BroadcastReceiver。 BroadcastReceiver被描述为here

答案 2 :(得分:0)

在清单文件中

<receiver
    android:name=".MyReceiver"
    android:enabled="true"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.TIMEZONE_CHANGED"/>
    </intent-filter>
</receiver>

在 myReceiver 类中

override fun onReceive(context: Context, intent: Intent) {
            var action : String? = intent.action
            var timeZone: String? = intent.getStringExtra("time-zone")
            Toast.makeText(context,action+timeZone,Toast.LENGTH_LONG).show()