我想在啓動通知(如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廣播,等待設備完全啓動並工作。因此,您可以鎖定和解開在鎖屏工作之前多次給手機打電話。任何想法?
感謝您answer.unfortunately,這並沒有這樣的伎倆,還有開機後一些延遲和用戶鎖定和解鎖之前手機的2-3倍我的自定義鎖定屏幕活動出現。 –