タブレット/電話の配線を避けるために、アクティビティ エイリアスを介してアプリ自体にインテントを発行し、マニフェスト システムがそれをメイン アクティビティ (タブレットの場合) または新しいアクティビティ (電話の場合) に配信するようにします。
マニフェストにこれがある場合:
<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-large が values/res.xml をオーバーライドすることになっているにもかかわらず、values/res.xml が values-anything/res.xml をオーバーライドしているようです。
これは Android のバグですか、またはこれを行う方法を誤解していますか?