【问题标题】:How do I use the intent action USER_PRESENT?如何使用意图操作 USER_PRESENT?
【发布时间】: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


【解决方案1】:

删除android:exported="false"

安卓:导出:

广播接收器是否可以从其应用程序之外的源接收消息 - 如果可以,则为“true”,如果不能,则为“false”。如果为“false”,则广播接收器只能接收由同一应用程序的组件或具有相同用户 ID 的应用程序发送的消息。

来源:developer.android.com

【讨论】:

  • 这应该是公认的答案
【解决方案2】:

删除android:exported="false"。这在 Stock Android 5 上对我有用

【讨论】:

    【解决方案3】:

    我通过在 AppWidgetProvider 类的 onUpdate 方法中使用 registerReceiver 并传递 BroadcastReceiver 类的实例来注册 Intent.ACTION_USER_PRESENT 来使其工作,因为仅在 Manifest 中添加它不是做任何事情。谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-22
      • 2011-11-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多