2016-08-08 17 views
2

私はアプリにBATTERSTATS権限を与えようとしています。私はPCからのコマンドを実行すると - それだけで正常に動作します:adbシェルからコードを通してコマンドを理解する - Android

adb shell pm grant com.example.sample.myapplication android.permission.BATTERY_STATS 

しかし、同じ pm grantコマンドが動作しないAndroidアプリから実行した場合:

java.lang.Process process = Runtime.getRuntime().exec("pm grant com.example.sample.myapplication android.permission.BATTERY_STATS"); 

それは、これを与えるためにroot権限を必要としません許可? そうであれば、adb shell経由でデバイスを実行するためにデバイスをルートする必要はありません。

私はAndroidには新しく、内部で何が起こっているのか、どのように進めるのかを少し明確に説明してください。

+0

なぜ実行時に実行していますか?マニフェストにパーミッションを追加するだけです –

+0

アプリケーションで実行時にコマンドを実行する場合、adbシェルで使用できるコマンドにrootが必要なことがよくあります。実行時にアクセス許可を与えたい場合は、https://developer.android.com/training/permissions/requesting.html – babadaba

+0

@ cricket_007を読んでください。私はそれを私のマニフェストに与えましたが、それでも動作しません。 – Sankarann

答えて

3

adb shellで実行するコマンドは、ユーザー権限で実行されます。 javaコードから実行するコマンドは、アプリのUID特権で実行されます。従って違い。

関連する問題