2017-09-13 3 views
0

Je travaille sur une application Android (NFC) où j'ai 3 classes d'activitéChoisissez une activité par défaut sur NFC détecter

  1. Activité Splash (début App d'ici)
  2. Activité d'authentification (App attente ici pour l'authentification NFC)
  3. d'activité principale (reste du travail d'application ici)

Dans toutes les activités j'activer NFC.

  1. Si l'application ne au premier plan, sur l'onglet démarrage de l'application NFC de l'activité Splash, vérifier l'autorisation, si le succès sauter Authentication activity et aller à l'activité principale.

  2. Si elle n'est pas autorisée, l'application passe à Authentication activity et attend le balayage NFC.

  3. Dans Activité principale, j'utilise NFC pour enregistrer certaines données.

Ainsi, dans toute l'activité que je dois enregistrer

<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" /> 

Mais lors de l'exécution de l'application, (lorsque l'application ne premier plan en cours d'exécution) Téléphone montrant Choose an action dialogue pour choisir une activité (où tous les choix sont app nom seulement)

Me conseiller de résoudre ce problème.

Mon AndroidManifest se présenter comme suit

<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> 

Répondre

0

Une solution qui pourrait fonctionner serait de mettre explicitement un dossier NDEF avec un AAR (Android dossier de demande) sur l'étiquette, de sorte que tapotant l'étiquette lorsque l'application est pas au premier plan commence l'application. Pour toute autre solution, je suppose que vous devez affiner le manifeste.

+0

La solution AAR est applicable lorsque j'ai plusieurs applications NFC installées dans mon téléphone et lorsque je balaye NFC une seule application à ouvrir (sans afficher la boîte de dialogue «Choisir une action»). J'ai compris à travers ce [https://gototags.com/nfc/ndef/android-application/] un article sur AAR. Corrige moi si je me trompe. Dans mon cas, mon application montre les trois activités dans mon application à choisir. – RDD