我去这刷,今天寫個(gè)檢測NFC的小demo,高高興興寫完洼冻,然后貼上一卡通測試崭歧,我ri,選擇應(yīng)用的時(shí)候怎么沒有我的應(yīng)用撞牢?小米錢包有率碾,百度地圖有,武漢通行有屋彪,就沒我的demo所宰。不行,打日志畜挥,日志正常仔粥;斷點(diǎn)調(diào)試,斷點(diǎn)調(diào)試正常蟹但。什么鬼G!华糖! 突然發(fā)現(xiàn)手機(jī)桌面居然沒有我的應(yīng)用啟動(dòng)圖標(biāo)B笙颉!查看應(yīng)用列表客叉,應(yīng)用在八薪摺!兼搏!
第一反應(yīng):肯定是icon圖標(biāo)沒設(shè)置卵慰,或者沒讀出來,回到AndroidManifest.xml查看佛呻,一切正常裳朋。
第二反應(yīng):我難道沒有設(shè)置啟動(dòng)頁面?再次檢查AndroidManifest.xml文件吓著,尼瑪啟動(dòng)頁面是建工程時(shí)系統(tǒng)自動(dòng)生成的好不好再扭!
我開始方了Q醪浴!泛范!口-口 H门啊!
到底是什么地方出問題了罢荡?Java代碼我敢肯定正確赡突,這里也不設(shè)置對啟動(dòng)圖標(biāo)的設(shè)置更改,所以不應(yīng)該是Java代碼的問題区赵。那最有可能的還是AndroidManifest文件的問題了惭缰。縱觀整個(gè)文件笼才,權(quán)限設(shè)置不可能出現(xiàn)問題漱受。那么剩下的就是action 和 category 的問題了。因?yàn)镹FC涉及隱式意圖啟動(dòng)骡送,所以需要配置action 來保證當(dāng)檢測到NFC的時(shí)候能夠正常啟動(dòng)你的應(yīng)用頁面昂羡。
想著和在一起不行,那我就分開試試:
原本寫法:
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.nfc.action.NDEF_DISCOVERED" />
<action android:name="android.nfc.action.TECH_DISCOVERED" />
<action android:name="android.nfc.action.TAB_DISCOVERED" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
現(xiàn)在改成;
<activity android:name=".MainActivity">
<intent-filter>
<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" />
<!--<action android:name="android.nfc.action.TECH_DISCOVERED" />-->
<!--<action android:name="android.nfc.action.TAB_DISCOVERED" />-->
<category android:name="android.intent.category.DEFAULT" />
<!--<data android:mimeType="text/plain" />-->
</intent-filter>
</activity>
原因?yàn)閕ntent-filter表示activity接受怎樣的intent,定義在一個(gè)intent-filter中的條件必須都滿足才能按照該intent-filter啟動(dòng),否則按照其他intent-filter啟動(dòng)粹断。而以上明顯是兩類啟動(dòng)方式,所以必須分開蛹批。通過這個(gè)介紹可以知道其他的action、category篮愉、data沖突也有可能導(dǎo)致這個(gè)問題