2017-10-03 14 views
1

私は、特定のタスクに要した経過時間を監視できるアプリケーションを作成しています。時間はサーバーとその正常に動作しています。しかし、オフライン機能を追加すると、System.currentTimeMillis();から時間がかかります。問題は、ユーザーが自分の電話時間を変更すると、彼らは簡単に経過時間を不正にすることができます。特定のタスク間隔の期間を取得できる他の方法はありますか。この不正行為を防ぐにはどうすればよいですか?私はすでに良い答えのためにスタックオーバーフローを検索します。何も見つかりませんでした。助けてくださいアンドロイドのオフラインモードでの時間不正使用防止

答えて

1

私は自分の研究を通して見たことから、サーバー上であなたのアプリケーションのファイルにアクセスすることによってユーザーが変更するのを防ぐのが良いでしょう。

私は、これらの2つのリンクがあなたにアイデアをリードできると信じています。

Preventing time manipulation

Changing time on device

+0

私がサーバ時間を使用しているとき、アプリは正常に動作します。オフラインでは、開始時刻を保存しています。しかし、タスクが完了したら、私はシステム時間を使って終了時間を計算しています。そこに人々がデバイス時間を変更しています。 –

+0

システムの日付を変更できないようにする方法はありません。オフラインモードで行うことができるのは、日付と時刻を保存して経過時間を計算することだけですが、問題は残っています。 – Teasel

1

自分で経過時間をカウントするスレッドを開始できます。カウンターをサービス内に置いて、アプリで閉じるのを防ぐ。サービスがデバイスの再起動などで終了した場合は、オンラインに戻って時間を確認してから続行する必要があります。

リソースが少ないためにデバイスが再起動されず、サービスがシステムによって閉じられていない限り、ユーザーはオフラインになることができます。

+0

アプリが閉じるか、電話がオフになっても動作しない場合 –

+0

@VinayakBチェックアップデート – meeeee

+0

これは現在解決可能な解決策です。しかし、問題は、私がサービスを再開したときにオンラインに行くことができないということです。つまり、System.currentTimeMillis()を取得する必要があります。 。これが問題です。 –

関連する問題