2013-12-14 2 views
0

브로드 캐스트 리시버가 있는데 앱이 실행되지 않아도 특정 이벤트가 발생하면 코드를 실행하고 싶습니다.앱이 닫힐 때 브로드 캐스트 리시버를 감지하는 방법은 무엇입니까?

내 코드는

MainActivity.java 아래

package kenneth.menuactivator; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    TextView textchange; 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     textchange = (TextView)findViewById(R.id.text); 

    } 
    @Override 
    public boolean onKeyLongPress(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
       broadcastIntent(); 
       textchange.setText("Menu Pressed"); 
       return true; 
      } 
      return super.onKeyLongPress(keyCode,event); 
    } 
    @Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) 
    { 
     if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) { 
      event.startTracking(); 
       return true; 
      } 
      return super.onKeyDown(keyCode,event); 
    } 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     // Inflate the menu; this adds items to the action bar if it is present. 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true;  
    } 

    public void broadcastIntent() 
     { 
      Intent intent = new Intent(); 
      intent.setAction("kenneth.menuactivator.CUSTOM_INTENT"); 
      sendBroadcast(intent); 
     } 
} 

Receiver.java

내가 매니페스트에 권한을 추가 한
package kenneth.menuactivator; 

import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.widget.Toast; 

public class MyReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      //some code 

     } 

    } 

을 표시됩니다. 앱이 실행 중일 때 코드가 제대로 작동합니다. 하지만 응용 프로그램이 작동하지 않습니다 닫힙니다. 아니면 앱이 실행 중이 아닌 경우에도 이벤트를 감지 할 수있는 다른 방법이 있습니다.

+2

sticky boradcast 사용 – Raghunandan

답변

1

활동에 대한 KeyEvents를 수신 대기 중입니다. 활동이 정상적으로 작동 할 때 예상대로 작동하지만 앱이 실행되고 있지 않을 때 키 이벤트에 대한 트리거를 얻을 수 없으므로 활동이 아닌 경우,

+0

잠금 화면에서 버튼을 사용하여 이벤트/앱을 시작하는 다른 방법이 있습니까? –

+0

죄송합니다. 좋은 아이디어가 없습니다. –

관련 문제