Android でサード パーティ アプリケーションを監視することは可能ですか。つまり、木曜日の午前 2 時 30 分のアプリ xyz アクセスの連絡先リストなど、サード パーティ アプリのすべてのログについて知りたいということです。
アプリがsqliteフレームワーククラスでクエリを実行するたびに1つのログが生成されるように、フレームワークコードを変更できますか? ルート化されたデバイスを介して可能になるはずですが、これを実装する方法がわかりません。
LogCollector
LOG COLLECTOR アプリケーションのインストール
誰が contentProvider にアクセスしたかを知るためにフレームワークを変更する 1 つの方法は、変更することです。
enforceReadPermission
enforceWritePermission
ContentProvider.java で、contentProvider を呼び出しているパッケージをログに記録します。
Log.d(TAG,""+getCallingPackages() +" app called provider "+ uri.getAuthority());
getcallingpackages 関数
private Collection<String> getCallingPackages() {
int caller = Binder.getCallingUid();
if (caller == 0) {
return null;
}
return Lists.newArrayList(mContext.getPackageManager().getPackagesForUid(caller));
}
アプリがsqliteフレームワーククラスでクエリを実行するたびに1つのログが生成されるように、フレームワークコードを変更できますか?
Androidにフォークして変更を追加し、フォークしたAndroidのコピーを含む独自のROM modを作成し、そのROMmodをデバイスにインストールします。
ルート権限を取得されたデバイスを介して可能になるはずだと思います
せいぜい、「独自のROM modの作成」ステップをスキップして、改訂されたフレームワークJARをルート化されたデバイスにコピーしようとすることができます。ただし、そのフレームワークJARがOSの他の部分と一致しない場合、さまざまなことが機能しない可能性があります。そのため、これを行うための唯一の安全な方法は、完全なROMmodを使用することです。
これは当たり前のように思えるかもしれませんが、とにかく言います。Eclipse の LogCat で任意のアプリケーションのログを読み取ることができます。
アプリケーション名が分かっていて、実際にログが作成される (つまり、ログが有効になっている) 場合は、それらをフィルタリングして、そのアプリケーションに固有のログを表示します。
Android用のaopフレームワークを実装できるかもしれません...