我在清单文件中有两个接收器。一个是工作一个不是。我可以在清单中有多个接收器吗?
<receiver android:name=".services.MobileViaNetReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
<receiver android:name=".services.SessionManager">
<intent-filter>
<action android:name="android.intent.action.SCREEN_OFF"></action>
<action android:name="android.intent.action.ACTION_SHUTDOWN"></action>
<action android:name="android.intent.action.SCREEN_ON"></action>
</intent-filter>
</receiver>
UPDATE&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;
行动关机正在为我工作。以下是SessionManager的代码
public class SessionManager extends BroadcastReceiver{
Date timeOff;
Date timeOn;
@Override
public void onReceive(Context context, Intent intent) {
if( "android.intent.action.SCREEN_OFF".equals(intent.getAction())) {
timeOff = Calendar.getInstance().getTime();
}
if( "android.intent.action.ACTION_SHUTDOWN".equals(intent.getAction())) {
Functions.logout(context);
}
if( "android.intent.action.SCREEN_ON".equals(intent.getAction())) {
timeOn = Calendar.getInstance().getTime();
long diffInMs = timeOn.getTime()-timeOff.getTime();
// convert it to Minutes
long diffInMins = TimeUnit.MILLISECONDS.toMinutes(diffInMs);
if ((int) (diffInMins) > 15) {
Functions.logout(context);
} else {
Log.i("MobileViaNetReceiver", "User still active");
}
}
}
}
答案 0 :(得分:0)
好的,因为你肯定得到SHUTDOWN意图,你的广播接收器正在工作。但这并不意味着SCREEN_ON和SCREEN_OFF实际上正在向您的应用程序发送和删除。以下是对此条件的一些解释:
android.intent.action.SCREEN_ON doesn't work as a receiver intent filter
答案 1 :(得分:0)
尝试在不起作用的接收器的意图过滤器内添加以下内容。
<category android:name="android.intent.category.DEFAULT" />