<activity android:name=".ui.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts"/>
</activity>
<activity android:name=".ui.SearchActivity">
</activity>
将MainActivity
启动页面,并且设置shortcuts
,如果用户添加shortcuts
到桌面,那么会是这样。有一个search
的shortcut
如果此时更换启动页面为SearchActivity
,那么之前用户创建在首页的shourcut
将会消失。
<activity android:name=".ui.MainActivity">
</activity>
<activity android:name=".ui.SearchActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts"/>
</activity>
上面的代码把启动页面改成了SearchActivity
,并设置shortcut
,可以看到,更换启动页面后,首页之前添加的shortcut
已经销毁了。
我们可以通过activity-alias
避免这个问题
<activity android:name=".ui.MainActivity">
</activity>
<activity android:name=".ui.SearchActivity">
</activity>
<!--
为了避免以后更换launch actvitiy,导致shortcuts消失,
使用activity-alias 定义launch actvitiy,注意必须定义在targetActivity
之后
-->
<activity-alias
android:name=".Launcher"
android:label="@string/app_name"
android:targetActivity=".ui.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<meta-data
android:name="android.app.shortcuts"
android:resource="@xml/shortcuts"/>
</activity-alias>
这样无论android:targetActivity=".ui.SearchActivity"
还是其他,首页的shortcut
都不会销毁。