Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android NFC检测:启动活动或显示对话框_Android_Android Activity_Nfc - Fatal编程技术网

Android NFC检测:启动活动或显示对话框

Android NFC检测:启动活动或显示对话框,android,android-activity,nfc,Android,Android Activity,Nfc,我有一个主活动,它在列表中显示一些数据,还有一个nfc异步任务,它从卡中读取一些数据。我希望实现以下行为: 如果应用程序已关闭,且手机附近放置了一张卡,则应启动主要活动,同时启动nfc异步任务。异步任务的结果应显示在对话框中 如果应用程序已打开且附近放置了一张卡,则应重新启动nfc asynctask,并且只应打开一个包含结果的对话框 我目前的方法总是从主要活动开始。这意味着,有时,我的主要活动有多个实例,当用户点击后退按钮时,会打开另一个活动实例,而不是切换到主菜单 清单 <activi

我有一个主活动,它在列表中显示一些数据,还有一个nfc异步任务,它从卡中读取一些数据。我希望实现以下行为:

  • 如果应用程序已关闭,且手机附近放置了一张卡,则应启动主要活动,同时启动nfc异步任务。异步任务的结果应显示在对话框中
  • 如果应用程序已打开且附近放置了一张卡,则应重新启动nfc asynctask,并且只应打开一个包含结果的对话框
  • 我目前的方法总是从主要活动开始。这意味着,有时,我的主要活动有多个实例,当用户点击后退按钮时,会打开另一个活动实例,而不是切换到主菜单

    清单

    <activity
        ...
        android:launchMode="singleTop">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.nfc.action.TECH_DISCOVERED"/>
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <meta-data android:name="android.nfc.action.TECH_DISCOVERED" android:resource="@xml/filter_nfc"/>
    </activity>
    
    
    
    看看Android的。如果您为前台调度注册应用程序,您的活动将收到一个
    onNewIntent()
    事件,而不是第二次开始

    此外,我建议将TECH_发现的意图放在单独的意图过滤器中:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
    </intent-filter>
    <meta-data android:name="android.nfc.action.TECH_DISCOVERED"
               android:resource="@xml/filter_nfc" />
    
    
    
    请添加logcat值以便您指定,您希望调试哪些信息?因为没有错误消息或类似的东西。您是否尝试过android:launchMode=“singleTask”?是的,同样的行为。我仍然可以实例化更多的实例,因为两个操作都会导致相同的活动。我必须承认,对于第一个目的,它工作得很好!这意味着如果应用程序关闭或主要活动处于焦点状态。但是如果我打开了另一个活动,用户会被重定向到主活动,但主活动会被重新创建。。。这意味着有多个实例。如果你想让应用程序的其他活动也有这样的行为,那么你也必须为这些活动启用foregorund调度。在收到前台调度事件后,您可以循环回到您的主要活动。前台调度是我要查找的关键字。即使使用分层视图结构(activity a->activity B->activity C),我也能够链接对onNewIntent的调用,因此总是将用户重定向到主活动。再次感谢你!