2

私のアプリケーションでは、ユーザーの に従って、ユーザーにいくつかの情報を表示していますTimeZone。ユーザーが世界のさまざまな都市を選択して、必要な情報を取得できるようにしています。デフォルトでは、デバイスからユーザーの TimeZone を取得します。

                `TimeZone myTZ = TimeZone.getDefault();`

ユーザーが TimeZone を変更したら、設定に保存します。プリファレンスからの値の保存と取得に問題はありません。

別のTimeZoneものを選択すると、その TimeZone をデフォルトの TimeZone として設定します

       `TimeZone.setDefault(TimeZone.getTimeZone("my_timezone"));`

TimeZoneログに出力すると、設定TimeZoneした値が取得されます。しかしTimeZone、計算でそれを使用すると、以前のTimeZone値が得られます。

したがって、問題は TimeZone が変更されていないことだと思います。選択した TimeZone をデバイスのデフォルトの TimeZone としてユーザーに設定してもらいたいと思います。どうしよう。私がしている間違いは何ですか?

これに3日間はまってます。これから抜け出すための提案はありますか?迅速な提案は私を大いに助けます。前もって感謝します!!

4

1 に答える 1

1

のドキュメントによるとTimeZone.setDefault(...)-

現在のプロセスのみのデフォルトのタイムゾーンを上書きします。

警告:プロセスでカスタム タイム ゾーンを使用するためにこの方法を使用しないでください。この値はいつでもクリアまたは上書きされる可能性があり、予期しない動作を引き起こす可能性があります。代わりに、必要に応じて手動でカスタム タイム ゾーンを指定してください。

どうやらコードでタイムゾーンを変更するには、AlarmManager を使用する必要があります。ここでの議論を参照してください。

AlarmManager alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarm.setTimeZone(timezone);

この権限をマニフェストに設定する必要があります

<uses-permission  android:name="android.permission.SET_TIME_ZONE"></uses-permission>
于 2012-08-20T15:04:53.317 に答える