2012-10-08 37 views
0

我正在爲傳入呼叫開發自定義UI。我幾乎完成了這個,但現在我只想在屏幕打開且用戶有來電的情況下加載我的自定義UI活動。我在BroadcastReceiver(android.intent.action.PHONE_STATE)中執行所有這些操作。那麼是否可以從BrodcastReceiver獲取屏幕狀態ON/OFF。Android如何從BroadcastReceiver獲知屏幕鎖定狀態

我試圖按照http://thinkandroid.wordpress.com/2010/01/24/handling-screen-off-and-screen-on-intents/的例子,但是從BroadcastReceiver註冊接收器給出編譯時錯誤。

請給我建議。

public class MyPhoneReceiver extends BroadcastReceiver { 

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


      IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 
      filter.addAction(Intent.ACTION_SCREEN_OFF); 
      BroadcastReceiver mReceiver = new MyScreenReceiver(); 
      registerReceiver(mReceiver, filter); //this gives error "The method registerReceiver(BroadcastReceiver, IntentFilter) is undefined for the type MyPhoneReceiver" 


    } 
} 

的Manifest.xml

<receiver android:name="MyPhoneReceiver" > 
    <intent-filter> 
      <action android:name="android.intent.action.PHONE_STATE"/> 
    </intent-filter> 
</receiver> 

感謝

+0

我們能否收到它給您的錯誤信息?沒有這個,很難確切地知道發生了什麼。 – boztalay

+0

@boztalay請參閱編輯代碼 – kaushal

回答

1

registerReceiver()是語境的方法,所以你應該叫context.registerReceiver(mReceiver, filter);

但您可以執行以下操作:

public class MyPhoneReceiver extends BroadcastReceiver { 

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

     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     if(pm.isScreenOn()) 
     { 
      // load your UI 
     } 

    } 
} 
+0

佈雷感謝的人,這是我正在尋找...再次感謝 – kaushal

0

這裏是你的問題的解決方案..

public static boolean wasScreenOn = true; 

@Override 
public void onReceive(Context context, Intent intent) { 
    if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
     // DO WHATEVER YOU NEED TO DO HERE 
     wasScreenOn = false; 
    } else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
     // AND DO WHATEVER YOU NEED TO DO HERE 
     wasScreenOn = true; 
    } 

} 
+0

intent.getAction()返回「android.intent.action.PHONE_STATE」,因此它永遠不會進入if..else。我編輯我的問題與如何接收器已設置清單文件。 – kaushal