Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.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 当我关闭应用程序时,如何停止NDEFèU接收器?_Android_Nfc - Fatal编程技术网

Android 当我关闭应用程序时,如何停止NDEFèU接收器?

Android 当我关闭应用程序时,如何停止NDEFèU接收器?,android,nfc,Android,Nfc,我像这样过滤意图 <intent-filter> <action android:name="android.nfc.action.NDEF_DISCOVERED"/> <category android:name="android.intent.category.DEFAULT"/> <data android:mimeType="text/plain" /> 现在的问题是,当我在手机附近发现Ndef标记时,我在应用程序中实现的事件

我像这样过滤意图

<intent-filter>    
<action android:name="android.nfc.action.NDEF_DISCOVERED"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain" />

现在的问题是,当我在手机附近发现Ndef标记时,我在应用程序中实现的事件正在运行(甚至我的应用程序处于关闭状态)。
如何停止此操作?

使用Foreground Dispatch系统

例如:


使用前台调度系统

例如:


最好的解决方案可能是使用NFC前台调度。但是关闭清单文件中的意图过滤器可以通过在清单中使用。通过将意图过滤器放置在
元素中而不是
元素本身,您可以在应用程序中随意禁用和启用它

因此,假设您的舱单中有:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="your.app.package">
  ...
  <activity-alias android:name=".yourActivityAlias"
      android:enabled="true" android:targetActivity=".yourActivity">
    <intent-filter>
      <action android:name="android.nfc.action.NDEF_DISCOVERED" />
      <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
  </activity-alias>
  ....
</manifest>

请注意,新设置只对重新启动应用程序起作用(因此,您可能需要考虑0而不是PasaGeMaNeG.DONTKKILYLAPP)。此外,packagemanager通常需要一段时间才能使新设置生效(可能取决于设备的处理速度)。

最好的解决方案可能是使用NFC前台调度。但是关闭清单文件中的意图过滤器可以通过在清单中使用。通过将意图过滤器放置在
元素中而不是
元素本身,您可以在应用程序中随意禁用和启用它

因此,假设您的舱单中有:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="your.app.package">
  ...
  <activity-alias android:name=".yourActivityAlias"
      android:enabled="true" android:targetActivity=".yourActivity">
    <intent-filter>
      <action android:name="android.nfc.action.NDEF_DISCOVERED" />
      <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>
  </activity-alias>
  ....
</manifest>

请注意,新设置只对重新启动应用程序起作用(因此,您可能需要考虑0而不是PasaGeMaNeG.DONTKKILYLAPP)。此外,packagemanager通常需要一段时间才能使新设置生效(可能取决于设备的处理速度)。

现在我只使用您的代码。。。我在应用程序退出选项中实现了这个。。。但这段代码并没有停止应用程序进程。。。我想停止应用程序……我也使用了它,但应用程序没有停止PackageManager pkgMgr=getPackageManager();ComponentName comp=新组件名(“com.usa.sis”、“com.usa.sis.NFCActivity”);pkgMgr.setComponentEnabledSetting(组件、PackageManager.COMPONENT已启用、状态已禁用,0);完成();android.os.Process.killProcess(android.os.Process.myPid());系统出口(0);这是我的代码…现在我只使用你的代码。。。我在应用程序退出选项中实现了这个。。。但这段代码并没有停止应用程序进程。。。我想停止应用程序……我也使用了它,但应用程序没有停止PackageManager pkgMgr=getPackageManager();ComponentName comp=新组件名(“com.usa.sis”、“com.usa.sis.NFCActivity”);pkgMgr.setComponentEnabledSetting(组件、PackageManager.COMPONENT已启用、状态已禁用,0);完成();android.os.Process.killProcess(android.os.Process.myPid());系统出口(0);这是我的代码。。。。