現在の表示時間をサーバー時間に置き換える1つのアプリケーションを作成しました。私は多くのことを試しましたが、解決策が見つかりませんでした。デバイスに設定するにはどうすればよいですか?
Androidデバイスでサーバー時間を取得する方法を知っています。特にAndroidではリアルタイムで可能ですか?
正しい許可がある場合(以下を参照)、AlarmManager
を使用してこれを行うことができます。たとえば、時間を2013/08/15 12:34:56に設定するには、次のようにします。
_Calendar c = Calendar.getInstance();
c.set(2013, 8, 15, 12, 34, 56);
AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE);
am.setTime(c.getTimeInMillis());
_
これを行うには、許可_SET_TIME
_が必要です。残念ながら、これは signatureOrSystem
許可です。
_ <!-- Allows applications to set the system time -->
<permission Android:name="Android.permission.SET_TIME"
Android:protectionLevel="signature|system"
Android:label="@string/permlab_setTime"
Android:description="@string/permdesc_setTime" />
_
この権限を使用できる唯一のアプリは次のとおりです。
/system/
_フォルダーにインストールされますカスタムROMを構築しない限り、最初のROMを使用することはできません。
第二に、それはあなたが何をしているかに依存します。
広範囲に配布するアプリを構築している場合( Google Play など)、おそらくそうすべきではありません。これはrootユーザー向けのオプションであり、手動でのみインストールできます。マーケットプレイスはそれを正しい場所にインストールしません。
自分用のアプリを作成している場合(または学習演習として)、ぜひお試しください。ただし、ルート化された電話が必要になるので、最初にそれを行います。その後、アプリケーションを [〜#〜] adb [〜#〜] またはファイルマネージャーで_/system/app/
_に直接インストールできます。詳細については、記事 like this を参照してください。
最後の注意:_SET_TIME
_パーミッションとAlarmManager#setTime()
がAndroid 2.2(_API 8
_)に追加されました。これを実行しようとしている場合以前のバージョンでは、動作するかどうかはわかりません。
これを試して:
次のコマンドを使用できます。
adb Shell date -s YYYYMMDD.HHmmss
例:
adb Shell date -s 20120423.130000
日付を月4月23日13:00:00 IST 2012に設定します
または、これを試すこともできます:
startActivity(new Intent(Android.provider.Settings.ACTION_DATE_SETTINGS));
それが役に立てば幸い!!
アプリをアプリストアに置くか、時間をサーバー時間に更新する場合は、できません。
サーバーごとに日時を変更するには、 SignatureOrSystem 権限が必要です。
デバイスをルート化し、変更を実装する必要があります。
この thread は、理解を深めるために大いに役立つはずです。
私は2週間まったく同じことをしましたが、今ではルート化されたデバイスで解決策を得ました
<?php echo date("Ymd.His "); ?>
OnClickメソッドで
Process loProcess = Runtime.getRuntime().exec("su"); DataOutputStream loDataOutputStream = new DataOutputStream(loProcess.getOutputStream()); //loDataOutputStream.writeBytes("date -s 20120419.124012; \n"); loDataOutputStream.writeBytes("date -s" + theStringReturnedValue+ "; \n");
StringReturnedValueには、PHPで返されるものと同じ20150216.124012という形式が必要です。