2013-12-14 74 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

使用粘性boradcast – Raghunandan

回答

1

你正在監聽你的活動上的KeyEvents,當活動運行時它可以正常工作,但是當應用程序沒有運行時,所以不是你的活動,所以你不能在你的keyevents上獲得觸發器,

+0

有沒有其他方式使用鎖定屏幕上的按鈕啓動事件/應用程序 –

+0

對不起,我沒有任何好的想法 –

相關問題