我知道你可以簡單地通過創建一個意圖和開始和活動來模擬NFC標籤。根據我的理解和測試,只有在您的清單中添加意圖過濾器時纔有效。如何測試/模擬NFC前景調度?
我想模擬標籤,並通過前景調度只有它們分派到一個活動/片段,所以開始與意向過濾器的活動清單並不是我的選擇。
我的程序的結構如下所示:活動 - >幾個碎片,其中一個通過前臺調度對NFC標籤感興趣。 nfc-fragment具有pendingIntent和dispatch-enabled和-disabling的必需代碼。 該活動實現了onNewIntent()方法,該方法通過nfc片段中的方法調用進一步處理意圖(如果nfc片段處於活動狀態)。
該程序工作正常,但我需要測試與自動化測試的行爲。
我使用
final Intent intent = new Intent(NfcAdapter.ACTION_TAG_DISCOVERED);
intent.putExtra(NfcAdapter.EXTRA_ID, "1234567890".getBytes());
solo.getCurrentActivity().startActivity(intent);
已經嘗試過,但是這只是給了我一個ActivityNotFoundException。目前,我檢索NFC的片段,並呼籲從測試中手工處理這個意圖的方法,但是這給了我
android.view.ViewRootImpl $ CalledFromWrongThreadException:只有創建視圖層次原來的線程可以觸摸其觀點。
因爲該方法涉及更新視圖和whatnot。它工作某種程度上,因爲我只需要切換到不同的活動或片段,然後回去獲取視圖更新,但我想知道是否有更好和更乾淨的方式來做到這一點。
我感謝您的幫助,請告訴我您是否需要更多信息。