У меня есть BackgroundReceiver
, настроенный для получения android.intent.action.USER_PRESENT
в файле манифеста в соответствии с:
<receiver android:name="com.demo.MyBroadcastReceiver">
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" />
</intent-filter>
</receiver>
Мой переопределенный метод onReceive(Context, Intent)
очень прост:
@Override
public void onReceive(Context context, Intent intent)
{
if (intent != null)
{
if (Intent.ACTION_USER_PRESENT.equals(intent.getAction())
{
// wrapper for Log.d(String, String)
Dbug.log("MyBroadcastReceiver: [" + intent.getAction() + "]");
// this calls a service
serviceExample(context, intent);
}
}
}
- Это отлично протестировано на устройствах 2.1, 2.2 и 2.3 (HTC Desire, HTC WildFire, Motorola Razr).
- Похоже, это не работает на устройствах HoneyComb (Samsung Galaxy Tab 10.1) или ICS (Samsung Galaxy Nexus).
- В соответствии с этой ошибкой (USER_PRESENT никогда не срабатывает на сотах и ICS, когда блокировка клавиатуры отключена), Я установил блокировку на неисправных устройствах. Это не помогло.
Вопросы:
- Есть ли какая-то хитрость в использовании этих действий намерения на Android 3.x и 4.x?
- Возможно, это известная проблема Samsung?
- Или, возможно, есть какие-то настройки устройства, которыми я пренебрег на этих устройствах?