为了避免一些平板电脑/手机连接,我希望我的应用程序通过活动别名向自己发出一个意图,并使清单系统将其传递给主要活动(对于平板电脑)或新活动(对于手机)。
如果我的清单中有这个:
<activity-alias android:name="my.app.WebContent"
android:targetActivity="my.app.activities.Home"/>
那么一切都很好,并且
Intent {
act=android.intent.action.VIEW dat=http://www.app.my/url
cmp=my.app/.WebContent (has extras) }
按预期交付。
但是,如果我的清单中有这个:
<activity-alias android:name="my.app.WebContent"
android:enabled="@bool/has_one_pane"
android:targetActivity="my.app.activities.WebContent"/>
<activity-alias android:name="my.app.WebContent"
android:enabled="@bool/has_two_panes"
android:targetActivity="my.app.activities.Home"/>
在 values/res.xml 中有这个
<resources>
<bool name="has_two_panes">false</bool>
<bool name="has_one_pane">true</bool>
</resources>
这在 values-large/res.xml 和 values-sw600dp/res.xml 中:
<resources>
<item type="layout" name="content_frame">@layout/activity_item_twopane</item>
<bool name="has_two_panes">true</bool>
<bool name="has_one_pane">false</bool>
</resources>
然后我的代码根据 PackageManager.resolveActivity() 将意图过滤为“无法交付”。
似乎 values/res.xml 覆盖了 values-anything/res.xml,即使 values-large 应该覆盖大型显示器的 values/res.xml。
这是Android中的错误,还是我误解了应该如何做?