2013-05-03 51 views
4

我在AndroidManifest.xml中定義一個BroadcastReceiver如下廣播接收器的onReceive是沒有得到所謂的

<receiver 
    android:name="com.example.hello.ScreenUnlockReceiver" 
    android:enabled="true" 
    android:singleUser="true"> 
    <intent-filter> 
     <action android:name="android.content.Intent.ACTION_USER_PRESENT" /> 
    </intent-filter> 
</receiver> 

,並定義如下接收器:

public class ScreenUnlockReceiver 
     extends BroadcastReceiver { 


    @Override 
    public void onReceive(Context context, Intent intent) { 
     //start activity 
     Intent i = new Intent(); 
     i.setClassName("com.example.hello", "LoginActivity"); 
     i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
    } 
} 

但是,當我解開廣播接收器不會被觸發屏幕和LoginActivity未顯示。 LoginActivity是android sdk自帶的默認loginactivity。

我是否在使用權限或其他內容中丟失了某些內容,請讓我知道。 感謝

Santhosh

+0

檢查rciovati回答其絕對正確 – juned 2013-05-03 11:02:17

回答

4

的problom你要攔截的作用是:

<intent-filter> 
    <action android:name="android.intent.action.USER_PRESENT" /> 
</intent-filter> 

Developer Android ACTION_USER_PRESENT

+0

感謝您的快速響應。我確實如上所述將更改爲android.intent.action.USER_PRESENT,然後設置下面3h3提到的className ....但仍然沒有在通過在屏幕上滑動來解鎖屏幕時啓動LoginActivity 。 – 2013-05-03 11:50:09

+0

我會嘗試調試並檢查接收器是否正確調用。嘗試檢查Logcat,看看是否有什麼可以幫助你找出問題。 – rciovati 2013-05-03 12:08:31

4

你應該可以解決這樣的
i.setClassName("com.example.hello", "com.example.hello.LoginActivity")

+0

我做了改變正如你所提到的那樣,但是在解鎖屏幕後,LoginActivity屏幕沒有顯示出來。我試圖在用戶解鎖平板電腦時向用戶顯示默認應用程序。讓我知道你是否有任何指示。謝謝 – 2013-05-03 11:54:05

+0

試試這個,在您的活動的onResume()中,添加如下代碼:
'final Window win = activity.getWindow(); final WindowManager.LayoutParams params = win.getAttributes(); params.flags | = WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED;'
我建議你看看Android的源代碼,執行AlarmClock,希望可以幫到你 – 3h3 2013-05-03 12:47:25

+0

我真的在模擬器上試過,它不工作。在我的手機上嘗試了同樣的事情,它正在工作。 – 2013-05-03 14:45:06

相關問題