2016-12-19 8 views
2

Я разрабатываю приложение, которое также можно использовать как Launcher. Мы используем в основном планшет Samsung, который недавно получил обновление до Android 5.1.1, которое, похоже, изменило поведение нашего приложения при использовании в качестве запуска.Android NFC Intent не работает, когда приложение запускается как пусковая установка

Проблема в том, что Android, по-видимому, использует стандартную деятельность по умолчанию по умолчанию com.android.nfc/.NfcRootActivity вместо нашего приложения. Он работает нормально, когда приложение запускается регулярно. Это было использовано для работы до того, как Samsung развернула обновление.

Здесь вырезано.

При запуске в качестве пусковой установки (NFC НЕ РАБОТАЕТ)

Line 474: E/NxpNfcJni(1457): setReconnectState = 0x0 
Line 476: D/NativeNfcTag(1457): Starting background presence check 
Line 478: D/NfcDispatcher(1457): tryStartActivity. Send intent. 
Line 480: D/PackageManager(1014): Resolving for NFC Intent { flg=0x10008000 cmp=com.android.nfc/.NfcRootActivity (has extras) } flag 66688 user 0 
Line 480: D/PackageManager(1014): Resolving for NFC Intent { flg=0x10008000 cmp=com.android.nfc/.NfcRootActivity (has extras) } flag 66688 user 0 
Line 480: D/PackageManager(1014): Resolving for NFC Intent { flg=0x10008000 cmp=com.android.nfc/.NfcRootActivity (has extras) } flag 66688 user 0 
Line 482: W/ResourcesManager(1014): Asset path '/system/framework/com.broadcom.nfc.jar' does not exist or contains no resources. 
Line 492: V/WindowManager(1014): addAppToken: AppWindowToken{11f6a866 token=Token{513b8c1 ActivityRecord{951b5a8 u0 com.android.nfc/.NfcRootActivity t24}}} to stack=1 task=24 at 0 
Line 492: V/WindowManager(1014): addAppToken: AppWindowToken{11f6a866 token=Token{513b8c1 ActivityRecord{951b5a8 u0 com.android.nfc/.NfcRootActivity t24}}} to stack=1 task=24 at 0 
Line 498: D/NfcPlugin(1494): onPause Intent { } 
Line 502: D/NfcPlugin(1494): stopNfc 

И когда начался регулярным (РАБОТА)

Line 261: E/NxpNfcJni(1457): setReconnectState = 0x0 
Line 263: D/PersonaManager(1457): isNFCAllowed 
Line 269: D/NativeNfcTag(1457): Starting background presence check 
Line 273: W/ActivityManager(1014): startActivity called from non-Activity context; forcing Intent.FLAG_ACTIVITY_NEW_TASK for: Intent { act=android.nfc.action.TECH_DISCOVERED flg=0x24000000 cmp=com.bstmedia.xxx/yyy.KioskActivity (has extras) } 
Line 277: D/NfcPlugin(1494): onPause Intent { } 
Line 279: D/NfcPlugin(1494): stopNfc 

Вот что мы имеем в файле манифеста.

<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|uiMode" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize"> 
     <intent-filter android:label="@string/launcher_name"> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
     <intent-filter> 
      <action android:name="android.nfc.action.NDEF_DISCOVERED" /> 
      <data android:mimeType="text/xxx" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter>    
    </activity> 

    <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|uiMode" android:keepScreenOn="true" android:label="My App Name" android:launchMode="singleInstance" android:name="yyy.KioskActivity" android:windowSoftInputMode="adjustResize"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <category android:name="android.intent.category.HOME" /> 
     </intent-filter> 
    </activity> 

ответ

0

Похоже, что режим отправки переднего плана не запускался, когда устройство перезагружается, и приложение открывается как пусковая установка. Мы не нашли способ изменить это поведение.

Однако быстрое решение заключалось в том, чтобы нажать кнопку «недавнего приложения», которая активировала режим наземной отправки для NFC, как только приложение вернется на передний план.

Мы добавляем код от https://stackoverflow.com/a/32453115/2616377, чтобы это происходило автоматически при каждой перезагрузке.

Я понимаю, что это не будет работать с каждым устройством или версией Android. Но мы рады идти в этом направлении, так как проблема связана с этим конкретным обновлением Samsung.

 Смежные вопросы

  • Нет связанных вопросов^_^