我正在创建一个Lock Replacement应用程序,显然要求它有一个启动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);
}
}
由于无法从Manifest调用ACTION_SCREEN_ON,因此我在主要活动中动态注册了它。
这是我的主类(Lockdown)的onCreate函数
IntentFilter filter = new IntentFilter (Intent.ACTION_SCREEN_ON);
BroadcastReceiver mReceiver = new StartupBroadcastReceiver();
registerReceiver(mReceiver, filter);
非常感谢任何帮助。
答案 0 :(得分:2)
我找到了这个问题的答案:
将android:launchMode="singleInstance"
和<category android:name="android.intent.category.DEFAULT" />
添加到主要活动的清单中。您还必须将此标志添加到接收器startupIntent.setFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK);