我正在使用sinch服务创建一个调用应用程序。 对于来电,我需要以编程方式解锁锁屏。使用标志我解决了这个问题,但它不适用于Nougat。
我目前的活动代码:
@Override
protected void onStart() {
super.onStart();
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); }
并在清单上:
<activity
android:name="IncomingCallScreenActivity"
android:noHistory="true"
android:showOnLockScreen="true"
android:screenOrientation="sensorPortrait">
</activity>
更新
问题解决了。我在清单中编辑了:
<activity
android:name="IncomingCallScreenActivity">
</activity>
答案 0 :(得分:2)
我也使用过sinch服务。对于来电,我解决了这个问题。我希望你的问题可以通过尝试解决:
1.Replace
<activity
android:name="IncomingCallScreenActivity"
android:noHistory="true"
android:showOnLockScreen="true"
android:screenOrientation="sensorPortrait">
</activity>
通过
<activity
android:name="IncomingCallScreenActivity">
</activity>
2.在您的活动中编码onCreate():
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); }
答案 1 :(得分:0)
从Android O及以上版本开始,如果您的应用程序在后台,您的应用程序可以创建并运行后台服务几分钟,之后您的应用程序将进入空闲阶段,并且所有后台服务都将停止。 / p>
可行的解决方案是使用API21中引入的JobScheduler api来执行后台任务。
答案 2 :(得分:0)
我认为你应该在调用Activities onCreate方法之前使用getWindow()... block
@Override
protected void onCreate() {
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED|
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
super.onCreate();
}
您应该在清单文件中添加权限:
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>