选择NFC检测的默认活动

时间:2017-09-13 08:30:46

标签: android android-activity android-manifest nfc

我正在开发一款Android应用程序(支持NFC),其中我有3个活动类

  1. Splash Activity(App从这里开始)
  2. 身份验证活动(App等待NFC身份验证)
  3. 主要活动(此处其他应用程序工作)
  4. 在所有活动中,我需要启用NFC。

    1. 如果app不在前台,在选项卡NFC应用程序中启动Splash活动,请检查授权,如果成功跳过Authentication activity并转到主要活动。

    2. 如果未获得授权,则应用会转到Authentication activity并等待NFC滑动。

    3. 在主要活动中,我使用NFC记录一些数据。

    4. 所以在我必须注册的所有活动中

      <intent-filter>
        <action android:name="android.nfc.action.TECH_DISCOVERED" />
      </intent-filter>
      <meta-data
        android:name="android.nfc.action.TECH_DISCOVERED"
        android:resource="@xml/nfc_tech_filter" />
      

      但是在运行应用程序时,(当应用程序未运行前台时)电话显示Choose an action对话框以选择活动(其中所有选项仅为应用程序名称)

      建议我解决这个问题。

      我的AndroidManifest如下所示

      <application
          android:name=".util.Common"
          android:allowBackup="true"
          android:icon="@mipmap/ic_launcher"
          android:label="@string/app_name"
          android:roundIcon="@mipmap/ic_launcher_round"
          android:supportsRtl="true"
          android:theme="@style/AppTheme">
          <activity android:name=".activity.MainActivity">
              <intent-filter>
                  <action android:name="android.nfc.action.TECH_DISCOVERED" />
              </intent-filter>
              <meta-data
                  android:name="android.nfc.action.TECH_DISCOVERED"
                  android:resource="@xml/nfc_tech_filter" />
          </activity>
          <activity
              android:name=".activity.SplashScreenActivity"
              android:configChanges="orientation|keyboardHidden|screenSize"
              android:theme="@style/FullscreenTheme">
              <intent-filter>
                  <action android:name="android.intent.action.MAIN" />
                  <category android:name="android.intent.category.LAUNCHER" />
              </intent-filter>
      
              <!-- NFC Tech 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/nfc_tech_filter" />
          </activity>
          <activity
              android:name=".activity.AuthActivity"
              android:label="@string/title_activity_auth"
              android:theme="@style/AppTheme.NoActionBar">
              <intent-filter>
                  <action android:name="android.nfc.action.TECH_DISCOVERED" />
              </intent-filter>
              <meta-data
                  android:name="android.nfc.action.TECH_DISCOVERED"
                  android:resource="@xml/nfc_tech_filter" />
          </activity>
      </application>
      

1 个答案:

答案 0 :(得分:0)

一个可行的解决方案是在标签上明确地放置带有AAR(Android应用程序记录)的NDEF记录,以便在应用程序不在前台时点击标记启动应用程序。 对于任何其他解决方案,我假设您需要微调清单。