1

アプリケーションにはいくつかのアクティビティがあり、一部は上位バージョンでのみ実行されます。しかし、 の活動がサポートmimeTypeされて以来、intent-filter私はその起動を制御できません。

        <intent-filter>
            <action android:name="android.intent.action.VIEW" />

            <category android:name="android.intent.category.DEFAULT" />

            <data android:mimeType="image/*" />
        </intent-filter>

これを持つアクティビティのように、intent-filterバージョンを下げて起動することができます。例: アクティビティはバージョン 11 以降で実行する必要がありますが、Android はそれより低いバージョンの画像の選択ダイアログ内に表示します。この状況を回避する方法はありますか?

4

2 に答える 2

2

で「コントローラー」アクティビティが必要intent-filterです。

このアクティビティが開始されると、現在の SDK レベルを確認し、インテントを下位または上位の SDK アクティビティに転送してから、それfinish()自体に転送します。

あなたの状況では、これにより後でさらに柔軟性が得られます。たとえば、タブレットを 3 番目のアクティビティに向けたいとします。


もう 1 つの引数は、Activity で SDK レベルをテストしてFragmentsから、これに応じてスワップアウトする必要があるということです。つまり、アクティビティは SDK に依存しませんが、正しいフラグメントを表示するためのコントローラーです。

参考文献:

http://developer.android.com/training/basics/supporting-devices/platforms.html http://developer.android.com/training/basics/supporting-devices/platforms.html#version-codes

http://developer.android.com/training/backward-compatible-ui/abstracting.html

http://developer.android.com/training/backward-compatible-ui/using-component.html

参照からわかるように、トレーニング ドキュメントを読む必要があります。

于 2013-07-28T10:52:42.437 に答える
2

XML 構成のみを探している場合は、Android API Demos での方法を提案できます。

ActivityAndroidManifest で、このような API バージョンに応じて無効または有効として宣言しますandroid:enabled="@bool/atLeastHoneycomb"。ここで、は true に設定され、デフォルト フォルダーで false に@bool/atLeastHoneycomb設定される単なるフラグです(詳細については、前に述べたように、Android API Demos を確認できます)。 )。values-v11values

于 2013-07-28T11:02:28.440 に答える