我有一个时钟小部件应用程序,我需要识别手机何时解锁,我相信我可以使用动作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());
}
}
}
我解锁手机后没有开火,你能帮帮我或者给我一个更好的方法来检查手机何时解锁?谢谢!
答案 0 :(得分:4)
删除android:exported="false"
。这适用于我在Stock Android 5上
答案 1 :(得分:3)
删除android:exported="false"
机器人:输出:
广播接收器是否可以从其应用程序之外的来源接收消息 - 如果可以,则为“true”,否则为“false”。如果为“false”,则广播接收者可以接收的唯一消息是由具有相同用户ID的相同应用程序或应用程序的组件发送的消息。
答案 2 :(得分:2)
我通过在AppWidgetProvider类的onUpdate方法中使用 registerReceiver 并传递BroadcastReceiver类的实例来注册Intent.ACTION_USER_PRESENT来实现它,因为只在Manifest中添加它不是做任何事情。谢谢!