私はAndroidアプリを持っており、フォルダを監視したいと思います。私はサービスを作った(私は、ユーザーがアプリケーションを殺す場合でも、フォルダーをノンストップで監視したい)、私はインテントの余分にフォルダーのパスを入れた。このサービスでは、フォルダを監視し、フォルダ内にファイルが作成されるたびにイベントをトリガーするFileObserverがあります。問題は、イベントが決して引き起こされないということです。 何か間違っていますか?ありがとう!Androidサービスのフォルダを監視する
the documentation forFileObserver
を引用
@Override
public int onStartCommand(Intent intent, int flags, int startId){
String mainFolder = intent.getStringExtra("mainFolder");
Toast.makeText(getApplicationContext(), "Service start! Main folder is: " + mainFolder, Toast.LENGTH_LONG).show();
FileObserver observer = new FileObserver(mainFolder) {
@Override
public void onEvent(int event, String path) {
if (path == null) {
return;
}
if (FileObserver.CREATE == event) {
Toast.makeText(getApplicationContext(), "This file was creted: " + path, Toast.LENGTH_LONG).show();
}
}
};
observer.startWatching();
return START_REDELIVER_INTENT;
}
ありがとうございました!サービスは永遠に実行されていませんが、「START_REDELIVER_INTENTを返します。ステートメントはサービスを再開する必要があります。 –
@AlexHash:はい、サービスはフォアグラウンドサービスではないため、Android 8.0以降では1分ほど実行されてから停止されます。 – CommonsWare