2017-09-14 10 views
0

作成するファイルのフォルダを監視し、作成されたファイルのファイル名に基づいて処理を行うアプリケーションを作成しています。クラスからAndroidのアクティビティにブロードキャストメッセージを送信する

私は既に、バッテリーとUSB接続からの他の通知のためにブロードキャストレシーバーを使用しています。そのため、fileObserverを実装しているクラスからブロードキャストを送信できるのが良いでしょう。

メインアクティビティでは、fileObserverのサブクラスを実装しましたが、イベントが発生したときにファイルが作成されたことをMAINアクティビティに通知できます。ここで

はサブクラスそれはコンテキストを持っていないので、私はクラスでcontext.sendBroadcastを使用することはできません

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; 
    } 
} 

}

です。これはすべて非常に混乱しています。

おかげ

+3

あなたはコンストラクタのコンテキストで渡します。好ましくは、アプリケーションコンテキスト –

答えて

1

あなたがする必要があるのがとても好きなクラスにコンストラクタを渡しです:あなたの活動やその断片からnew FileListener(path, getApplicationContext()

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. 

あなたはその後、あなたのようなクラスを呼び出すことができます。

関連する問題