2013-06-05 9 views
6

アンドロイドと一緒にいくつかのものを試しています。アンドロイドの開発を学んでいます。今ここにシナリオがあります。私は(これはなんとかです最初私が知りたいのですが?)私のアプリケーションを介してAndroidの携帯電話のシステム日付を変更したい アンドロイド携帯電話のシステムの日付を変更するにはアンドロイドアプリケーションから

レイアウトが

layout

以下の通りです

  • 今、私が望むのは、ユーザーが20日間で増えるはずのボタンをクリックしたときです。 どうすればいいですか?

    は、私は、Android上で

+0

あなたは何を試しましたか、何が始まらないでしょうか?より多くの情報を提供できますか? – JustWork

+0

私は知らないという意味で始めることができません、私はどのように私はシステムの日付を取得し、私のアプリケーションを通じてそれを変更することができますか分からない。どのようなinbuiltクラスは、システム日付を取得し、設定する機能を提供します –

+0

あなたは、ボタンを押すと、モバイル日付を変更したいですか? – Blackbelt

答えて

4

、&日付は「アプリケーションのためにのみ可能であるSET_TIME許可を取得することです時間への書き込みアクセス権を持っていないアプリケーションのための唯一の方法を助けてください...を開始することができませんAndroidシステムイメージ内にあるか、または許可を宣言したアプリケーションと同じ証明書で署名されています。 (signatureOrSystem protection level参照)。

アプリケーションがこの保護レベルに達する唯一の方法は、ルートデバイスで実行するか、独自のアンドロイドROMを作成して署名することです。

この場合、AlarmManagerまたは単にCalendarインスタンスを簡単に使用できます。

幸運を祈る!

+0

根っこのデバイスで動くだけではないと思う。私は根っこのNexus 7でアプリケーションを実行していますが、GPS信号(スマートGPSタイム、チャンピオンのようなもの)から時刻を設定するアプリケーションを取得することはできますが、試してみるとすぐにコードがクラッシュします。どんなアイデアが欠けている? – Rich

7

私がすでに言ったように、それは不可能です。 SET_TIME権限が必要です。その権限は、Androidシステムイメージ内にあるアプリケーションに対してのみシステムによって許可されます。その特権を得ることができれば、AlarmManagerで簡単に変更できます。 Character special file (stored in /dev).

  • システムがファイル
  • ラジオの所有者が読んでいるグループ
  • システムやラジオされているためSystemClock.setCurrentTimeMillisでは、/ dev/allarmファイルに

    adb shell ls -l /dev/alarm 
    crw-rw-r-- system radio  10, 46 2013-06-12 10:46 alarm 
    
    • c滞在を書いて、 (rw、ツリービット、int値6)、他は読み取り権限(r、int値4)のみを持ちます。したがって、ファイルのアクセス許可は664です。 rootユーザー(suを実行)を入手できる場合は、このファイルのアクセス権を変更して、新しい値を書き込むことができます。バグレポートは、携帯電話の日付をプログラムで変更できるようにGoogleに依頼するために埋められましたが、宣言されています。 Here参照

    +1

    素晴らしい解説。あなたはスーパーユーザーのアクセスを得るためにデバイスをrootにする必要があります。 + 1 – Raghunandan

    0

    通常のユーザーアプリケーションには、デバイス時間を変更する権限がありません。別のオプションについては、following postのキャッシュバッシュによる回答をお読みください。

    0

    残念ながら、ブラックベルトは正しいです。アンドロイドは私たちに多くのクールなことをさせることができますが、プログラム的にシステム時間を変更することはその一つではありません。

    もっと信頼できる/公式な情報源を探しているので、this open ticket with Googleをチェックすることをお勧めします。これはオープンな問題であることを示唆しています。それはうまくいくはずですが、 Googleはすぐにそれを直すつもりだ。それの要点は、SET_TIME保護レベルがそれよりも高く設定されていることです。 (アクセス許可の詳細については、hereを参照してください)

    これはプログラムで時間を変更するのと同じではありませんが、何らかの理由でシステム時間が必要な場合でもユーザーがシステム時間を変更できるようにすることができますかわった。 This threadは、あなたがそのルートに行きたいなら、それを実装する方法について説明します。

    希望しています。

    関連する問題