2010-09-20 68 views
2

我有以下代碼 我想檢測屏幕關閉手機 但onReceive從來沒有永遠不會被稱爲 任何人都可以給我一個解決方案。 請幫忙。 如果任何人有任何其他工作代碼請幫助。 謝謝onReceive從來沒有叫

package com.pack; 

import android.app.Activity; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.os.Bundle; 

public class Screen extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     IntentFilter filter = new IntentFilter(); 
     filter.addAction(Intent.ACTION_SCREEN_OFF); 
    Context con = this; 
     this.registerReceiver(new BroadcastReceiver() { 

       @Override 
       public void onReceive(Context context, Intent intent) { 
       System.out.println("Screen off..................."); 
       } 
      }, new IntentFilter(Intent.ACTION_SCREEN_OFF)); 
    } 

} 

回答

1

您的代碼適合我。我修改了代碼,以便更容易閱讀和增加了一些sysouts,但它的作品,你寫的方式:

public class Test extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_OFF); 
    registerReceiver(new BroadcastReceiver() { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      System.out.println("Screen off..................."); 
     } 

    }, filter); 
} 

@Override 
protected void onResume() { 
    super.onResume(); 
    System.out.println("onResume()"); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    System.out.println("onDestroy()"); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    System.out.println("onPause()"); 
} 

它輸出以下,如果我(開始活動,把屏幕關閉,打開屏幕上,按後退按鈕):

onResume() 
onPause() 
Screen off................... 
onResume() 
onPause() 
onDestroy() 

此後活動被破壞,因此不顯示任何事件。也許你想在AndroidManifest中註冊你的BroadcastReceiver。

+0

我只有onResume作爲輸出。我正在使用1.5是否這是我的清單文件 James 2010-09-20 16:23:24

+0

上面的代碼爲我調用onResume,onDestroy和onPause,但notonReceive爲什麼'my'代碼有問題。它與上述相同 – James 2010-09-20 17:41:54

+0

有趣的 - 通常你的代碼應該工作。你在真實的設備上測試嗎?或者在模擬器中?請提供更多信息。 – mreichelt 2010-09-21 09:58:38