2016-05-25 7 views
2

私はどのアプリケーションがハードウェアを(pidを使って)起動しているか知る必要があるトラッカーアプリケーションを開発しています。この情報は、dumpsys androidに記録されています。私は自分のアプリケーションでこのファイルにアクセスし、そこで何らかの分析を行い、必要な情報を抽出したいと思います。私はadbを通じてこのファイルにアクセスすることができますが、同じコマンドを実行すると私のJavaコーディング許可の拒否エラーが発生します。私はまた、私のマニフェストファイルにまだandroid.permission.dumpを追加しました。私はアンドロイドからdumpsysファイルにアクセスすることができます

答えて

0

残念ながら"android.permission.DUMP"はシステムアプリにのみ付与されます。

システム署名でアプリケーションに署名し、マニフェストでシステム共有ユーザーID(android:sharedUserId="android.uid.system")を使用しない限り、そのアクセス許可を取得することはできません。あなたの.javaクラスのdumpsys > /sdcard/my_dump.txt

FileInputStream fis  = new FileInputStream("/sdcard/my_dump.txt"); 
BufferedReader bfr  = new BufferedReader (new InputStreamReader(fis)); 
StringBuilder builder = new StringBuilder (); 
String   line = ""; 

while ((line = br.readLine()) != null) { 
    builder.append(line); 
    Log.i("TEST", line); 
} 

あなたは何ができるか

は、外部ストレージに手動dumpsys出力をリダイレクトし、FileInputStreamBufferedReader

元のファイルを調べることですbuilder

String whateverYouAreLookingFor = "camera"; 
if (builder.toString().contains(whateverYouAreLookingFor)) { 
    //do something 
} 
で確認できます

私はそれが最良の解決策ではないことを知っていますが、あなたはまだそれから何かを得ることができます。

あなたの解決策、歓声を見つけることを願っています。

+0

私はアンドロイドの専門家ではないので、システムアプリケーションとして自分のアプリケーションに署名する方法とシステム共有ユーザーIDを使用する方法を知らない。あなたは説明していただけますか?私はまた、私の電話を根付いて、まだ私のアプリケーションでスーパーユーザーの権限を追加しても動作しません。 – Naveen

+0

私はこれを持っているシステムアプリケーションとして私のアプリケーションに署名する方法を探しました(http://stackoverflow.com/a/12013730/5750621)。彼によると、私は私が行う場合、アプリを配布することができません...ルートアクセスまたはスーパーユーザーのアクセスによってそれを行う方法はありますか? – Naveen

+0

はい、独自のROMを持っていない限り、システム署名でアプリに署名することはできません。どこかから署名を見つけて何らかの形で署名しても、システム署名されたアプリケーションはほとんど何でもできるので、宣言者はあなたのアプリケーションを公開させません。私はあなたの質問に答える時間が必要です。私はあなたがその間にあなたの解決策を得ることを願っています。 –

関連する問題