【发布时间】:2014-02-25 23:33:05
【问题描述】:
我有一个时钟小部件应用程序,我需要识别手机何时已解锁,我相信我可以为此使用操作 USER_PRESENT,但我无法在 BroadcastReceiver 类中启动它,我设置了它在清单中是这样的:
<receiver
android:name="com.myApp.myApp.MyWidgetIntentReceiver"
android:exported="false"
android:label="widgetBroadcastReceiver" >
<intent-filter>
<action android:name="android.intent.action.USER_PRESENT" >
</action>
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/demo_widget_provider" />
</receiver>
这就是我尝试在 BroadcastReceiver 中获取它的方式:
public class MyWidgetIntentReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(Intent.ACTION_USER_PRESENT){
Log.i("TICK", intent.getAction());
}
}
}
我解锁手机后它不会触发,您能帮我解决一下或提供更好的方法来检查手机何时解锁吗?谢谢!
【问题讨论】:
-
下面的堆栈流链接可能会对您有所帮助:stackoverflow.com/questions/3446202/…
-
我试过你的代码,发现它运行良好。当应用程序被激活时,它可以接收 ACTION_USER_PRESENT。但是,当有人在后台杀死您的进程时,需要 1 秒或更长时间才能重新启动您的进程以进行广播。并且在这个间隔内,它不能接收 ACTION_USER_PRESENT。希望对您有所帮助。
-
你能发布整个代码吗?我见过一些例子,他们使用 registerReceiver 并将 IntentFilter 附加到它,但在我的代码中,我只是在清单中定义过滤器,我有 4动作,它们都有效,但它们是由我定义的,而不是系统动作,使用这个我无法让它工作。
标签: android android-intent broadcastreceiver