別のアプリケーションの SQLite データベースへの変更を監視したいと考えています。Android では別のアプリケーションの内部データにアクセスできないため、まさに私のものと同じルート アプリケーションが必要です。
システム上のファイルへの変更を監視し、アプリケーションでイベントをトリガーする方法はありますか?
私はグーグルで検索し、人々がFileObserver
クラスの使用を推奨しているのを見てきましたが、これは保護されたファイルでは機能しません。他の提案はありますか?
--
私はこれに対する答えを探していましたが、何も見つかりませんでした。これら 2 つの sei-promising テクニックを試しましたが、うまくいきませんでした。
- アプリケーションのデータ ディレクトリ内のすべてのファイルは、そのアプリケーションのユーザーとグループによって所有されます。
FileObserver
Linux のアクセス許可を尊重するため、別のアプリケーションのデータ ディレクトリにあるデータベース/ファイルを監視するために使用できないようです。
アプリケーションの Linux プロセスを何らかの形で昇格させてroot
. setuid
これは、setguid
私がよく知らないメカニズムをいじることを意味するため、簡単ではありません。
- 他のアプリケーションのデータベース ファイルから自分のアプリケーションのデータ ディレクトリへのシンボリック リンクを作成しようとしました。シンボリック リンクにすべてのアクセス許可を追加し、それ
FileObserver
を監視するために使用しましたが、これも機能しませんでした。何か間違ったことをしたのかもしれませんが、Linux ではシンボリック リンクのアクセス許可は役に立たないと思います。尊重されるシンボリック リンクのアクセス許可は、ターゲット ファイル/ディレクトリのアクセス許可です。
JNIとinotify.h
ファイルを使用する方法があるかもしれませんが、これについてどうすればよいかわかりません。
アプリケーションからデータベースをポーリングしたくありません。イベントトリガーメカニズムが欲しいです。