AndroidManifest несколько приемников - PullRequest
1 голос
/ 09 ноября 2011

У меня есть два получателя в файле манифеста. Один работает, другой нет. Могу ли я иметь несколько получателей в манифесте?

<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>

ОБНОВЛЕНИЕ >>>>>>>>>>>>>>>>>>>>>>

ВЫКЛЮЧЕНИЕ ДЕЙСТВИЯ РАБОТАЕТ ДЛЯ МЕНЯ. Ниже приведен код для 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");
        }
    }   
}

}

Ответы [ 2 ]

0 голосов
/ 09 ноября 2011

Попробуйте добавить следующее в фильтр намерений для вашего приемника, который не работает.

<category android:name="android.intent.category.DEFAULT" />
0 голосов
/ 09 ноября 2011

ОК, поскольку вы определенно намерены отключиться, ваш вещательный приемник работает. Но это не означает, что SCREEN_ON и SCREEN_OFF действительно отправляются и передаются в вашу заявку. Вот некоторые объяснения этого условия:

android.intent.action.SCREEN_ON не работает как фильтр намерений получателя

...