2011-09-21 18 views
3

私はgoToSleep()メソッドを使用して、電話を深い眠りに置くことを試みます。 Androidのシステム情報が言うように、 プログラムは、システム・アプリケーションですが、私はgoToSleep()を呼び出ししようとした場合、私はこのエラーAndroidシステムアプリケーションDEVICE_POWER権限エラー

どちらのユーザーに取得することを、/システム/ appディレクトリにインストールされた10085も現在のプロセスがandroid.permissionを持っています.DEVICE_POWER。

コードサンプリング:

  IPowerManager mPowerManager = IPowerManager.Stub.asInterface(ServiceManager.getService("power")); 

      long time = SystemClock.uptimeMillis() + 1000; 
      try { 
       mPowerManager.goToSleep(time); 
      } catch (RemoteException e) { 
       Toast.makeText(getApplicationContext(), "error: " + e.toString(), Toast.LENGTH_LONG).show(); 
       e.printStackTrace(); 
      } 

のAndroidManifest.xml

<permission android:name="android.permission.DEVICE_POWER"/> 
<uses-permission android:name="android.permission.DEVICE_POWER" /> 
<permission android:name="android.permission.REBOOT"/> 
<uses-permission android:name="android.permission.REBOOT"/> 

私は理解しているように、私はすべてのアンドロイド非表示またはシステムの機能へのアクセスを得ることができるよりも、システムのアプリケーションを実行する、またはI」場合間違ってる?私は、システムapplicaitonとしてアプリケーションを実行するためにやろう

物事:0

  • のchmod 4755
  • のchmod ugoの+ S
    1. コピーファイル
    2. のchown 0システム/アプリ/へ

    誰かが既にこの問題に遭遇している可能性があります。任意の提案が役に立ちます

    答えて

    0

    上記のマニフェストの1行目と3行目を削除するだけで問題ありません。 あなたは...と電話する必要があります.... あなたのコードは正常に見えます。私はあなたがsignature permissionを必要とする参照ソースコードに調べることにより

    +0

    答えはThnxですが、私には役に立ちません - 同じエラーが発生します。
    私は別のものを試しました。あなた自身のファームウェアを作成せず、ファームウェアと同じキーでアプリケーションに署名しないと、android.osの機能を隠すことはできません。 –

    2

    、私はそれがシステムアプリであることが十分ではないと思う、あなたはROMの同じ証明書で署名する必要があり、/system/framework/android/framework-res.apk

    2

    で1 DEVICE_POWER権限がありますあなたのような第三者のアプリケーションはアクセスできません。

    のpublic static final String型DEVICE_POWER は1

    は、電源管理への低レベルアクセスを許可するAPIレベルで追加されました。

    サードパーティのアプリケーションでは使用できません。 定数値: "android.permission.DEVICE_POWER"