詳細な情報はインターネット上で見つけることができませんでした。
しかし、私が知る限り、Android のメディア トランザクションを制御するmediaserver
プロセスは にあります。/system/bin/mediaserver
たとえば、youtube
アプリケーションでビデオをストリーミングしている間、このメディアサーバーはリモートサーバーへのポートを開き、コンテンツをダウンロードしているように見えます
cat /proc/net/tcp
mediaserver アプリの Linux UID は 1013 で、これは内部 Android UID です。
新しいソケット接続の場合、開いているポートを確認してアプリケーション UID を取得しています
しかし、この mediaserver プロセスの場合、mediaserver がポートを開いているため、UID 1013 を取得します。
問題は、 を呼び出すとgetRunningAppProcesses
、このメディアサーバー アプリがリストに表示されないことです。
より具体的には、コマンドgetRunningAppProcesses()
の出力でパッケージ名のみを返し、ps
eg などは表示しませ/system/bin/mediaserver
ん/system/bin/keystore
。
そのため、どのアプリケーションが原因で mediaserver がリモート サービスへの新しいポートを開くかを知る必要があります。この場合、元のアプリケーション名または pid を取得するにはどうすればよいですか? これが実際にできるのか、それとも Android の制限なのかはわかりませんでした。