0
目標:讓Android自動檢測時區(TZ)在類中的更改並讓MainActivity接收新的TZ。Android TimeZone監聽器/接收器 - 未到達MainActivity
電流:清單是設置,類接收TZ(見下文第2項,表示Log.E新TZ更改TZ後對電話),但MainActivity/onTZChanged未接收到新的TZ和並不是在所有的調用。
問題:如何讓MainActivity從類接收新的TZ?
CODE:
1 - 艙單
<receiver
android:name=".TZChangeReceiver"
android:enabled="true">
<intent-filter>
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
</intent-filter>
</receiver>
2 - 類
public class TZChangeReceiver extends BroadcastReceiver {
public static TZChangeReceiverListener TZChangeReceiverListener;
public TZChangeReceiver() {
super();
}
@Override
public void onReceive(Context context, Intent arg1) {
String localTZ = TimeZone.getDefault().getID();
Log.e (" tzchg ", " got it " + localTZ);
if (TZChangeReceiverListener != null) {
TZChangeReceiverListener.onTZChanged(localTZ);
}
}
public static String isConnected() {
String tzToken= TimeZone.getDefault().getID();
return tzToken ;
}
public interface TZChangeReceiverListener {
void onTZChanged (String isConnected);
}
}
3 - MainActivity
public class MainActivity extends AppCompatActivity implements TZChangeReceiver.TZChangeReceiverListener {
...other code...
@Override
public void onTZChanged(String isConnected) {
isConnected = TZChangeReceiver.isConnected();
Log.e(" TZ", " isConnected " + isConnected);
}