브로드 캐스트 리시버가 있는데 앱이 실행되지 않아도 특정 이벤트가 발생하면 코드를 실행하고 싶습니다.앱이 닫힐 때 브로드 캐스트 리시버를 감지하는 방법은 무엇입니까?
내 코드는
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
}
}
을 표시됩니다. 앱이 실행 중일 때 코드가 제대로 작동합니다. 하지만 응용 프로그램이 작동하지 않습니다 닫힙니다. 아니면 앱이 실행 중이 아닌 경우에도 이벤트를 감지 할 수있는 다른 방법이 있습니다.
sticky boradcast 사용 – Raghunandan