2016-11-08 10 views
1

コンテキスト特定のアプリケーションが起動されたことをどのように検出できますか?

ミューテックスロックする必要があり、ハードウェア資源のための私のアプリと競合するのではなく、特定のアプリがあります。ハードウェアリソースには公開Android SDKにAPIはなく、競合するアプリはそれを必要とする唯一のアプリだと考えています。ハードウェアリソースを管理するファームウェアは、一度に1つのアプリケーションでのみこれを取得することも想定しています。

問題のハードウェア資源を超える

衝突がファームウェアにうまく処理されていない、と私のアプリの実行中にユーザーが競合するアプリを起動した場合、私のテストデバイスは、多くの場合、私は(再起動が必要になります競合するアプリのサービスがActivityManager.getRunningServices()であるかどうかをチェックし、競合するアプリの実行中にユーザーがアプリを起動した場合、アプリがハードウェアリソースを取得するのを止めることができます。
私は、競合するアプリケーションのソースコードやシステムイメージのソースコードにアクセスできないので、競合するアプリケーションの不正な動作や、ファームウェアのハードウェアリソースに対する競合の取り扱いが不十分であることをアプリケーションが処理する必要があります。

質問

が知られているコンポーネント名を持つアプリアクティビティやサービスが起動されたときにコールバックを受け取るためにAndroidのマシュマロ上で実行されている通常の(すなわち、非システム)アプリのための方法はありますか?

答えて

2

既知のコンポーネント名を持つアプリのアクティビティやサービスが起動されたときにAndroid Marshmallowで実行されている通常の(つまりシステム以外の)アプリがコールバックを受け取る方法はありますか?

いいえ実際、Android 5.0以降では、プライバシーやセキュリティ上の理由から、実行中の他のアプリケーションのリアルタイム知識を隠すために苦労しています。

+0

他の実行中のアプリケーションに関するリアルタイム情報を隠す6.0+の対策への参照がありますか?私は彼らがLollipopのActivityManager.getRunningTasksとgetRecentTasksを否定していることを知っていますが、私はMarshmallowに導入されたそれ以上の対策については気づいていませんでした。 – CCJ

+1

@CCJ:ああ、これらの変更のタイミングを誤って思い出しました。新しいバージョン(例えば '/ proc'へのアクセス制限)には他の変更がありましたが、IIRCは標準SDKの一部ではありませんでした。 – CommonsWare

関連する問題