Я работаю с приложением «Позвонить».
У меня возникают проблемы с освобождением «блокировки пробуждения» в API 21. (Он отлично работает с> API Kitkat, но с API 21).
Мой код для запуска действия Call:
Intent callIntent = new Intent(context, CallActivity.class);
callIntent.putExtra(QBServiceConsts.EXTRA_OPPONENTS, (Serializable) qbUsersList);
callIntent.putExtra(QBServiceConsts.EXTRA_START_CONVERSATION_REASON_TYPE,
StartConversationReason.INCOME_CALL_FOR_ACCEPTION);
callIntent.putExtra(QBServiceConsts.EXTRA_CONFERENCE_TYPE, qbConferenceType);
callIntent.putExtra(QBServiceConsts.EXTRA_SESSION_DESCRIPTION, qbRtcSessionDescription);
callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.getApplicationContext().startActivity(callIntent);
Это для разблокировки устройства.
km = (KeyguardManager) context .getSystemService(Context.KEYGUARD_SERVICE);
kl = km .newKeyguardLock("MyKeyguardLock");
kl.disableKeyguard();
PowerManager pm = (PowerManager) context .getSystemService(Context.POWER_SERVICE);
wakeLock = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "MyWakeLock");
wakeLock.acquire();
Я попробовал этот код внутри действия Call.
Window window = getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
И мой манифест:
<activity
android:name=".ui.activities.call.CallActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:launchMode="singleTask"
android:screenOrientation="portrait" />