所以我正在创建一个应用程序来监听android中的Screen On活动。我有一个接收Intent.ACTION_SCREEN_ON
的广播接收器。然后该接收器开始活动。
一切正常,但即使屏幕因为来电而开启,它也会启动活动。
这是我的代码。
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Intent i = new Intent(context, MainScreenActivity.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Log.e("receiver", "throwing in the lock screen");
}
我不太清楚如何检查手机的当前状态。
我有权阅读PHONE_STATE
,但如何判断是否因为通话而触发了行动?
实际打开屏幕并显示活动时也会出现延迟。默认锁定屏幕会在短时间内显示,然后会显示自定义锁定屏幕。有什么办法可以避免这种延迟吗?
答案 0 :(得分:1)
注册另一个广播接收器,响应呼叫进入状态设置一个标志,你可以检查你的接收器Intent.ACTION_SCREEN_ON)如果标志已经设置然后跳转到启动活动并重置标志,否则启动活动 像
if(action.equalsIgnoreCase("android.intent.action.PHONE_STATE"))
{
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_RINGING))
{
incomingcall = true;
}
}
并检查
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
if(incomingcall ==true)
{
//skip the reciver and reset flag incomingcall = false;
}
else{
Intent i = new Intent(context, MainScreenActivity.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Log.e("receiver", "throwing in the lock screen");
}
}
了解有关订购广播的更多信息 http://android-developers.blogspot.in/2011/01/processing-ordered-broadcasts.html