2010-01-03 20 views
1

我正在創建一個Lock Replacement應用程序,顯然要求它有一個啓動ACTION_SCREEN_ON的活動被調用。這些都是有關我的代碼部分,以它:接收到ACTION_SCREEN_ON後活動不會啓動

public class StartupBroadcastReceiver extends BroadcastReceiver { 
@Override 
public void onReceive(Context context, Intent intent) { 
    Intent startupIntent = new Intent(context, Lockdown.class); // substitute with your launcher class 
    startupIntent.addCategory(Intent.CATEGORY_HOME); 
    startupIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    context.startActivity(startupIntent); 
} 

}

由於ACTION_SCREEN_ON不能從清單被稱爲我的主要活動動態註冊它。

這是在(鎖定)

IntentFilter filter = new IntentFilter (Intent.ACTION_SCREEN_ON); 

BroadcastReceiver mReceiver = new StartupBroadcastReceiver(); 
    registerReceiver(mReceiver, filter); 

任何幫助,高度讚賞我的主類的我的onCreate功能。

+0

但是,只有當用戶手動啓動您的活動時,纔會註冊您的IntentFilter,並且一旦您的活動暫停,它將被取消註冊 - logcat可能會警告您,我泄漏了一個接收器實例。 – 2010-01-03 11:18:17

+0

或者,也許我不明白SCREEN_ON在哪種情況下被解僱。 :)無論如何,你也可以嘗試添加CATEGORY_DEFAULT到你的過濾器。您也可以檢查logcat,看看您是否缺少權限。 – 2010-01-03 11:22:58

+0

我的接收器工作正常,我添加了一個Toast通知,看看它是否在屏幕出現時提醒我的接收器,它可以是許可證,我必須看看這個。 – Honzo 2010-01-03 18:43:57

回答

2

我找到了答案,這個問題:

添加android:launchMode="singleInstance"<category android:name="android.intent.category.DEFAULT" />到您的主要活動的清單。您還必須將此標誌添加到接收器startupIntent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);

+0

在2014年4.4.2這仍然適用於我,但只有在我註冊清單中的第二個活動 Leo 2014-04-08 00:41:57