我正在编写一个应用程序,需要监视正在创建的文件的文件夹,然后根据创建的文件的文件名执行操作。
我已经将广播接收器用于来自电池和USB连接的其他通知,因此能够从实现fileObserver的类发送广播会很好。
在Main活动中,我为fileObserver实现了一个子类,但我无法弄清楚如何在事件发生时我可以通知MAin Activity创建了一个文件。
这是子类
class FileListener extends FileObserver {
private String mAbsolutePath;
public FileListener(String path){
super(path);
mAbsolutePath = path;
Log.d("FileObserver",path);
}
@Override
public void onEvent(int event, String path){
switch(event){
case FileObserver.CREATE:
Intent i = new Intent("CREATED");
context.sendBroadcast(i);
break;
case FileObserver.DELETE:
Log.d("FileObserver", "DELETE");
break;
case FileObserver.DELETE_SELF:
Log.d("FileObserver", "DELETE_SELF");
break;
case FileObserver.MODIFY:
Log.d("FileObserver", "MODIFY");
break;
case FileObserver.MOVED_FROM:
Log.d("FileObserver", "MOVED_FROM");
break;
case FileObserver.MOVED_TO:
Log.d("FileObserver", "MOVED_TO");
break;
case FileObserver.MOVE_SELF:
Log.d("FileObserver", "MOVE_SELF");
break;
}
}
}
我不能在类中使用context.sendBroadcast,因为它没有上下文。这一切都非常令人困惑。
由于
答案 0 :(得分:1)
您需要做的就是将构造函数传递给您的类:
class FileListener extends FileObserver {
private String mAbsolutePath;
private Context mContext;
public FileListener(String path, Context context){
super(path);
mAbsolutePath = path;
mContext = context;
Log.d("FileObserver",path);
}
//use context in your file.
然后,您可以从您的活动或片段中将您称为类new FileListener(path, getApplicationContext()
。