- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我从 BroadcastReceiver 开始一个 Activity ,它由警报(RTC_WAKEUP 类型)触发。在该 Activity 的 onCreate 中,我添加了这些标志
getWindow().addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
);
问题是有时(大约 10% 的情况)屏幕无法打开。警报被正确触发(我这里是通知的声音,它也在接收器的 onReceive() 中触发。然后,如果我按下手机的电源按钮,屏幕打开,显示我的 Activity ,并立即关闭。之后那,电源按钮工作正常。这发生在 android 2.3.7 上,这里是 onReceive() 方法
@Override
public void onReceive(Context context, Intent intent) {
m_Context = context;
Bundle extras = intent.getExtras();
final int id = extras.getInt("timer_id");
Intent activityIntent = new Intent(m_Context, MyActivity.class);
activityIntent.putExtra("timer_id", id);
activityIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
m_Context.startActivity(activityIntent);
// and now load the alarm sound and play it for the desired time
showFinishedNotification();
}
我想避免使用 PowerManager,因为它需要权限,而标志是首选方式。
可能是什么问题? logcat 没有显示任何问题...
最佳答案
根据我对这个主题的经验和研究:
FLAG_TURN_SCREEN_ON 不能用于在您的应用程序中多次打开和关闭屏幕。
FLAG_TURN_SCREEN_ON 只能在 creating a new activity 时打开屏幕一次。 (最好在 onCreate() 方法中)或 when re-creating a view .
现在,您可以通过以下方式绕过此限制:
这些都不是理想的(事实上,它们感觉像是 hack),但只使用更适合您的应用程序需求的那个。
您可以在这里阅读更多内容:
关于android - FLAG_TURN_SCREEN_ON 并不总是有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9958080/
我有一个内部注册加速度计的服务。当识别出特定的摇动模式时,服务会使用此代码启动一项 Activity 。 Intent launchIntent = new Intent("my.package.MA
我从 BroadcastReceiver 开始一个 Activity ,它由警报(RTC_WAKEUP 类型)触发。在该 Activity 的 onCreate 中,我添加了这些标志 getWindo
我的应用获得唤醒锁,但无法从 Activity 唤醒设备 这是我的代码: public void onCreate(){ super.onCreate(); //acquire wak
我是一名优秀的程序员,十分优秀!