Android学习:设置 Scheme 导致 App 图标隐藏
公司做的 Android App 需要支持浏览器通过 URL 来启动,很草率的设置了以下的代码:
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> <!-- add start --> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="vrainer" android:host="password_reset"/> <!-- add end --> </intent-filter>
结果偶然发现,安装以后桌面上找不到图标了,但是手机上确确实实安装了这个应用。后来百度查询资料,需要将不用的 intent filter
分开设置,改成下面的代码就 OK。
<intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.VIEW"/> <category android:name="android.intent.category.BROWSABLE"/> <data android:scheme="vrainer" android:host="password_reset"/> </intent-filter>
大概的原因是这样的,因为intent-filter
表示activity
接受怎样的intent
,定义在一个intent-filter
中的条件必须都满足才能按照该intent-filter
启动,否则按照其他intent-filter启动。而以上明显是两类启动方式,所以必须分开。通过这个介绍可以知道其他的action、category、data
冲突也有可能导致这个问题。
但是这样为什么会影响图标,暂时不得而知,后续调查会进行补充。
版权声明
本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。 本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。