将广播消息从类发送到Android中的活动

时间:2017-09-14 18:28:11

标签: android

我正在编写一个应用程序,需要监视正在创建的文件的文件夹,然后根据创建的文件的文件名执行操作。

我已经将广播接收器用于来自电池和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,因为它没有上下文。这一切都非常令人困惑。

由于

1 个答案:

答案 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()