如何在重新启动后立即启动锁屏活动?
我想在启动通知(如Messages,Viber通知,WhatsApp等)并行重启后启动锁屏活动如何做???我制作了一个广播接收器,它接收BOOT_COMPLETED动作并开始启动与Intent.ACTION_SCREEN_OFF和Intent.ACTION_SCREEN_ON意图过滤器和接收器再次注册同一接收器服务启动锁屏activity.Here是我的代码:如何在重新启动后立即启动锁屏活动?
AndroidManifest.xml中
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" ></uses-permission>
<receiver>
<intent-filter android:priority="2147483647">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
,当然我宣布清单中的服务。
这里是我的广播接收器类
public class LockScreenBroadCastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d("BroadCastReceiver", "ReceivedIntent");
if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {
Intent myIntent = new Intent(context, LockScreenActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
myIntent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
if (!LockScreenActivity.isActivityRunning) {
context.startActivity(myIntent);
}else{
Log.d("BroadCasrReceiver","LockScreenActivity is running");
}
}else if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)) {
Log.v("LockScreenBroadReceiver","boot completed");
Intent startServiceIntent = new Intent(context,LockScreenService.class);
context.startService(startServiceIntent);
}
}
}
和服务类:
公共类LockScreenService延伸服务{
LockScreenBroadCastReceiver broadCastReciever;
public static boolean isRunning;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
isRunning = true;
registerReceiver();
}
@Override
public void onDestroy() {
super.onDestroy();
isRunning = false;
unregisterReceiver(broadCastReciever);
Log.d("LockScreenReceiver", "ReceiverUnregistered");
sendBroadcast(new Intent("RestartLockScreenService"));
}
private void registerReceiver(){
IntentFilter intentFilter = new IntentFilter(Intent.ACTION_SCREEN_OFF);
intentFilter.addAction(Intent.ACTION_SCREEN_ON);
broadCastReciever = new LockScreenBroadCastReceiver();
registerReceiver(broadCastReciever,intentFilter);
Log.d("LockScreenReceiver", "ReceiverRegistered");
}
}
这种做法是working.However,这是非常缓慢因为广播接收机收听BOOT_COMPLETED广播,等待设备完全启动并工作。因此,您可以锁定和解开在锁屏工作之前多次给手机打电话。任何想法?
可以使用的IntentFilter instace BootComplate在manifist这样的:
<action android:name="android.intent.action.USER_PRESENT" />
我有同样的问题。它被固定包括在接收器上的
<category android:name="android.intent.category.DEFAULT" />
。这是一个轻微的延迟6秒重新启动,我试图缩小范围。
我希望这对你的作品
谢谢你的帮助! 。这与我的情况一样,现在我的平均延迟时间为几秒钟,正如你所提到的。我也使用这个XML标签。我试图通过在某处寻找一些教程来获得更好的结果。我觉得没有太多关于这个话题的文件。如果你找到一个好的,请将它转发给我。 –
感谢您answer.unfortunately,这并没有这样的伎俩,还有开机后一些延迟和用户锁定和解锁之前手机的2-3倍我的自定义锁定屏幕活动出现。 –