FileObserver
を使用して外部ストレージ上のパブリックディレクトリを監視するアプリがあります。 Lollipop
デバイスで正常に動作します。 Marshmallow
のサポートを追加したいので、それを使用してNexus9タブレットをセットアップしました。
マシュマロデバイスでは失敗しますが、ロリポップデバイスでは問題ありません。マシュマロデバイスでは、FileObserver
は他のプロセスによって引き起こされたファイルシステムイベントに反応しません。例えば。スクリーンショットを撮り、adb
シェルを介してファイルを作成します。ファイルが私のアプリによって作成されている場合は正常に動作します。
Marshmallow
で、_WRITE_EXTERNAL_STORAGE
_と_READ_EXTERNAL_STORAGE
_の権限を_Manifest.xml
_に要求します。
API 23でコンパイルするときは、必ずActivityCompat.requestPermissions()
を呼び出すようにします。
API 22でコンパイルするときは、_Manifest.xml
_だけに依存します。
_/data/data/my-package-name
_で何かを観察すると機能します。
_/storage/emulated/0/Pictures/Screenshots
_で何かを観察すると、失敗します。
次のすべてを考慮してFileObserver
をテストした人はいますか? :
Marshmallow
デバイスadb
またはスクリーンショットの撮影)。これはマシュマロのバグのようです このリンクを参照 。
これはNougatでも修正されていません。ほとんどのデバイスで機能しないという事実がまったく役に立たないため、このFileObserver全体でAPIを取り除くことができます。