2011-10-10 18 views
6
W/PackageManager(61): Not granting permission android.permission.SET_ACTIVITY_WATCHER to package 

これは、プラットフォームの署名を使用して署名されていないアプリケーションには許可されないアクセス許可の例の1つです。それで、私はrootedデバイス(/ system/bin/suとSuperUser.apk)上で実行されているどのようなアプリケーションにどのような権限が与えられているか知りたいと思います。これを行うAndroidシステムのルートからのアクセス許可

Process p = Runtime.getRuntime().exec("su"); 
p.waitFor(); 

は「拒否」「受け入れる」またはを持つスーパーユーザダイアログを促したがSecurityException sがまだスローされます。

答えて

2

次のように、詳細はここで見つけることができ

<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
     package="[your package name]" 
     android:sharedUserId="android.uid.system"> 

よりのAndroidManifest.xmlでsharedUserIdを設定することにより、システムのアプリケーションとして実行するようにアプリを宣言することができます:あなたはあなたのをコピーする必要がありHow to sign Android app with system signature?

+2

このアプリケーションをコンパイルし、ルートされたすべてのデバイスで実行し、安全にAndroidマーケットに配布できますか?私はカスタムROMを作っていない、ルートデバイスのためのアプリだけです。 – Tom

+0

いいえ。Androidマーケットでシステムレベルのアクセス権を持つアプリを配布することはできません。 – spatulamania

+1

それは私が探しているものではありません。私は自分のファームウェアを実行しているルートデバイスではなく、そのようなアクセス権を取得する方法を探しています。分配が行われる限り、SetCPUまたはスクリーンショットアプリの数を見ると、問題なくそのような許可を使います。 – Tom

1

apkファイルを '/ system/apps'に追加します。それはプログラム的に行うことができます。あなたはroot権限を持っている場合にのみこれを行うことができます。一度コピーされると、デバイスを再起動します(ルートがあればプログラムで再起動できます)。マニフェストファイルに記載されているすべての権限が与えられます。これを市場に流通させることもできます。

+1

ええ、私はこの考えを持っていましたが、プラットフォームの署名で署名されたアプリケーションにのみ与えられるパーミッションがまだあります。あなたのアプリを/ system/appに置くと、それらのいくつかが表示されますが、すべてではありません。また、再起動が必要です。これは扱いにくいもので、ルートエクスプローラのようなアプリがなければアンインストールできません。 – Tom

+1

私はかなりの間このテクニックを使用してきました。私がしていることは、私のメニューに "root/unroot the application"という設定を与えることです。ユーザーがuse-root-privilegesをクリックすると、アプリケーションがシステムフォルダにコピーされ、デバイスが再起動されることを示すポップアップが表示されます - Continue/Cancel。 unrootの場合も同様です。私と一緒に素晴らしい作品、まだ苦情はありません。 –

+0

私はそれがうまくいくかもしれないと確信していますが、再起動と簡単にアンインストールできないことは私のためにはあまりにも多すぎます。まず、共有設定ファイルやキャッシュなどをすべてコピーしなければなりませんか?それは、システムレベルではなく署名レベルとして指定されているため、STATUS_BAR_SERVICEのようなManifest.permissionにないパーミッションは付与されないということは、まだ疲れました。 – Tom

関連する問題