2012-04-01 56 views
2

我基本上想要顯示一個屏幕,無論應用程序已經運行,屏幕解鎖。顯示解鎖事件的屏幕/活動?

有人可以告訴我如何在手機解鎖後立即顯示文本。我可以從此繼續。

我有下面的代碼到現在,我在網上....

假設我想盡快把手機被解鎖顯示abc.xml發現。我將如何將它添加到ScreenReceiver類中?

另外我不想在應用程序運行時設置任何屏幕。是否需要運行下面的代碼作爲服務?

public class SampleActivity extends Activity { 

//Declare the necessary variables 
private BroadcastReceiver mReceiver; 


    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON); 

    filter.addAction(Intent.ACTION_SCREEN_OFF); 
    filter.addAction(Intent.ACTION_USER_PRESENT); 

    mReceiver = new ScreenReceiver(); 
    registerReceiver(mReceiver, filter); 

    } 


    @Override 
    public void onDestroy() 
    { 
     super.onDestroy(); 
     Log.v("$$$$$$", "In Method: onDestroy()"); 

     if (mReceiver != null) 
     { 
      unregisterReceiver(mReceiver); 
      mReceiver = null; 
     }   

    } 

} 

其中屏幕Reciever類是如下

public class ScreenReceiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) 
     {  
      Log.v("$$$$$$", "In Method: ACTION_SCREEN_OFF"); 
      // onPause() will be called. 
     } 
     else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) 
     { 
      Log.v("$$$$$$", "In Method: ACTION_SCREEN_ON"); 
      //onResume() will be called. 

      // Better check for whether the screen was already locked 
      //if locked, do not take any resuming action in onResume() 

      //Suggest you, not to take any resuming action here.  
     } 
     else if(intent.getAction().equals(Intent.ACTION_USER_PRESENT)) 
     { 
      Log.v("$$$$$$", "In Method: ACTION_USER_PRESENT"); 
      // Handle resuming events 

     } 

    } 
} 

回答

3

首先,你不顯示abc.xml,則顯示一個活動,對話框或其他UI組件。您可以設置一個廣播接收機,用於監聽意圖。一旦設備啓動完成,您可以啓動一項粘性服務來監聽上面的操作。想必您在一項活動中需要顯示abc.xml,因此您需要從if()塊之一中觸發startActivity