程序员Android开发今日看点

你的android应用图标怎么不见了?

2016-07-14  本文已影响2161人  暮云清风

我去,今天写个检测NFC的小demo,高高兴兴写完,然后贴上一卡通测试,我ri,选择应用的时候怎么没有我的应用?小米钱包有,百度地图有,武汉通行有,就没我的demo。不行,打日志,日志正常;断点调试,断点调试正常。什么鬼!!! 突然发现手机桌面居然没有我的应用启动图标!!查看应用列表,应用在啊!!
第一反应:肯定是icon图标没设置,或者没读出来,回到AndroidManifest.xml查看,一切正常。

第二反应:我难道没有设置启动页面?再次检查AndroidManifest.xml文件,尼玛启动页面是建工程时系统自动生成的好不好!

我开始方了!!!口-口 !!

到底是什么地方出问题了?Java代码我敢肯定正确,这里也不设置对启动图标的设置更改,所以不应该是Java代码的问题。那最有可能的还是AndroidManifest文件的问题了。纵观整个文件,权限设置不可能出现问题。那么剩下的就是action 和 category 的问题了。因为NFC涉及隐式意图启动,所以需要配置action 来保证当检测到NFC的时候能够正常启动你的应用页面。
想着和在一起不行,那我就分开试试:
原本写法:

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

现在改成;

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

原因为intent-filter表示activity接受怎样的intent,定义在一个intent-filter中的条件必须都满足才能按照该intent-filter启动,否则按照其他intent-filter启动。而以上明显是两类启动方式,所以必须分开。通过这个介绍可以知道其他的action、category、data冲突也有可能导致这个问题

上一篇下一篇

猜你喜欢

热点阅读